Python Panda-opplæring: DataFrame, datoperiode, bruk av pandaer
Hva er pandaer Python?
pandaer er et åpen kildekode-bibliotek som lar deg utføre datamanipulasjon og -analyse i Python. Pandaer Python biblioteket tilbyr datamanipulering og dataoperasjoner for numeriske tabeller og tidsserier. Pandaer gir en enkel måte å lage, manipulere og krangle dataene på. Den er bygget på toppen av NumPy, betyr at den trenger NumPy for å fungere.
Hvorfor bruke pandaer?
Dataforskere bruker pandaer i Python for følgende fordeler:
- Håndterer enkelt manglende data
- Det bruker Serier for endimensjonal datastruktur og DataFrame for flerdimensjonal datastruktur
- Det gir en effektiv måte å dele dataene på
- Det gir en fleksibel måte å slå sammen, sette sammen eller omforme dataene
- Den inkluderer et kraftig tidsserieverktøy å jobbe med
I et nøtteskall er Pandas et nyttig bibliotek i dataanalyse. Den kan brukes til å utføre datamanipulering og analyse. Pandaer gir kraftige og brukervennlige datastrukturer, samt midler for raskt å utføre operasjoner på disse strukturene.
Hvordan installere pandaer?
Nå i dette Python Pandas tutorial, vi vil lære hvordan du installerer Pandas i Python.
For å installere Pandas-biblioteket, se veiledningen vår Hvordan installere TensorFlow. Pandas er installert som standard. I fjerntliggende tilfelle, pandaer ikke installert-
Du kan installere Pandaer ved å bruke:
- Anaconda: conda install -c anaconda pandaer
- In Jupyter Notatbok:
import sys !conda install --yes --prefix {sys.prefix} pandas
Hva er en Pandas DataFrame?
Pandas DataFrame er en todimensjonal matrise med merket datastruktur som har forskjellige kolonnetyper. En DataFrame er en standard måte å lagre data på i et tabellformat, med rader for å lagre informasjonen og kolonner for å navngi informasjonen. For eksempel kan prisen være navnet på en kolonne og 2,3,4 kan være prisverdiene.
Data Frame er godt kjent av statistikere og andre datautøvere.
Under et bilde av en Pandas dataramme:
Hva er en serie?
En serie er en endimensjonal datastruktur. Den kan ha hvilken som helst datastruktur som heltall, float og streng. Det er nyttig når du vil utføre beregninger eller returnere en endimensjonal matrise. En serie kan per definisjon ikke ha flere kolonner. For sistnevnte tilfelle, vennligst bruk datarammestrukturen.
Python Pandas-serien har følgende parametere:
- Data: kan være en liste, ordbok eller skalarverdi
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Du kan legge til indeksen med indeks. Det hjelper å navngi radene. Lengden skal være lik størrelsen på søylen
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Nedenfor lager du en Pandas-serie med en manglende verdi for de tredje radene. Merk, manglende verdier i Python er notert "NaN." Du kan bruke numpy til å skape manglende verdi: np.nan kunstig
pd.Series([1,2,np.nan])
Produksjon
0 1.0 1 2.0 2 NaN dtype: float64
Lag Pandas DataFrame
Nå i denne Pandas DataFrame-opplæringen vil vi lære hvordan du lager Python Pandas dataramme:
Du kan konvertere en numpy array til en pandas dataramme med pd.Data frame(). Det motsatte er også mulig. For å konvertere en pandas dataramme til en array, kan du bruke 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å bruke en ordbok til å lage en Pandas-dataramme.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
Alder | Navn | |
---|---|---|
0 | 30 | John |
1 | 40 | Smith |
Pandas rekkeviddedata
Pandaer har et praktisk API for å lage et datointervall. La oss lære med Python Eksempler på pandaer:
pd.data_range(dato,periode,frekvens):
- Den første parameteren er startdatoen
- Den andre parameteren er antall perioder (valgfritt hvis sluttdatoen er spesifisert)
- Den siste parameteren 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)
Produksjon
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)
Produksjon
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')
Inspiserer data
Du kan sjekke hodet eller halen til datasettet med head(), eller tail() foran navnet på pandaens dataramme som vist i eksemplet under Pandas:
Trinn 1) Lag en tilfeldig sekvens med følelsesløs. Sekvensen har 4 kolonner og 6 rader
random = np.random.randn(6,4)
Trinn 2) Deretter lager du en dataramme ved hjelp av pandaer.
Bruk dates_m som en indeks for datarammen. Det betyr at hver rad vil få et "navn" eller en indeks som tilsvarer en dato.
Til slutt gir du et navn til de 4 kolonnene med argumentkolonnene
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Trinn 3) Bruker hodefunksjon
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 |
Trinn 4) Bruk av halefunksjon
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 |
Trinn 5) En utmerket praksis for å få en anelse om dataene er å bruke describe(). Den gir antall, gjennomsnitt, std, min, maks og persentil av datasettet.
df.describe()
A | B | C | D | |
---|---|---|---|---|
telle | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
bety | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
minutter | -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 |
Del data
Det siste poenget med dette Python Pandas-opplæringen handler om hvordan du skjærer en panda-dataramme.
Du kan bruke kolonnenavnet til å trekke ut data i en bestemt kolonne som vist i eksemplet under Pandas:
## 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 å velge flere kolonner, må du bruke to ganger parentesen, [[..,..]]
Det første paret med parentes betyr at du vil velge kolonner, det andre paret med parentes forteller 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 skjære opp radene med:
Koden nedenfor returnerer de tre første radene
### 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-funksjonen brukes til å velge kolonner etter navn. Som vanlig står verdiene før koma for radene og etter refererer til kolonnen. Du må bruke parentesene for å velge mer enn é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 |
Det er en annen metode for å velge flere rader og kolonner i Pandas. Du kan bruke iloc[]. Denne metoden bruker indeksen i stedet for kolonnenavnet. Koden nedenfor returnerer 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 |
Slipp en kolonne
Du kan slippe kolonner ved å bruke 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 |
sammenkjeding
Du kan koble sammen to DataFrame i Pandas. Du kan bruke pd.concat()
Først av alt må du lage to DataFrames. Så langt så bra, du er allerede kjent med opprettelse av 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 slutt kobler du sammen 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 datasett kan inneholde duplikatinformasjon, er `drop_duplicates` en enkel å ekskludere duplikatrader. Du kan se at `df_concat` har en duplikatobservasjon, `Smith` vises to ganger i kolonnen `navn.`
df_concat.drop_duplicates('name')
Alder | navn | |
---|---|---|
0 | 25 | John |
1 | 30 | Smith |
2 | 50 | paul |
3 | 26 | Adam |
Sorter verdier
Du kan sortere verdi med sort_values
df_concat.sort_values('Age')
Alder | navn | |
---|---|---|
4 | 11 | Smith |
0 | 25 | John |
3 | 26 | Adam |
1 | 30 | Smith |
2 | 50 | paul |
Gi nytt navn: endring av indeks
Du kan bruke endre navn for å gi nytt navn til en kolonne i Pandas. Den første verdien er det gjeldende kolonnenavnet og den andre verdien er det nye kolonnenavnet.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl | Etternavn | |
---|---|---|
0 | 25 | John |
1 | 30 | Smith |
2 | 50 | paul |
3 | 26 | Adam |
4 | 11 | Smith |
Sammendrag
Nedenfor er et sammendrag av den mest nyttige metoden for datavitenskap med Pandas
importere data | les_csv |
---|---|
lage serier | Serien |
Opprett dataramme | Dataramme |
Opprett datoperiode | datointervall |
returnere hodet | hode |
tilbake hale | hale |
Beskriv | beskrive |
skive med navn | datanavn['kolonnenavn'] |
Skjær opp ved hjelp av rader | data_name[0:5] |