Cum să procesezi date JSON în Python
In this tutorial, you'll learn about Cum să procesezi date JSON în Python. We cover key concepts, practical examples, and best practices.
Procesarea datelor JSON în Python se face cu biblioteca json pentru serializare și cu pandas.json_normalize pentru aplatizarea structurilor JSON imbricate în tabele.
The Problem
API-urile moderne returnează aproape întotdeauna date în format JSON, adesea cu structuri imbricate (liste, dicționare în interior). Citirea directă în pandas produce coloane care conțin dicționare, nu valori simple, făcând analiza imposibilă.
The Wrong Way
import pandas as pd
data = [
{"id": 1, "nume": "Ana", "adresa": {"oras": "București", "strada": "X"}},
{"id": 2, "nume": "Ion", "adresa": {"oras": "Cluj", "strada": "Y"}}
]
df = pd.DataFrame(data)
print(df)
Output:
id nume adresa
0 1 Ana {'oras': 'București', 'strada': 'X'}
1 2 Ion {'oras': 'Cluj', 'strada': 'Y'}
Problemă: Coloana adresa conține dicționare — nu poți accesa oras direct.
The Right Way
import pandas as pd
data = [
{"id": 1, "nume": "Ana", "adresa": {"oras": "București", "strada": "X"}},
{"id": 2, "nume": "Ion", "adresa": {"oras": "Cluj", "strada": "Y"}}
]
df = pd.json_normalize(data, sep="_")
print(df)
Output:
id nume adresa_oras adresa_strada
0 1 Ana București X
1 2 Ion Cluj Y
Step-by-Step Fix
1. Citește JSON din fișier
import json
with open("date.json", "r", encoding="utf-8") as f:
data = json.load(f)
2. Normalizează structurile imbricate
df = pd.json_normalize(data, record_path="comenzi", meta=["id", "nume"])
3. Salvează înapoi ca JSON
df.to_json("output.json", orient="records", force_ascii=False)
Prevention Tips
- Folosește
json.load()pentru citire șijson.dump()pentru scriere - Aplică
json_normalize()când JSON-ul conține obiecte în interior - Specifică
record_pathpentru a extrage liste imbricate în rânduri separate
Common Mistakes
pd.DataFrame(data)direct pe JSON imbricat — coloanele conțin dicționare, nu valori- Fără
encodingla citire — caractere speciale (ș, ț, ă) devin greșite - Ignorarea
record_path— listele imbricate nu se expandează automat orient="index"în loc de"records"— JSON-ul rezultat e greu de citit- Fără
force_ascii=False— caracterele Unicode scapă în\uxxxx
FAQ
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu pandas pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro