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