Python Pandas Tutorial: DataFrame, Date Range, Use Pandas

Co je Pandas Python?

Pandy je open-source knihovna, kterรก vรกm umoลพลˆuje provรกdฤ›t manipulaci s daty a analรฝzu v Python. pandy Python knihovna nabรญzรญ manipulaci s daty a datovรฉ operace pro ฤรญselnรฉ tabulky a ฤasovรฉ ล™ady. Pandy poskytujรญ snadnรฝ zpลฏsob, jak vytvรกล™et, manipulovat a lรกmat si data. Je postaven na vrcholu NumPy, coลพ znamenรก, ลพe k provozu potล™ebuje NumPy.

Proฤ pouลพรญvat Pandy?

Datovรญ vฤ›dci vyuลพรญvajรญ Pandy v Python pro jeho nรกsledujรญcรญ vรฝhody:

  • Snadno si poradรญ s chybฤ›jรญcรญmi daty
  • Pouลพรญvรก to ล˜ada pro jednorozmฤ›rnou datovou strukturu a DataFrame pro vรญcerozmฤ›rnou datovou strukturu
  • Poskytuje efektivnรญ zpลฏsob dฤ›lenรญ dat
  • Poskytuje flexibilnรญ zpลฏsob, jak slouฤit, zล™etฤ›zit nebo pล™etvoล™it data
  • Obsahuje vรฝkonnรฝ nรกstroj pro prรกci s ฤasovรฝmi ล™adami

Struฤnฤ› ล™eฤeno, Pandy jsou uลพiteฤnou knihovnou analรฝza dat. Lze jej pouลพรญt k manipulaci a analรฝze dat. Pandy poskytujรญ vรฝkonnรฉ a snadno pouลพitelnรฉ datovรฉ struktury a takรฉ prostล™edky pro rychlรฉ provรกdฤ›nรญ operacรญ na tฤ›chto strukturรกch.

Jak nainstalovat Pandy?

Nynรญ v tomto Python Tutoriรกl Pandy, nauฤรญme se, jak nainstalovat Pandy Python.

Chcete-li nainstalovat knihovnu Pandas, podรญvejte se na nรกลก tutoriรกl Jak nainstalovat TensorFlow. Ve vรฝchozรญm nastavenรญ jsou nainstalovรกny Pandy. Ve vzdรกlenรฉm pล™รญpadฤ›, pandy nejsou nainstalovรกny-

Pandy mลฏลพete nainstalovat pomocรญ:

  • Anaconda: conda install -c anaconda pandas
  • In Jupyter notebook:
import sys
!conda install --yes --prefix {sys.prefix} pandas

Co je Pandas DataFrame?

Pandas DataFrame je dvourozmฤ›rnรฉ pole s oznaฤenou datovou strukturou s rลฏznรฝmi typy sloupcลฏ. DataFrame je standardnรญ zpลฏsob uklรกdรกnรญ dat v tabulkovรฉm formรกtu s ล™รกdky pro uloลพenรญ informacรญ a sloupci pro pojmenovรกnรญ informacรญ. Napล™รญklad cena mลฏลพe bรฝt nรกzev sloupce a 2,3,4 mohou bรฝt hodnoty ceny.

Datovรฝ rรกmec dobล™e znajรญ statistikovรฉ a dalลกรญ odbornรญci na data.

Nรญลพe je obrรกzek datovรฉho rรกmce Pandas:

Pandas DataFrame

Co je sรฉrie?

ล˜ada je jednorozmฤ›rnรก datovรก struktura. Mลฏลพe mรญt libovolnou datovou strukturu, jako je celรฉ ฤรญslo, float a ล™etฤ›zec. Je to uลพiteฤnรฉ, kdyลพ chcete provรฉst vรฝpoฤet nebo vrรกtit jednorozmฤ›rnรฉ pole. ล˜ada podle definice nemลฏลพe mรญt vรญce sloupcลฏ. V druhรฉm pล™รญpadฤ› pouลพijte strukturu datovรฉho rรกmce.

Python ล˜ada Pandas mรก nรกsledujรญcรญ parametry:

  • Data: mลฏลพe to bรฝt seznam, slovnรญk nebo skalรกrnรญ hodnota
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Index mลฏลพete pล™idat pomocรญ indexu. Pomรกhรก pojmenovat ล™รกdky. Dรฉlka by se mฤ›la rovnat velikosti sloupce

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Nรญลพe vytvoล™รญte sรฉrii Pandas s chybฤ›jรญcรญ hodnotou pro tล™etรญ ล™รกdky. Poznรกmka, chybฤ›jรญcรญ hodnoty v Python jsou oznaฤeny โ€žNaNโ€œ. Mลฏลพete pouลพรญt numpy k vytvoล™enรญ chybฤ›jรญcรญ hodnoty: np.nan umฤ›le

pd.Series([1,2,np.nan])

Vรฝstup

0    1.0
1    2.0
2    NaN
dtype: float64

Vytvoล™te Pandas DataFrame

Nynรญ v tomto tutoriรกlu Pandas DataFrame se nauฤรญme, jak vytvoล™it Python Datovรฝ rรกmec Pandy:

Numpy pole mลฏลพete pล™evรฉst na datovรฝ rรกmec pandas pomocรญ pd.Data frame(). Je moลพnรฝ i opak. Chcete-li pล™evรฉst datovรฝ rรกmec pandy na pole, mลฏลพete pouลพรญt np.array()

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

K vytvoล™enรญ datovรฉho rรกmce Pandas mลฏลพete takรฉ pouลพรญt slovnรญk.

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
vฤ›k Jmรฉno
0 30 Jan
1 40 kovรกล™

รšdaje o dosahu pand

Pandy majรญ pohodlnรฉ API pro vytvoล™enรญ rozsahu dat. Uฤme se s Python Pล™รญklady pand:

pd.data_range(datum,obdobรญ,frekvence):

  • Prvnรญm parametrem je poฤรกteฤnรญ datum
  • Druhรฝ parametr je poฤet obdobรญ (volitelnรฉ, pokud je zadรกno datum ukonฤenรญ)
  • Poslednรญm parametrem je frekvence: den: 'D', mฤ›sรญc: 'M' a rok: 'Y.'
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

Vรฝstup

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

Vรฝstup

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Kontrola dat

Hlavu nebo konec datovรฉ sady mลฏลพete zkontrolovat pomocรญ head() nebo tail(), pล™ed kterรฝm je uveden nรกzev datovรฉho rรกmce pandy, jak je znรกzornฤ›no v nรญลพe uvedenรฉm pล™รญkladu Pandy:

Krok 1) Vytvoล™te nรกhodnou sekvenci pomocรญ otupฤ›lรฝ. Sekvence mรก 4 sloupce a 6 ล™รกdkลฏ

random = np.random.randn(6,4)

Krok 2) Potรฉ vytvoล™รญte datovรฝ rรกmec pomocรญ pand.

Pouลพijte date_m jako index pro datovรฝ rรกmec. To znamenรก, ลพe kaลพdรฝ ล™รกdek bude mรญt โ€žjmรฉnoโ€œ nebo index odpovรญdajรญcรญ datu.

Nakonec pojmenujete 4 sloupce se sloupci argumentลฏ

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Krok 3) Pouลพitรญ funkce hlavy

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

Krok 4) Pouลพitรญ funkce ocasu

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

Krok 5) Skvฤ›lรฝm postupem, jak zรญskat ponฤ›tรญ o datech, je pouลพรญt description(). Poskytuje poฤty, prลฏmฤ›r, standardnรญ, minimรกlnรญ, maximรกlnรญ a percentil datovรฉ sady.

df.describe()
A B C D
poฤรญtat 6.000000 6.000000 6.000000 6.000000
stล™ednรญ 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
min -0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
max 1.139433 1.318510 0.857751 1.615822

Slice Data

Poslednรญ bod tohoto Python Vรฝukovรฝ program Pandas je o tom, jak rozdฤ›lit datovรฝ rรกmec pandy.

Nรกzev sloupce mลฏลพete pouลพรญt k extrahovรกnรญ dat v konkrรฉtnรญm sloupci, jak je znรกzornฤ›no v nรญลพe uvedenรฉm pล™รญkladu Pandy:

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Chcete-li vybrat vรญce sloupcลฏ, musรญte pouลพรญt dvojnรกsobek hranatรฉ zรกvorky, [[..,..]]

Prvnรญ pรกr zรกvorek znamenรก, ลพe chcete vybrat sloupce, druhรฝ pรกr zรกvorek ล™รญkรก, kterรฉ sloupce chcete vrรกtit.

df[['A', 'B']].
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

ล˜รกdky mลฏลพete krรกjet pomocรญ:

Nรญลพe uvedenรฝ kรณd vrรกtรญ prvnรญ tล™i ล™รกdky

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

Funkce loc se pouลพรญvรก k vรฝbฤ›ru sloupcลฏ podle nรกzvลฏ. Jako obvykle platรญ, ลพe hodnoty pล™ed ฤรกrkou znamenajรญ ล™รกdky a za nรญ se vztahujรญ ke sloupci. Chcete-li vybrat vรญce neลพ jeden sloupec, musรญte pouลพรญt zรกvorky.

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Existuje dalลกรญ zpลฏsob, jak vybrat vรญce ล™รกdkลฏ a sloupcลฏ v Pandas. Mลฏลพete pouลพรญt iloc[]. Tato metoda pouลพรญvรก index namรญsto nรกzvu sloupce. Nรญลพe uvedenรฝ kรณd vracรญ stejnรฝ datovรฝ rรกmec jako vรฝลกe

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Pusลฅte sloupec

Sloupce mลฏลพete zruลกit pomocรญ pd.drop()

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

Zล™etฤ›zenรญ

V Pandas mลฏลพete zล™etฤ›zit dva DataFrame. Mลฏลพete pouลพรญt pd.concat()

Nejprve je potล™eba vytvoล™it dva DataFrames. Zatรญm je to dobrรฉ, uลพ jste obeznรกmeni s tvorbou datovรฝch rรกmcลฏ

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Nakonec zล™etฤ›zรญte dva DataFrame

df_concat = pd.concat([df1,df2]) 
df_concat
vฤ›k nรกzev
0 25 Jan
1 30 kovรกล™
2 50 Paul
3 26 Adam
4 11 kovรกล™

Drop_duplicates

Pokud datovรก sada mลฏลพe obsahovat duplicitnรญ informace, lze duplicitnรญ ล™รกdky snadno vylouฤit pomocรญ pล™รญkazu `drop_duplicates`. Mลฏลพete vidฤ›t, ลพe `df_concat` mรก duplicitnรญ pozorovรกnรญ, `Smith` se ve sloupci `jmรฉno` objevรญ dvakrรกt.

df_concat.drop_duplicates('name')
vฤ›k nรกzev
0 25 Jan
1 30 kovรกล™
2 50 Paul
3 26 Adam

Seล™adit hodnoty

Hodnotu mลฏลพete tล™รญdit pomocรญ sort_values

df_concat.sort_values('Age')
vฤ›k nรกzev
4 11 kovรกล™
0 25 Jan
3 26 Adam
1 30 kovรกล™
2 50 Paul

Pล™ejmenovat: zmฤ›na indexu

Pล™ejmenovat mลฏลพete k pล™ejmenovรกnรญ sloupce v Pandas. Prvnรญ hodnota je nรกzev aktuรกlnรญho sloupce a druhรก hodnota je nรกzev novรฉho sloupce.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl Pล™รญjmenรญ
0 25 Jan
1 30 kovรกล™
2 50 Paul
3 26 Adam
4 11 kovรกล™

Shrnutรญ

Nรญลพe je uveden souhrn nejuลพiteฤnฤ›jลกรญch metod pro datovou vฤ›du s Pandas

importovat data read_csv
vytvoล™it sรฉrii Sรฉrie
Vytvoล™it datovรฝ rรกmec DataFrame
Vytvoล™te ฤasovรฉ obdobรญ ฤasovรฉ obdobรญ
vrรกtit hlavu hlava
zpฤ›tnรฝ ocas ocas
Popsat popsat
ล™ez pomocรญ nรกzvu dataname['columnname']
Nakrรกjejte pomocรญ ล™รกdkลฏ data_name[0:5]

Shrลˆte tento pล™รญspฤ›vek takto: