Python Tutorial Pandas: DataFrame, interval de date și utilizare
⚡ Rezumat inteligent
Pandas este open-source Python bibliotecă pentru manipularea datelor tabelare. Aceasta furnizează structurile Series și DataFrame, intervalele de date, instrumentele de asistență pentru inspecție și operațiunile de feliere, eliminare, concatenare, sortare și redenumire demonstrate în acest ghid.
În ce sunt pandașii Python?
ursi panda este o bibliotecă open-source care vă permite să manipulați și să analizați date în Python, acoperind atât tabele numerice, cât și serii temporale. Oferă o modalitate ușoară de a crea, manipula și gestiona date și este construit pe baza NumPy, deci NumPy trebuie să fie prezent pentru ca Pandas să funcționeze.
De ce să folosiți Pandas?
Oamenii de știință de date folosesc Pandas în Python pentru următoarele avantaje:
- Gestionează cu ușurință datele lipsă
- Folosește Series pentru date unidimensionale și DataFrame pentru date multidimensionale.
- Oferă o modalitate eficientă de tăiere a datelor
- Oferă o modalitate flexibilă de îmbinare, concatenare sau remodelare a datelor
- Include un set puternic de instrumente pentru serii temporale
Pe scurt, Pandas oferă structuri de date puternice și ușor de utilizat, plus mijloacele de a opera rapid cu ele, motiv pentru care ancorează majoritatea... Python analiza datelor muncă.
Cum se instalează Pandas
Pandas este livrat împreună cu Anaconda și cu majoritatea serviciilor de notebook-uri gestionate, așa că de obicei este deja instalat. Dacă importul eșuează, una dintre comenzile de mai jos îl adaugă. Mediul încorporat Cum se instalează TensorFlow conține și panda.
- pip:
pip install pandas - Anaconda:
conda install -c anaconda pandas - În interiorul unei Jupyter Blocnotes celula:
import sys !conda install --yes --prefix {sys.prefix} pandas
Ce este un Pandas DataFrame?
Un Pandas DataFrame este o structură de date etichetată bidimensională ale cărei coloane pot conține diferite tipuri. Este modalitatea standard de stocare a datelor în format tabelar: rândurile conțin observațiile, iar coloanele denumesc informațiile. De exemplu, preţ poate fi numele unei coloane, iar 2, 3, 4 pot fi valorile prețului.
Cadrele de date sunt bine cunoscute statisticienilor și altor specialiști în date. Imaginea de mai jos prezintă această formă - un index de rând etichetat pe lateral și coloane denumite în partea de sus.
Ce este o serie?
O serie este o structură de date unidimensională. Poate conține orice tip de date, cum ar fi un număr întreg, un număr cu număr mobil sau un șir de caractere și este utilă atunci când doriți să efectuați un calcul sau să returnați un tablou unidimensional. O serie, prin definiție, nu poate avea mai multe coloane; în acest caz, utilizați structura DataFrame.
Constructorul seriei Pandas primește următorii parametri:
- Date: poate fi o listă, un dicționar sau o valoare scalară
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Puteți adăuga un index cu indexDenumește rândurile, iar lungimea sa trebuie să fie egală cu dimensiunea coloanei.
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Mai jos creați o serie Pandas cu o valoare lipsă în al treilea rând. Valori lipsă în Python sunt prezentate ca NaN și np.nan din NumPy creează unul artificial.
pd.Series([1,2,np.nan])
producție
0 1.0 1 2.0 2 NaN dtype: float64
Creați Pandas DataFrame
Puteți converti un array NumPy într-un DataFrame cu pd.DataFrame()Opusul este, de asemenea, posibil: pentru a converti un DataFrame înapoi într-o matrice, utilizați np.array(), df.to_numpy(), pe care documentația actuală Pandas o recomandă.
## 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]]
Un dicționar funcționează la fel de bine ca o intrare pentru pd.DataFrame().
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Vârstă | Nume | |
|---|---|---|
| 0 | 30 | Ioan |
| 1 | 40 | Fierar |
Date privind intervalul de panda
Pandas are o interfață API convenabilă pentru crearea unui interval de date, care devine indexul unei serii temporale. Apelul ia această formă:
pd.date_range(start, periods, freq):
- Primul parametru este data de începere
- Al doilea parametru este numărul de perioade (opțional dacă este specificată data de încheiere)
- Ultimul parametru este frecvența: zi
D, lunaMși anulY
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
producție
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)
producție
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')
Notă privind versiunea: aliasul lunii M utilizat mai sus este depreciat din Pandas 2.2 și eliminat în Pandas 3.0. În versiunile actuale trec freq='ME' pentru sfârșitul lunii; indicele rezultat este identic.
Inspectarea datelor
Puteți verifica partea de sus sau de jos a unui set de date cu head() or tail() a apelat la DataFrame, așa cum arată exemplul Pandas de mai jos.
Pas 1) Creați o secvență aleatorie cu NumPy. Secvența are 4 coloane și 6 rânduri.
random = np.random.randn(6,4)
Pas 2) Apoi creați un DataFrame folosind Pandas.
Utilizare dates_m ca index, deci fiecare rând primește un nume corespunzător unei date și denumiți cele 4 coloane cu columns a susținut.
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
pentru că np.random.randn() funcționează fără sămânță, cifrele dvs. vor diferi de cele tipărite aici. Sunați np.random.seed(0) mai întâi dacă vrei să reproduci un set fix.
Pas 3) Utilizarea funcției head
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 |
Pas 4) Utilizarea funcției cozii
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 |
Pas 5) O modalitate excelentă de a obține o idee despre date este describe()Raportează numărătoarea, media, valorile standard, minimul, maximul și percentilele setului de date.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| conta | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| însemna | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| minute | -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 |
Secționează datele
Secționarea extrage un subset de rânduri sau coloane dintr-un DataFrame. Puteți utiliza numele coloanei pentru a exemplificatraco singură coloană, așa cum arată exemplul Pandas de mai jos.
## 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
Pentru a selecta mai multe coloane, aveți nevoie de o paranteză dublă, [[..,..]]Prima pereche înseamnă că doriți să selectați coloane; a doua pereche specifică ce coloane să fie returnate.
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 |
Puteți împărți rândurile cu două puncte. Codul de mai jos returnează primele trei rânduri.
### 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 accesorul selectează coloanele după nume. Ca de obicei, valoarea dinaintea virgulei reprezintă rândurile, iar valoarea de după aceasta reprezintă coloanele, iar parantezele sunt necesare pentru a selecta mai multe coloane.
## 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 |
Există o altă metodă pentru selectarea mai multor rânduri și coloane. iloc[] folosește poziții întregi în loc de nume de coloane, așadar codul de mai jos returnează același DataFrame ca mai sus.
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 |
Aruncă o coloană
Puteți elimina coloane cu df.drop(), trecând numele în columns a susținut.
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 |
Concatenare
Puteți concatena două DataFrame-uri cu pd.concat()Mai întâi creați cele două cadre.
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])
Apoi le concatenează.
df_concat = pd.concat([df1,df2]) df_concat
| Vârstă | nume | |
|---|---|---|
| 0 | 25 | Ioan |
| 1 | 30 | Fierar |
| 2 | 50 | Paul |
| 3 | 26 | Adam |
| 4 | 11 | Fierar |
Eliminați duplicatele
Când un set de date conține informații duplicate, drop_duplicates() este o modalitate ușoară de a exclude rândurile repetate. df_concat conține o observație duplicată: Smith apare de două ori în name coloana.
df_concat.drop_duplicates('name')
| Vârstă | nume | |
|---|---|---|
| 0 | 25 | Ioan |
| 1 | 30 | Fierar |
| 2 | 50 | Paul |
| 3 | 26 | Adam |
Sortare valori
Puteți sorta un cadru cu sort_values(). Rețineți că Age a fost creat ca text aici, deci rândurile sunt sortate în ordinea șirurilor.
df_concat.sort_values('Age')
| Vârstă | nume | |
|---|---|---|
| 4 | 11 | Fierar |
| 0 | 25 | Ioan |
| 3 | 26 | Adam |
| 1 | 30 | Fierar |
| 2 | 50 | Paul |
Redenumiți Coloanele
Utilizare rename() pentru a redenumi o coloană în Pandas. În fiecare pereche, prima valoare este numele curent al coloanei, iar a doua este cea nouă.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Age_ppl | Nume de familie | |
|---|---|---|
| 0 | 25 | Ioan |
| 1 | 30 | Fierar |
| 2 | 50 | Paul |
| 3 | 26 | Adam |
| 4 | 11 | Fierar |
Referință rapidă pentru metodele Pandas
Acest tabel mapează fiecare sarcină comună la metoda Pandas care o execută.
| Sarcină | Metodă |
|---|---|
| import date | read_csv |
| creați serii | serie |
| Creați un cadru de date | DataFrame |
| Creați un interval de date | DATE_RANGE |
| întoarce capul | cap |
| întoarce coada | coadă |
| Descrieti | descrie |
| felie folosind numele | dataname['columnname'] |
| Tăiați folosind rânduri | nume_date[0:5] |

