Ce face pd.read_csv()
pd.read_csv citește un fișier text în care fiecare rând este o înregistrare, iar valorile sunt separate printr-un caracter (de obicei virgulă). Primul rând este luat drept antet, cu numele coloanelor. Tipul fiecărei coloane este dedus: numere întregi, numere cu zecimale, text.
Fișierele CSV salvate din Excel cu setări românești folosesc adesea ; ca separator și virgula pentru zecimale: pentru ele dai sep=";" și decimal=",". Cu usecols citești doar unele coloane, cu dtype impui tipul (de exemplu text pentru coduri cu zerouri la început), iar cu parse_dates transformi coloanele cu date în tip dată.
Primul argument poate fi o cale de fișier, un URL sau un obiect de tip fișier (de exemplu io.StringIO cu text).
Parametri
| Parametru | Descriere |
|---|---|
filepath_or_buffer |
Calea fișierului, un URL sau un obiect de tip fișier. |
sep |
Separatorul dintre valori. Implicit ",". |
header |
Rândul cu numele coloanelor (implicit primul). None dacă fișierul nu are antet. |
index_col |
Coloana (nume sau poziție) folosită ca index al rândurilor. |
usecols |
Lista coloanelor de citit; restul sunt ignorate. |
dtype |
Tipul impus, pentru tot tabelul sau pe coloane: {"cod": str}. |
parse_dates |
Lista coloanelor de transformat în dată calendaristică. |
decimal |
Caracterul pentru zecimale. Implicit "."; pentru fișiere românești ",". |
encoding |
Codificarea fișierului, de exemplu "utf-8" sau "cp1250". |
nrows |
Câte rânduri de date să citească. |
Ce returnează
Un DataFrame (sau un cititor pe bucăți, dacă dai chunksize sau iterator=True).
Exemple
Exemplul 1: Citirea unui CSV simplu
Exemplul scrie întâi fișierul, apoi îl citește. pandas deduce tipurile: text (str), întregi și numere cu zecimale.
import pandas as pd
with open("elevi.csv", "w", encoding="utf-8") as f:
f.write("nume,oraș,vârstă,medie\n")
f.write("Ana,Iași,17,9.45\n")
f.write("Mihai,Cluj,16,8.70\n")
f.write("Ioana,Brașov,17,9.90\n")
df = pd.read_csv("elevi.csv")
print(df)
print(df.dtypes)
Rezultat
nume oraș vârstă medie
0 Ana Iași 17 9.45
1 Mihai Cluj 16 8.70
2 Ioana Brașov 17 9.90
nume str
oraș str
vârstă int64
medie float64
dtype: object
Exemplul 2: Separator ;, zecimale cu virgulă, usecols și dtype
Cu dtype={"cod": str}, codul 007 rămâne text, cu zerourile la început. usecols lasă deoparte coloana oraș.
import pandas as pd
with open("salarii.csv", "w", encoding="utf-8") as f:
f.write("cod;nume;oraș;salariu\n")
f.write("007;Ana;Iași;5200,50\n")
f.write("012;Mihai;Cluj;6100,00\n")
f.write("103;Ioana;Brașov;4800,75\n")
df = pd.read_csv(
"salarii.csv",
sep=";",
decimal=",",
usecols=["cod", "nume", "salariu"],
dtype={"cod": str},
)
print(df)
print(df["salariu"].sum())
Rezultat
cod nume salariu
0 007 Ana 5200.50
1 012 Mihai 6100.00
2 103 Ioana 4800.75
16101.25
Exemplul 3: Date calendaristice ca index
parse_dates transformă textul în dată, iar index_col face din coloana zi indexul. Apoi poți selecta rânduri după lună.
import pandas as pd
with open("vanzari.csv", "w", encoding="utf-8") as f:
f.write("zi,vânzări\n")
f.write("2026-01-15,1200\n")
f.write("2026-01-28,950\n")
f.write("2026-02-10,1430\n")
df = pd.read_csv("vanzari.csv", parse_dates=["zi"], index_col="zi")
print(df)
print(df.index.dtype)
print(df.loc["2026-01"])
Rezultat
vânzări
zi
2026-01-15 1200
2026-01-28 950
2026-02-10 1430
datetime64[us]
vânzări
zi
2026-01-15 1200
2026-01-28 950
Greșeli frecvente
- Citești un CSV cu
;fărăsep=";": rezultatul are o singură coloană, cu tot rândul ca text. - Coduri poștale sau coduri de produs ca
007devin numărul7. Dădtype={"cod": str}. - Fișier salvat din Excel pe Windows cu diacritice:
UnicodeDecodeError. Încearcăencoding="cp1250"sau salvează fișierul ca UTF-8. - Dai textul CSV direct ca prim argument: pandas îl ia drept nume de fișier și dă
FileNotFoundError. Pentru un text din cod foloseșteio.StringIO(text).
Comenzi înrudite
DataFrame.to_csv(): Salvează un DataFrame într-un fișier CSV sau, fără cale, returnează textul CSV ca șir.pd.read_excel() / DataFrame.to_excel(): Citește foi de calcul Excel (.xlsx) într-un DataFrame și salvează un DataFrame în Excel. Pentru .xlsx are nevoie de openpyxl.head() / tail(): Afișează primele (head) sau ultimele (tail) n rânduri dintr-un DataFrame sau Series. Implicit 5.DataFrame.info(): Afișează un rezumat al tabelului: numărul de rânduri, coloanele, câte valori completate are fiecare, tipurile și memoria.pd.to_datetime(): Transformă text sau numere în date calendaristice (datetime64), ca să poți calcula cu ele și să folosești accesorul .dt.