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