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