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.

  • 🔘 Construit pe NumPy: Pandas necesită NumPy, care furnizează matricele din spatele fiecărei serii și DataFrame.
  • ☑️ Două structuri: Series stochează o dimensiune etichetată; DataFrame stochează rânduri și coloane de tipuri mixte.
  • Intervale de date: Funcția pd.date_range() construiește un index dintr-o dată de început, un număr de perioade și o frecvență.
  • 🧪 Inspectați mai întâi: Funcțiile head(), tail() și describe() dezvăluie forma, dispersarea și percentilele înainte de orice analiză.
  • 🛠️ Tăiați cu precizie: Parantezele denumesc selectează coloanele, loc selectează după etichetă, iar iloc selectează după poziție.
  • ⚠️ Notă privind versiunea: Aliasul de frecvență M este depreciat din Pandas 2.2; versiunile actuale așteaptă ME.

Python Tutorial Pandas: DataFrame, interval de date și utilizarea Pandas

Î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.

Aspect Pandas DataFrame cu un index de rând etichetat și coloane denumite

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, luna M și anul Y
## 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]

Întrebări frecvente

Apel pd.read_csv() cu o cale sau URLAdăugați nume pentru a eticheta coloanele, folosiți `sept` pentru un delimitator diferit și folosiți `col` pentru a păstra doar coloanele de care aveți nevoie.

isnull() le marchează, dropna() elimină rândurile sau coloanele afectate, iar fillna() înlocuiește cu o constantă sau o statistică, cum ar fi media pe coloane. Intrările lipsă sunt afișate ca NaN.

groupby() împarte rândurile în grupuri după o coloană cheie, aplică o agregare precum numărătoare, sumă sau medie fiecărui grup, apoi combină rezultatele într-un nou cadru.

Construiți o mască booleană și treceți-o între paranteze, de exemplu df[df.Age == 30]. Combinați măștile cu operatorii ampersand și pipe, încadrațiping fiecare comparație între paranteze.

pd.merge() potrivește rândurile dintr-o coloană cheie așa cum o SQL Funcția join setează modul în care este setat la inner, left, right sau outer. concat() stivuiește cadrele în loc de chei potrivite.

df.to_csv('out.csv', index=False) scrie un fișier cu virgulă, iar df.to_excel('out.xlsx') scrie o foaie de calcul. Dropping Indexul evită o primă coloană fără nume la următoarea citire.

Asistenții inteligenți artificiali profilează un nou cadru, propun apelurile descriere, grupare și plotare care merită executate și marchează coloanele cu tipuri de date impare sau multe valori nule. Confirmă fiecare sugestie în raport cu datele brute.

Da. Copilotul GitHub completează un comentariu simplu în codul Pandas funcțional într-un Jupyter celulă. RevVizualizați tipurile de date și numărul de rânduri înainte de a avea încredere în rezultat.

Rezumați această postare cu: