Python Pandas vodič: DataFrame, datumski raspon, korištenje Pandas
Što je Pandas Python?
pande je biblioteka otvorenog koda koja vam omogućuje manipulaciju i analizu podataka Python. Pande Python knjižnica nudi manipulaciju podacima i operacije s podacima za numeričke tablice i vremenske serije. Pande pružaju jednostavan način za stvaranje, manipuliranje i prepirku s podacima. Izgrađen je na temelju NumPya, što znači da mu je za rad potreban NumPy.
Zašto koristiti Pande?
Znanstvenici koji se bave podacima koriste Pande u Python zbog svojih sljedećih prednosti:
- Lako obrađuje podatke koji nedostaju
- Ona koristi Serije za jednodimenzionalnu strukturu podataka i DataFrame za višedimenzionalnu strukturu podataka
- Omogućuje učinkovit način rezanja podataka
- Omogućuje fleksibilan način za spajanje, ulančavanje ili preoblikovanje podataka
- Uključuje moćan alat za rad s vremenskim serijama
Ukratko, Pandas je korisna biblioteka u Analiza podataka. Može se koristiti za manipulaciju i analizu podataka. Pande pružaju snažne strukture podataka jednostavne za korištenje, kao i sredstva za brzo izvođenje operacija na tim strukturama.
Kako instalirati Pande?
Sada u ovome Python Pandas tutorial, naučit ćemo kako instalirati Pandas Python.
Da biste instalirali Pandas biblioteku, pogledajte naš vodič Kako instalirati TensorFlow. Pandas je instaliran prema zadanim postavkama. U udaljenom slučaju, pande nisu instalirane-
Pande možete instalirati koristeći:
- Anaconda: conda install -c anakonda pande
- In Jupyter bilježnica:
import sys
!conda install --yes --prefix {sys.prefix} pandas
Što je Pandas DataFrame?
Pandas DataFrame je dvodimenzionalni niz s označenom podatkovnom strukturom koja ima različite vrste stupaca. DataFrame je standardni način za pohranu podataka u tabelarnom formatu, s redovima za pohranu informacija i stupcima za imenovanje informacija. Na primjer, cijena može biti naziv stupca, a 2,3,4 mogu biti vrijednosti cijene.
Data Frame je dobro poznat statističarima i drugim stručnjacima za podatke.
Ispod slike okvira podataka Panda:
Što je serija?
Niz je jednodimenzionalna struktura podataka. Može imati bilo koju podatkovnu strukturu kao što je cijeli broj, float i niz. Korisno je kada želite izvršiti izračunavanje ili vratiti jednodimenzionalni niz. Niz, po definiciji, ne može imati više stupaca. U potonjem slučaju upotrijebite strukturu okvira podataka.
Python Pandas serija ima sljedeće parametre:
- Podaci: mogu biti popis, rječnik ili skalarna vrijednost
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Indeks možete dodati pomoću indeksa. Pomaže imenovanje redaka. Duljina bi trebala biti jednaka veličini stupca
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
U nastavku stvarate Pandas niz s vrijednošću koja nedostaje za treće retke. Napomena, nedostaju vrijednosti u Python označeni su "NaN." Možete koristiti numpy za umjetno stvaranje vrijednosti koja nedostaje: np.nan
pd.Series([1,2,np.nan])
Izlaz
0 1.0 1 2.0 2 NaN dtype: float64
Stvorite Pandas DataFrame
Sada ćemo u ovom vodiču za Pandas DataFrame naučiti kako stvarati Python Pandas podatkovni okvir:
Možete pretvoriti numpy niz u pandas podatkovni okvir pomoću pd.Data frame(). Moguće je i suprotno. Da biste pretvorili pandas Data Frame u polje, možete koristiti 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]]
Također možete koristiti rječnik za stvaranje Pandas podatkovnog okvira.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Dob | Ime | |
|---|---|---|
| 0 | 30 | Jovan |
| 1 | 40 | Kovač |
Podaci o rasponu pandi
Pande imaju prikladan API za stvaranje raspona datuma. Učimo s Python Primjeri pandi:
pd.data_range(datum,period,frequency):
- Prvi parametar je datum početka
- Drugi parametar je broj razdoblja (neobavezno ako je naveden datum završetka)
- Zadnji parametar je učestalost: dan: 'D,' mjesec: 'M' i godina: 'Y.'
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)
Izlaz
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)
Izlaz
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')
Provjera podataka
Možete provjeriti glavu ili rep skupa podataka pomoću head(), ili tail() ispred kojeg stoji naziv okvira podataka pande kao što je prikazano u donjem primjeru Panda:
Korak 1) Stvorite nasumični niz pomoću kvrgav. Niz ima 4 stupca i 6 redaka
random = np.random.randn(6,4)
Korak 2) Zatim stvarate podatkovni okvir pomoću pandi.
Koristite dates_m kao indeks za podatkovni okvir. To znači da će svaki red dobiti "ime" ili indeks koji odgovara datumu.
Na kraju, dajete naziv za 4 stupca sa stupcima argumenata
# Create data with date
df = pd.DataFrame(random,
index=dates_m,
columns=list('ABCD'))
Korak 3) Korištenje funkcije glave
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 |
Korak 4) Korištenje funkcije repa
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 |
Korak 5) Izvrsna praksa da dobijete trag o podacima je korištenje describe(). Pruža brojeve, srednju vrijednost, std, min, max i percentil skupa podataka.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| računati | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| značiti | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| sati | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| minuta | -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 |
Slice Data
Posljednja točka ovoga Python Vodič za Pandas govori o tome kako izrezati podatkovni okvir Panda.
Naziv stupca možete koristiti za izdvajanje podataka u određenom stupcu kao što je prikazano u donjem primjeru Pandas:
## 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
Da biste odabrali više stupaca, trebate upotrijebiti dva puta zagradu, [[..,..]]
Prvi par zagrada znači da želite odabrati stupce, drugi par zagrada govori koje stupce želite vratiti.
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 |
Redove možete rezati pomoću:
Kôd u nastavku vraća prva tri retka
### 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 |
Funkcija loc koristi se za odabir stupaca prema nazivima. Kao i obično, vrijednosti prije zareza označavaju retke, a iza odnose se na stupac. Za odabir više od jednog stupca morate koristiti zagrade.
## 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 |
Postoji još jedan način odabira više redaka i stupaca u Pandas. Možete koristiti iloc[]. Ova metoda koristi indeks umjesto naziva stupaca. Kod u nastavku vraća isti okvir podataka kao i gore
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 |
Ispustite stupac
Možete ispustiti stupce koristeći 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 |
povezan u lanac
Možete spojiti dva DataFramea u Pandas. Možete koristiti pd.concat()
Prije svega, morate stvoriti dva DataFramea. Za sada je dobro, već ste upoznati sa stvaranjem okvira podataka
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])
Na kraju spajate dva DataFramea
df_concat = pd.concat([df1,df2]) df_concat
| Dob | ime | |
|---|---|---|
| 0 | 25 | Jovan |
| 1 | 30 | Kovač |
| 2 | 50 | Pavle |
| 3 | 26 | Adam |
| 4 | 11 | Kovač |
Ispusti_duplikate
Ako skup podataka može sadržavati duplikate upotrebe informacija, `drop_duplicates` je jednostavan za izuzimanje dupliciranih redaka. Možete vidjeti da `df_concat` ima duplo opažanje, `Smith` se pojavljuje dvaput u stupcu `name`.
df_concat.drop_duplicates('name')
| Dob | ime | |
|---|---|---|
| 0 | 25 | Jovan |
| 1 | 30 | Kovač |
| 2 | 50 | Pavle |
| 3 | 26 | Adam |
Poredaj vrijednosti
Možete sortirati vrijednost pomoću sort_values
df_concat.sort_values('Age')
| Dob | ime | |
|---|---|---|
| 4 | 11 | Kovač |
| 0 | 25 | Jovan |
| 3 | 26 | Adam |
| 1 | 30 | Kovač |
| 2 | 50 | Pavle |
Preimenuj: promjena indeksa
Možete koristiti preimenovanje za preimenovanje stupca u Pandas. Prva vrijednost je naziv trenutnog stupca, a druga vrijednost je naziv novog stupca.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Dob_ppl | Prezime | |
|---|---|---|
| 0 | 25 | Jovan |
| 1 | 30 | Kovač |
| 2 | 50 | Pavle |
| 3 | 26 | Adam |
| 4 | 11 | Kovač |
Rezime
U nastavku je sažetak najkorisnije metode za znanost podataka s Pandama
| uvoz podataka | read_csv |
|---|---|
| stvoriti serije | Serija |
| Stvorite Dataframe | DataFrame |
| Stvorite datumski raspon | Raspon datuma |
| vratiti glavu | glava |
| povratni rep | rep |
| Opisati | opisati |
| kriška koristeći naziv | naziv podataka['ime stupca'] |
| Režite pomoću redaka | naziv_podatka[0:5] |

