pd.read_json() / DataFrame.to_json() în pandas

Citește date JSON într-un DataFrame și transformă un DataFrame în JSON, de exemplu ca listă de obiecte cu orient="records".

Sintaxă
pd.read_json(cale_sau_buffer, *, orient=None, typ='frame', dtype=None, lines=False, ...)
df.to_json(cale=None, *, orient=None, force_ascii=True, indent=None, lines=False, index=None, ...)

Ce face pd.read_json() / DataFrame.to_json()

df.to_json transformă tabelul în text JSON. Forma folosită cel mai des este orient="records": o listă de obiecte, câte unul pentru fiecare rând, cu numele coloanelor drept chei. Fără cale, metoda returnează textul; cu o cale, îl scrie în fișier.

pd.read_json face invers. Primește o cale de fișier sau un obiect de tip fișier. Un text JSON din cod se dă împachetat în io.StringIO(text): transmiterea directă a unui șir JSON este depreciată și dă avertisment.

Implicit to_json scrie diacriticele ca secvențe \u0219; cu force_ascii=False rămân ca litere. Parametrul lines=True lucrează cu formatul JSON Lines, un obiect pe fiecare rând.

Parametri

Parametru Descriere
path_or_buf La read_json: calea fișierului sau un obiect de tip fișier (io.StringIO). La to_json: unde se scrie; lipsă = returnează textul.
orient Forma JSON-ului: "records" (listă de obiecte), "columns" (implicit pentru DataFrame), "index", "split", "values", "table".
lines Dacă True, un obiect JSON pe fiecare rând (JSON Lines). Merge cu orient="records".
typ La read_json: "frame" (implicit) sau "series".
dtype La read_json: tipurile coloanelor sau False ca să nu le deducă.
force_ascii La to_json: dacă transformă caracterele non-ASCII în secvențe \u.... Implicit True.
indent La to_json: câte spații de indentare, pentru un JSON ușor de citit.

Ce returnează

read_json: un DataFrame (sau Series cu typ="series"). to_json: textul JSON când nu dai cale, altfel None.

Exemple

Exemplul 1: DataFrame în JSON și înapoi

orient="records" dă o listă de obiecte. Textul se citește înapoi prin io.StringIO.

import io
import pandas as pd

df = pd.DataFrame({"nume": ["Ana", "Mihai"], "vârstă": [17, 16], "medie": [9.45, 8.7]})
text = df.to_json(orient="records", force_ascii=False)
print(text)

inapoi = pd.read_json(io.StringIO(text))
print(inapoi)

Rezultat

[{"nume":"Ana","vârstă":17,"medie":9.45},{"nume":"Mihai","vârstă":16,"medie":8.7}]
    nume  vârstă  medie
0    Ana      17   9.45
1  Mihai      16   8.70

Exemplul 2: Fișier JSON indentat, cu diacritice

indent=2 face fișierul ușor de citit, iar force_ascii=False păstrează diacriticele ca litere.

import pandas as pd

df = pd.DataFrame({"oraș": ["Iași", "Timișoara"], "locuitori": [271692, 250849]})
df.to_json("orase.json", orient="records", force_ascii=False, indent=2)

with open("orase.json", encoding="utf-8") as f:
    print(f.read())

print(pd.read_json("orase.json"))

Rezultat

[
  {
    "oraș":"Iași",
    "locuitori":271692
  },
  {
    "oraș":"Timișoara",
    "locuitori":250849
  }
]
        oraș  locuitori
0       Iași     271692
1  Timișoara     250849

Exemplul 3: JSON Lines: un obiect pe rând

Fișierele de jurnal (log) și exporturile mari folosesc des formatul JSON Lines. Se citește cu lines=True.

import io
import pandas as pd

jurnal = """{"utilizator": "ana", "acțiune": "login", "durată": 3}
{"utilizator": "mihai", "acțiune": "comandă", "durată": 41}
{"utilizator": "ana", "acțiune": "logout", "durată": 1}
"""
df = pd.read_json(io.StringIO(jurnal), lines=True)
print(df)
print(df["durată"].sum())

Rezultat

  utilizator  acțiune  durată
0        ana    login       3
1      mihai  comandă      41
2        ana   logout       1
45

Greșeli frecvente

  • Dai textul JSON direct: pd.read_json('[{"a": 1}]'). Este depreciat și afișează un avertisment; scrie pd.read_json(io.StringIO(text)).
  • Folosești to_json() fără orient și te aștepți la o listă de rânduri. Implicit un DataFrame se scrie pe coloane ({"nume": {"0": "Ana", ...}}); pentru listă de obiecte dă orient="records".
  • Vezi Ia\u0219i în fișier în loc de Iași. Nu e o eroare, dar pentru un fișier citibil adaugă force_ascii=False.

Comenzi înrudite

  • pd.read_csv(): Citește un fișier CSV (valori separate prin virgulă sau alt separator) într-un DataFrame.
  • 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.
  • 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.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: pd.read_json() / DataFrame.to_json()

Ai o nelămurire despre utilizarea comenzii pd.read_json() / DataFrame.to_json() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.