de Shubhi Asthana

Seria și DataFrame în Python

Seria si DataFrame in Python

Acum câteva luni, am urmat cursul online „Utilizarea Python pentru cercetare” oferit de Universitatea Harvard pe edX. În timp ce făceam cursul, am învățat multe concepte despre Python, NumPy, Matplotlib și PyPlot. De asemenea, am avut ocazia să lucrez la studii de caz în timpul acestui curs și am putut să-mi folosesc cunoștințele pe seturi de date reale. Pentru mai multe informații despre acest program, consultați Aici.

Am învățat două concepte importante în acest curs – Seria și DataFrame. Vreau să vi le prezint printr-un scurt tutorial.

Pentru a începe cu tutorialul, să obținem cel mai recent cod sursă Python de pe site-ul oficial Aici.

Odată ce ați instalat Python este instalat, veți utiliza o interfață grafică de utilizator numită INACTIV pentru a lucra cu Python.

Să importăm panda în spațiul nostru de lucru. Panda este o bibliotecă Python care oferă structuri de date și instrumente de analiză a datelor pentru diferite funcții.

Serie

O serie este un obiect unidimensional care poate conține orice tip de date, cum ar fi numere întregi, flotante și șiruri. Să luăm o listă de articole ca argument de intrare și să creăm un obiect Seria pentru lista respectivă.

>>> import pandas as pd
>>> x = pd.Series([6,3,4,6])
>>> x
0 6
1 3
2 4
3 6
dtype: int64

Etichetele axelor pentru datele menționate ca index. Lungimea indexului trebuie să fie aceeași cu lungimea datelor. Deoarece nu am trecut niciun index în codul de mai sus, indexul implicit va fi creat cu valori [0, 1, … len(data) -1]

Să mergem mai departe și să definim indexurile pentru date.

>>> x = pd.Series([6,3,4,6], index=[‘a’, ‘b’, ‘c’, ‘d’])
>>> x
a 6
b 3
c 4
d 6
dtype: int64

Indexul din coloana cea mai stângă se referă acum la datele din coloana din dreapta.

Putem căuta datele făcând referire la indexul acestuia:

>>> x[“c”]
4

Python ne oferă datele relevante pentru index.

Un exemplu de tip de date este dicționarul definit mai jos. Indicele și valorile se corelează cu cheile și valorile. Putem folosi indexul pentru a obține valorile datelor corespunzătoare etichetelor din index.

>>> data = {‘abc’: 1, ‘def’: 2, ‘xyz’: 3}
>>> pd.Series(data)
abc 1
def 2
xyz 3
dtype: int64

O altă caracteristică interesantă din serie este de a avea date ca valoare scalară. În acest caz, valoarea datelor se repetă pentru fiecare dintre indicii definiți.

>>> x = pd.Series(3, index=[‘a’, ‘b’, ‘c’, ‘d’])
>>> x
a 3
b 3
c 3
d 3
dtype: int64

DataFrame

Un DataFrame este un obiect bidimensional care poate avea coloane cu potențiale tipuri diferite. Diferite tipuri de intrări includ dicționare, liste, serii și chiar un alt DataFrame.

Este cel mai frecvent utilizat obiect panda.

Să mergem mai departe și să creăm un DataFrame trecând o matrice NumPy cu datetime ca indici și coloane etichetate:

>>> import numpy as np
>>> dates = pd.date_range(‘20170505’, periods = 8)
>>> dates
DatetimeIndex ([‘2017–05–05’, ‘2017–05–06’, ‘2017–05–07’, ‘2017–05–08’,
‘2017–05–09’, ‘2017–05–10’, ‘2017–05–11’, ‘2017–05–12’],
dtype=’datetime64[ns]’, freq=’D’)
>>> df = pd.DataFrame(np.random.randn(8,3), index=dates, columns=list(‘ABC’))
>>> df
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.613538 -0.052423 -1.206090
2017–05–07 0.772951 0.835798 0.345913
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
2017–05–10 0.275916 -0.420183 1.744796
2017–05–11 -0.206065 0.910706 -0.028646
2017–05–12 1.178219 0.783122 0.829979

Se creează un DataFrame cu un interval datetime de 8 zile așa cum se arată mai sus. Putem vizualiza rândurile de sus și de jos ale cadrului folosind df.head și df.tail:

>>> df.head()
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.613538 -0.052423 -1.206090
2017–05–07 0.772951 0.835798 0.345913
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
>>> df.tail()
A B C
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
2017–05–10 0.275916 -0.420183 1.744796
2017–05–11 -0.206065 0.910706 -0.028646
2017–05–12 1.178219 0.783122 0.829979

Putem observa și un rezumat statistic rapid al datelor noastre:

>>> df.describe()
A B C
count 8.000000 8.000000 8.000000
mean 0.372040 0.729842 -0.109691
std 0.731262 0.657931 1.244801
min -0.695919 -0.420183 -2.065571
25% -0.230018 0.574236 -1.079766
50% 0.444727 0.868091 0.158633
75% 0.874268 1.026228 0.612309
max 1.339559 1.508536 1.744796

De asemenea, putem aplica funcții datelor cum ar fi suma cumulativă, vizualizarea histogramelor, fuzionarea DataFrames, concatenarea și remodelarea DataFrames.

>>> df.apply(np.cumsum)
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.311661 1.456113 -3.271661
2017–05–07 1.084612 2.291911 -2.925748
2017–05–08 2.424171 3.192296 -3.963406
2017–05–09 1.728252 4.565088 -3.423654
2017–05–10 2.004169 4.144905 -1.678858
2017–05–11 1.798104 5.055611 -1.707504
2017–05–12 2.976322 5.838734 -0.877526

Puteți citi mai multe detalii despre aceste structuri de date Aici.