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; scriepd.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 deIaș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.
Î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.