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:

Pandas DataFrame

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]

Opsummer dette indlรฆg med: