Python Pandas Tutorial: DataFrame, datointerval, brug af pandaer
Hvad er pandaer Python?
pandas er et open source-bibliotek, der giver dig mulighed for at udfรธre datamanipulation og -analyse i Python. Pandaer Python bibliotek tilbyder datamanipulation og dataoperationer til numeriske tabeller og tidsserier. Pandaer giver en nem mรฅde at oprette, manipulere og skรฆndes dataene pรฅ. Den er bygget oven pรฅ NumPy, hvilket betyder, at den har brug for NumPy for at fungere.
Hvorfor bruge pandaer?
Dataforskere gรธr brug af pandaer i Python for sine fรธlgende fordele:
- Hรฅndterer nemt manglende data
- Det bruger Serier til en-dimensionel datastruktur og DataFrame til multidimensionel datastruktur
- Det giver en effektiv mรฅde at opdele dataene pรฅ
- Det giver en fleksibel mรฅde at flette, sammenkรฆde eller omforme dataene
- Det inkluderer et kraftfuldt tidsserievรฆrktรธj at arbejde med
I en nรธddeskal er Pandas et nyttigt bibliotek i dataanalyse. Det kan bruges til at udfรธre datamanipulation og -analyse. Pandaer leverer kraftfulde og brugervenlige datastrukturer samt midlerne til hurtigt at udfรธre operationer pรฅ disse strukturer.
Hvordan installerer man pandaer?
Nu i dette Python Pandas tutorial, vi vil lรฆre, hvordan du installerer Pandas i Python.
For at installere Pandas bibliotek, se venligst vores tutorial Sรฅdan installeres TensorFlow. Pandas er installeret som standard. I fjerntliggende tilfรฆlde er pandaer ikke installeret-
Du kan installere Pandaer ved at bruge:
- Anaconda: conda install -c anaconda pandas
- In Jupyter Notesbog :
import sys
!conda install --yes --prefix {sys.prefix} pandas
Hvad er en Pandas DataFrame?
Pandas DataFrame er et todimensionelt array med mรฆrket datastruktur med forskellige kolonnetyper. En DataFrame er en standard mรฅde at gemme data pรฅ i et tabelformat, med rรฆkker til at gemme informationen og kolonner til at navngive informationen. For eksempel kan prisen vรฆre navnet pรฅ en kolonne og 2,3,4 kan vรฆre prisvรฆrdierne.
Data Frame er velkendt af statistikere og andre datapraktikere.
Nedenfor et billede af en Pandas dataramme:
Hvad er en serie?
En serie er en endimensionel datastruktur. Det kan have enhver datastruktur som heltal, float og streng. Det er nyttigt, nรฅr du vil udfรธre beregninger eller returnere et endimensionelt array. En serie kan pr. definition ikke have flere kolonner. I sidstnรฆvnte tilfรฆlde skal du bruge datarammestrukturen.
Python Pandas-serien har fรธlgende parametre:
- Data: kan vรฆre en liste, en ordbog eller en skalarvรฆrdi
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Du kan tilfรธje indekset med indeks. Det hjรฆlper at navngive rรฆkkerne. Lรฆngden skal vรฆre lig med stรธrrelsen af โโsรธjlen
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Nedenfor opretter du en Pandas-serie med en manglende vรฆrdi for den tredje rรฆkke. Bemรฆrk, manglende vรฆrdier i Python er noteret "NaN." Du kan bruge numpy til at skabe manglende vรฆrdi: np.nan kunstigt
pd.Series([1,2,np.nan])
Produktion
0 1.0 1 2.0 2 NaN dtype: float64
Opret Pandas DataFrame
Nu i denne Pandas DataFrame-tutorial lรฆrer vi, hvordan du opretter Python Pandas dataramme:
Du kan konvertere et numpy array til en pandas dataramme med pd.Data frame(). Det modsatte er ogsรฅ muligt. For at konvertere en pandas dataramme til et array kan du bruge 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]]
Du kan ogsรฅ bruge en ordbog til at oprette en Pandas-dataramme.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Alder | Navn | |
|---|---|---|
| 0 | 30 | John |
| 1 | 40 | Smith |
Pandas rรฆkkeviddedata
Pandaer har en praktisk API til at oprette et datointerval. Lad os lรฆre med Python Eksempler pรฅ pandaer:
pd.data_range(dato,periode,frekvens):
- Den fรธrste parameter er startdatoen
- Den anden parameter er antallet af perioder (valgfrit, hvis slutdatoen er angivet)
- Den sidste parameter er frekvensen: dag: 'D', mรฅned: 'M' og รฅr: 'Y.'
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)
Produktion
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)
Produktion
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')
Inspicering af data
Du kan kontrollere datasรฆttets hoved eller hale med head() eller tail() foran navnet pรฅ pandaens dataramme som vist i nedenstรฅende Panda-eksempel:
Trin 1) Opret en tilfรฆldig sekvens med bedรธvet. Sekvensen har 4 kolonner og 6 rรฆkker
random = np.random.randn(6,4)
Trin 2) Derefter opretter du en dataramme ved hjรฆlp af pandaer.
Brug dates_m som et indeks for datarammen. Det betyder, at hver rรฆkke vil fรฅ et "navn" eller et indeks, svarende til en dato.
Til sidst giver du et navn til de 4 kolonner med argumentkolonnerne
# Create data with date
df = pd.DataFrame(random,
index=dates_m,
columns=list('ABCD'))
Trin 3) Brug af hovedfunktion
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 |
Trin 4) Brug af halefunktion
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 |
Trin 5) En glimrende praksis for at fรฅ et fingerpeg om dataene er at bruge describe(). Det giver datasรฆttets tรฆllinger, middelvรฆrdi, std, min, max og percentil.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| tรฆlle | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| betyde | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| minut | -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 |
Udsnit data
Det sidste punkt i dette Python Pandas tutorial handler om, hvordan man skรฆrer en pandas dataramme.
Du kan bruge kolonnenavnet til at udtrรฆkke data i en bestemt kolonne som vist i nedenstรฅende Panda-eksempel:
## 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
For at vรฆlge flere kolonner skal du bruge to gange parentesen, [[..,..]]
Det fรธrste par af parentes betyder, at du vil vรฆlge kolonner, det andet par af parentes fortรฆller, hvilke kolonner du vil returnere.
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 |
Du kan skรฆre rรฆkkerne i skiver med:
Koden nedenfor returnerer de fรธrste tre rรฆkker
### 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 |
loc-funktionen bruges til at vรฆlge kolonner efter navn. Som sรฆdvanligt stรฅr vรฆrdierne fรธr koma for rรฆkkerne og efter refererer til kolonnen. Du skal bruge parenteserne til at vรฆlge mere end รฉn kolonne.
## 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 |
Der er en anden metode til at vรฆlge flere rรฆkker og kolonner i Pandas. Du kan bruge iloc[]. Denne metode bruger indekset i stedet for kolonnenavnet. Koden nedenfor returnerer den samme dataramme som ovenfor
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 |
Slip en kolonne
Du kan slette kolonner ved hjรฆlp af 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 |
sammenkรฆdning
Du kan sammenkรฆde to DataFrame i Pandas. Du kan bruge pd.concat()
Fรธrst og fremmest skal du oprette to DataFrames. Sรฅ langt sรฅ godt, du er allerede bekendt med oprettelse af dataramme
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])
Til sidst sammenkรฆder du de to DataFrame
df_concat = pd.concat([df1,df2]) df_concat
| Alder | navn | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Drop_duplicates
Hvis et datasรฆt kan indeholde dubletter af informationsbrug, er `drop_duplicates` en let at ekskludere duplikerede rรฆkker. Du kan se, at "df_concat" har en dublet observation, "Smith" vises to gange i kolonnen "navn".
df_concat.drop_duplicates('name')
| Alder | navn | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
Sorter vรฆrdier
Du kan sortere vรฆrdi med sort_vรฆrdier
df_concat.sort_values('Age')
| Alder | navn | |
|---|---|---|
| 4 | 11 | Smith |
| 0 | 25 | John |
| 3 | 26 | Adam |
| 1 | 30 | Smith |
| 2 | 50 | paul |
Omdรธb: รฆndring af indeks
Du kan bruge omdรธb til at omdรธbe en kolonne i Pandas. Den fรธrste vรฆrdi er det aktuelle kolonnenavn, og den anden vรฆrdi er det nye kolonnenavn.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Age_ppl | Efternavn | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Resumรฉ
Nedenfor er en oversigt over den mest nyttige metode til datavidenskab med Pandas
| importere data | lรฆs_csv |
|---|---|
| lave serier | Series |
| Opret dataramme | DataFrame |
| Opret datointerval | DATE_RANGE |
| returnere hovedet | hoved |
| retur hale | hale |
| Beskriv | beskrive |
| skive ved hjรฆlp af navn | datanavn['kolonnenavn'] |
| Skรฆr i skiver ved hjรฆlp af rรฆkker | data_name[0:5] |

