pd.Series() în pandas

Series și DataFrame pandas 1.0+

Creează o coloană de valori cu etichete (index): din listă, din dicționar sau dintr-o singură valoare.

Sintaxă
pd.Series(data=None, index=None, dtype=None, name=None, copy=None)

Ce face pd.Series()

Series este structura de bază din pandas: o listă de valori de același tip, în care fiecare valoare are o etichetă. Etichetele formează index-ul. Dacă nu dai un index, pandas pune numerele 0, 1, 2, …

Când creezi un Series dintr-un dicționar, cheile devin index, iar valorile devin datele. Atributul name dă un nume seriei (devine numele coloanei dacă o pui într-un DataFrame), iar values returnează valorile fără etichete.

Fiecare coloană a unui DataFrame este un Series: df["nota"] returnează un Series cu indexul tabelului.

Parametri

Parametru Descriere
data Valorile: o listă, un dicționar, un array NumPy sau o singură valoare (care se repetă pentru tot indexul).
index Etichetele, în aceeași ordine ca valorile. Trebuie să aibă aceeași lungime ca data (când data e listă).
dtype Tipul datelor, de exemplu "int64", "float64", "str". Implicit pandas îl deduce.
name Numele seriei.
copy Dacă se copiază datele primite.

Ce returnează

Un obiect pd.Series.

Exemple

Exemplul 1: Din listă, cu index implicit

Fără index, etichetele sunt 0, 1, 2, 3. values dă valorile ca array NumPy, iar index dă etichetele.

import pandas as pd

note = pd.Series([9, 7, 10, 8])
print(note)
print(note.values)
print(note.index)

Rezultat

0     9
1     7
2    10
3     8
dtype: int64
[ 9  7 10  8]
RangeIndex(start=0, stop=4, step=1)

Exemplul 2: Din dicționar, cu nume

Cheile dicționarului devin index. Accesezi o valoare după etichetă, ca la dicționar.

import pandas as pd

vanzari = pd.Series({"ianuarie": 1200, "februarie": 950, "martie": 1430}, name="vânzări (lei)")
print(vanzari)
print(vanzari["martie"])
print(vanzari.name)

Rezultat

ianuarie     1200
februarie     950
martie       1430
Name: vânzări (lei), dtype: int64
1430
vânzări (lei)

Exemplul 3: Index propriu și operații pe toată seria

Operațiile se aplică fiecărei valori, fără buclă. O condiție între paranteze drepte păstrează doar valorile care o îndeplinesc.

import pandas as pd

pret = pd.Series([4.5, 7.0, 12.0], index=["pâine", "lapte", "cașcaval"], name="preț")
print(pret * 2)
print(pret[pret > 5])
print(pret.sum())

Rezultat

pâine        9.0
lapte       14.0
cașcaval    24.0
Name: preț, dtype: float64
lapte        7.0
cașcaval    12.0
Name: preț, dtype: float64
23.5

Greșeli frecvente

  • Dai o listă și un index de lungimi diferite: pd.Series([1, 2, 3], index=["a", "b"]) dă ValueError.
  • Ceri o valoare după poziție cu s[0] când indexul are etichete text. În pandas 3 primești KeyError: 0; pentru poziție folosește s.iloc[0].
  • Creezi seria dintr-un dicționar și dai și index: pandas nu redenumește cheile, ci le alege pe cele din index, iar etichetele care lipsesc din dicționar primesc NaN.

Comenzi înrudite

  • pd.DataFrame(): Creează un tabel cu rânduri și coloane, dintr-un dicționar de liste, dintr-o listă de dicționare sau dintr-o listă de liste.
  • DataFrame.iloc: Selectează rânduri și coloane după poziție (0, 1, 2, …), ca la listele Python, cu interval care exclude capătul din dreapta.
  • DataFrame.loc: Selectează rânduri și coloane după etichete (numele din index și numele coloanelor) și permite modificarea valorilor.
  • unique() / nunique(): unique returnează valorile distincte dintr-o coloană, în ordinea apariției; nunique spune câte valori distincte sunt.