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]