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:
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] |

