Python Pandák bemutatója: DataFrame, dátumtartomány, Pandák használata
Mi az a Panda Python?
pandák egy nyílt forráskódú könyvtár, amely lehetővé teszi az adatok kezelését és elemzését Python. Pandák Python A könyvtár adatkezelést és adatműveleteket kínál numerikus táblákhoz és idősorokhoz. A pandák egyszerű módot kínálnak az adatok létrehozására, manipulálására és vitatására. A NumPy tetejére épül, ami azt jelenti, hogy működéséhez NumPy-re van szüksége.
Miért érdemes Pandát használni?
Az adattudósok a pandákat használják Python a következő előnyei miatt:
- Könnyen kezeli a hiányzó adatokat
- Használja Sorozat egydimenziós adatszerkezethez és a DataFrame többdimenziós adatszerkezethez
- Hatékony módot biztosít az adatok szeletelésére
- Rugalmas módot biztosít az adatok egyesítésére, összefűzésére vagy átformálására
- Tartalmaz egy hatékony idősor-eszközt, amellyel dolgozni lehet
Dióhéjban a Pandas hasznos könyvtár adatelemzés. Használható adatok manipulálására és elemzésére. A pandák hatékony és könnyen használható adatstruktúrákat biztosítanak, valamint a műveletek gyors végrehajtását ezeken a struktúrákon.
Hogyan telepítsük a pandákat?
Most ebben Python Pandas oktatóanyag, megtanuljuk, hogyan kell telepíteni a Pandákat Python.
A Pandas könyvtár telepítéséhez tekintse meg oktatóanyagunkat A TensorFlow telepítése. A Pandas alapértelmezés szerint telepítve van. Távoli esetben a pandák nincsenek telepítve-
A Pandákat a következő módon telepítheti:
- Anaconda: conda install -c anaconda pandas
- In Jupyter Jegyzetfüzet:
import sys !conda install --yes --prefix {sys.prefix} pandas
Mi az a Pandas DataFrame?
Pandas DataFrame egy kétdimenziós tömb címkézett adatszerkezettel, különböző oszloptípusokkal. A DataFrame az adatok táblázatos formátumú tárolásának szabványos módja, amely sorokban tárolja az információkat és oszlopokat az információk elnevezésére. Például az ár lehet egy oszlop neve, a 2,3,4 pedig az árértékek.
A Data Frame-et jól ismerik a statisztikusok és más adatkezelők.
Lent egy Pandas adatkeret képe:
Mi az a sorozat?
A sorozat egy egydimenziós adatstruktúra. Bármilyen adatszerkezettel rendelkezhet, például egész, float és karakterlánc. Akkor hasznos, ha számítást szeretne végezni, vagy egydimenziós tömböt szeretne visszaadni. Egy sorozatnak értelemszerűen nem lehet több oszlopa. Ez utóbbi esetben kérjük, használja az adatkeret-struktúrát.
Python A Pandas sorozat a következő paraméterekkel rendelkezik:
- Adatok: lehet lista, szótár vagy skaláris érték
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Az indexet indexszel is hozzáadhatja. Segít a sorok elnevezésében. A hossznak meg kell egyeznie az oszlop méretével
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Az alábbiakban egy Pandas sorozatot hoz létre, amelynek harmadik soraihoz hiányzik az érték. Megjegyzés: hiányoznak az értékek Python „NaN”-nek jelölik. Használhatja a numpy-t a hiányzó érték létrehozásához: np.nan mesterségesen
pd.Series([1,2,np.nan])
teljesítmény
0 1.0 1 2.0 2 NaN dtype: float64
Hozzon létre Pandas DataFrame-et
Ebben a Pandas DataFrame oktatóanyagban megtanuljuk, hogyan kell létrehozni Python Pandas adatkeret:
A numpy tömböt a pd.Data frame() segítségével pandas adatkeretté alakíthatja. Az ellenkezője is lehetséges. A pandas adatkeret tömbbé alakításához az 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]]
Pandas adatkeret létrehozásához szótárt is használhat.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
Kor | Név | |
---|---|---|
0 | 30 | János |
1 | 40 | Kovács |
Panda-tartomány adatai
A pandák kényelmes API-val rendelkeznek a dátumtartomány létrehozásához. Tanuljunk vele Python Példák a pandákra:
pd.data_range(dátum,időszak,gyakoriság):
- Az első paraméter a kezdő dátum
- A második paraméter az időszakok száma (nem kötelező, ha a befejezési dátum meg van adva)
- Az utolsó paraméter a gyakoriság: nap: 'D' hónap: 'M' és év: 'Y.'
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
teljesítmény
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)
teljesítmény
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')
Adatok vizsgálata
Ellenőrizheti az adatkészlet fejét vagy farkát a head() vagy a tail() paranccsal, amelyet a panda adatkeretének neve előz meg, ahogy az alábbi Panda példában látható:
Step 1) Hozzon létre egy véletlenszerű sorozatot a számtalan. A sorozat 4 oszlopból és 6 sorból áll
random = np.random.randn(6,4)
Step 2) Ezután létrehoz egy adatkeretet a pandák segítségével.
Használja a dates_m indexet az adatkerethez. Ez azt jelenti, hogy minden sor egy dátumnak megfelelő „nevet” vagy indexet kap.
Végül adjon nevet a 4 oszlopnak az argumentum oszlopokkal
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Step 3) A fej funkció használata
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 |
4. lépés) A farok funkció használata
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 |
5. lépés) Kiváló gyakorlat az adatok megismeréséhez a description() használata. Megadja az adatkészlet számlálását, átlagát, std-jét, min., maximumát és százalékát.
df.describe()
A | B | C | D | |
---|---|---|---|---|
számít | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
jelent | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
perc | -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 |
Szelet adatok
Ennek az utolsó pontja Python A Pandas oktatóanyag arról szól, hogyan lehet felszeletelni egy panda adatkeretet.
Használhatja az oszlop nevét egy adott oszlop adatainak kinyerésére, ahogy az alábbi Panda példában látható:
## 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
Több oszlop kiválasztásához a zárójelet kétszer kell használni, [[..,..]]
Az első zárójelpár azt jelenti, hogy oszlopokat szeretne kijelölni, a második zárójelpár pedig azt, hogy milyen oszlopokat szeretne visszaadni.
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 |
A sorokat a következőkkel vághatja fel:
Az alábbi kód az első három sort adja vissza
### 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 |
A loc funkció az oszlopok név szerinti kiválasztására szolgál. Szokás szerint a kóma előtti értékek a sorokat, az utána pedig az oszlopot jelentik. Egynél több oszlop kijelöléséhez használja a zárójeleket.
## 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 |
Van egy másik módszer is több sor és oszlop kiválasztására a Pandákban. Használhatja az iloc[]-t. Ez a módszer az indexet használja az oszlopok neve helyett. Az alábbi kód ugyanazt az adatkeretet adja vissza, mint fent
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 |
Dobj egy oszlopot
Az oszlopokat a 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 |
láncolat
A Pandasban két DataFrame-et is összefűzhet. Használhatja a pd.concat()
Először is létre kell hoznia két DataFrame-et. Eddig minden rendben, Ön már ismeri az adatkeret létrehozását
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])
Végül összefűzi a két DataFrame-et
df_concat = pd.concat([df1,df2]) df_concat
Kor | név | |
---|---|---|
0 | 25 | János |
1 | 30 | Kovács |
2 | 50 | Paul |
3 | 26 | Ádám |
4 | 11 | Kovács |
Drop_duplicates
Ha egy adatkészlet duplikált információhasználatot tartalmazhat, a "drop_duplicates" egy könnyen kizárható ismétlődő sorok. Látható, hogy a `df_concat' duplikált megfigyelést tartalmaz, a 'Smith' kétszer jelenik meg a 'name' oszlopban.
df_concat.drop_duplicates('name')
Kor | név | |
---|---|---|
0 | 25 | János |
1 | 30 | Kovács |
2 | 50 | Paul |
3 | 26 | Ádám |
Értékek rendezése
Az értékeket a sort_values paraméterrel rendezheti
df_concat.sort_values('Age')
Kor | név | |
---|---|---|
4 | 11 | Kovács |
0 | 25 | János |
3 | 26 | Ádám |
1 | 30 | Kovács |
2 | 50 | Paul |
Átnevezés: index módosítása
Az átnevezés segítségével átnevezheti egy oszlopot a Pandasban. Az első érték az aktuális oszlopnév, a második érték az új oszlopnév.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl | Vezetéknév | |
---|---|---|
0 | 25 | János |
1 | 30 | Kovács |
2 | 50 | Paul |
3 | 26 | Ádám |
4 | 11 | Kovács |
Összegzésként
Az alábbiakban összefoglaljuk a Pandákkal végzett adattudomány leghasznosabb módszerét
adatok importálása | read_csv |
---|---|
sorozatot készíteni | Series of |
Adatkeret létrehozása | DataFrame |
Dátumtartomány létrehozása | időintervallum |
vissza a fejét | fej |
visszatérő farok | farok |
Írja le | leírni |
szelet a név használatával | adatnév['oszlopnév'] |
Szeletelje fel sorok segítségével | adat_név[0:5] |