Python Handledning för pandor: DataFrame, datumintervall, användning av pandor

Vad är pandor Python?

pandas är ett bibliotek med öppen källkod som låter dig utföra datamanipulation och analys i Python. Pandas Python biblioteket erbjuder datamanipulation och dataoperationer för numeriska tabeller och tidsserier. Pandas ger ett enkelt sätt att skapa, manipulera och bråka data. Den är byggd ovanpå NumPy, vilket betyder att den behöver NumPy för att fungera.

Varför använda pandor?

Dataforskare använder sig av pandor i Python för dess följande fördelar:

  • Hanterar enkelt saknad data
  • Det använder Serier för endimensionell datastruktur och DataFrame för flerdimensionell datastruktur
  • Det ger ett effektivt sätt att dela upp data
  • Det ger ett flexibelt sätt att slå samman, sammanfoga eller omforma data
  • Den innehåller ett kraftfullt tidsserieverktyg att arbeta med

I ett nötskal, Pandas är ett användbart bibliotek i dataanalys. Den kan användas för att utföra datamanipulation och analys. Pandas tillhandahåller kraftfulla och lättanvända datastrukturer, såväl som medel för att snabbt utföra operationer på dessa strukturer.

Hur installerar man pandor?

Nu i detta Python Pandas handledning, vi kommer att lära oss hur man installerar Pandas i Python.

För att installera Pandas bibliotek, se vår handledning Hur man installerar TensorFlow. Pandas är installerat som standard. I fjärrfall, pandor inte installerade-

Du kan installera Pandas med:

  • Anaconda: conda installera -c anaconda pandas
  • In Jupyter Anteckningsbok :
import sys
!conda install --yes --prefix {sys.prefix} pandas

Vad är en Pandas DataFrame?

Pandas DataFrame är en tvådimensionell matris med märkt datastruktur med olika kolumntyper. En DataFrame är ett standardsätt att lagra data i ett tabellformat, med rader för att lagra informationen och kolumner för att namnge informationen. Priset kan till exempel vara namnet på en kolumn och 2,3,4 kan vara prisvärdena.

Data Frame är välkänt av statistiker och andra datapraktiker.

Nedan en bild av en Pandas dataram:

Pandas DataFrame

Vad är en serie?

En serie är en endimensionell datastruktur. Den kan ha vilken datastruktur som helst som heltal, float och sträng. Det är användbart när du vill utföra beräkningar eller returnera en endimensionell array. En serie kan per definition inte ha flera kolumner. För det senare fallet, använd dataramstrukturen.

Python Pandas Series har följande parametrar:

  • Data: kan vara en lista, en ordbok eller ett skalärt värde
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Du kan lägga till indexet med index. Det hjälper att namnge raderna. Längden ska vara lika med storleken på kolonnen

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Nedan skapar du en Pandas-serie med ett saknat värde för de tredje raden. Obs, saknade värden i Python är noterade "NaN." Du kan använda numpy för att skapa saknade värden: np.nan på konstgjord väg

pd.Series([1,2,np.nan])

Produktion

0    1.0
1    2.0
2    NaN
dtype: float64

Skapa Pandas DataFrame

Nu i denna Pandas DataFrame-handledning kommer vi att lära oss hur man skapar Python Pandas dataram:

Du kan konvertera en numpy array till en pandas dataram med pd.Data frame(). Det motsatta är också möjligt. För att konvertera en pandas dataram till en array kan du använda 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 också använda en ordbok för att skapa en Pandas dataram.

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Ålder Namn
0 30 John
1 40 Smith

Pandas räckviddsdata

Pandas har ett bekvämt API för att skapa ett datumintervall. Låt oss lära oss med Python Exempel på pandor:

pd.data_range(datum,period,frekvens):

  • Den första parametern är startdatumet
  • Den andra parametern är antalet perioder (valfritt om slutdatumet anges)
  • Den sista parametern är frekvensen: dag: 'D', månad: 'M' och å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')

Inspektera data

Du kan kontrollera huvudet eller svansen på datamängden med head(), eller tail() föregås av namnet på pandans dataram som visas i nedanstående Pandas exempel:

Steg 1) Skapa en slumpmässig sekvens med numpy. Sekvensen har 4 kolumner och 6 rader

random = np.random.randn(6,4)

Steg 2) Sedan skapar du en dataram med hjälp av pandor.

Använd dates_m som ett index för dataramen. Det betyder att varje rad kommer att ges ett "namn" eller ett index som motsvarar ett datum.

Slutligen ger du ett namn till de 4 kolumnerna med argumentkolumnerna

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Steg 3) Använder huvudfunktionen

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

Steg 4) Använda svansfunktion

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

Steg 5) En utmärkt praxis för att få en aning om data är att använda describe(). Den tillhandahåller räkningar, medelvärde, std, min, max och percentil för datasetet.

df.describe()
A B C D
räkna 6.000000 6.000000 6.000000 6.000000
betyda 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
min -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

Dela data

Den sista punkten i detta Python Pandas handledning handlar om hur man skär en pandas dataram.

Du kan använda kolumnnamnet för att extrahera data i en viss kolumn som visas i Panda-exemplet nedan:

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

För att välja flera kolumner måste du använda två gånger parentesen, [[..,..]]

Det första paret av parentes betyder att du vill välja kolumner, det andra paret av parentes talar om vilka kolumner du vill returnera.

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ära raderna med:

Koden nedan returnerar de tre första raderna

### 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 används för att välja kolumner efter namn. Som vanligt står värdena före koma för raderna och efter hänvisar till kolumnen. Du måste använda parenteserna för att välja mer än en kolumn.

## 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 finns en annan metod för att välja flera rader och kolumner i Pandas. Du kan använda iloc[]. Den här metoden använder indexet istället för kolumnnamnet. Koden nedan returnerar samma dataram som ovan

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

Släpp en kolumn

Du kan släppa kolumner med 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

sammanlänkning

Du kan sammanfoga två DataFrame i Pandas. Du kan använda pd.concat()

Först och främst måste du skapa två DataFrames. Så långt har det gått bra, du är redan bekant med att skapa dataramar

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

Slutligen sammanfogar du de två DataFrame

df_concat = pd.concat([df1,df2]) 
df_concat
Ålder namn
0 25 John
1 30 Smith
2 50 paul
3 26 Adam
4 11 Smith

Drop_duplicates

Om en datauppsättning kan innehålla dubbletter av information, är "drop_duplicates" ett enkelt att exkludera dubbletter av dubbletter. Du kan se att "df_concat" har en dubblettobservation, "Smith" visas två gånger i kolumnen "namn".

df_concat.drop_duplicates('name')
Ålder namn
0 25 John
1 30 Smith
2 50 paul
3 26 Adam

Sortera värden

Du kan sortera värde med sort_värden

df_concat.sort_values('Age')
Ålder namn
4 11 Smith
0 25 John
3 26 Adam
1 30 Smith
2 50 paul

Byt namn: byte av index

Du kan använda byta namn för att byta namn på en kolumn i Pandas. Det första värdet är det aktuella kolumnnamnet och det andra värdet är det nya kolumnnamnet.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl Efternamn
0 25 John
1 30 Smith
2 50 paul
3 26 Adam
4 11 Smith

Sammanfattning

Nedan är en sammanfattning av den mest användbara metoden för datavetenskap med Pandas

importera data read_csv
skapa serier Serier
Skapa dataram DataFrame
Skapa datumintervall DATE_RANGE
returnera huvudet huvud
tillbaka svans svans
Beskriv beskriva
skiva med namn datanamn['kolumnnamn']
Skiva med hjälp av rader data_name[0:5]