
Jak działa pandas to_json w języku Python? Przykład zastosowania
Python to język, który zyskał ogromną popularność w analizie danych, a biblioteka pandas jest jednym z jego najpotężniejszych narzędzi do manipulacji danymi. Gdy już mamy dane w pandas DataFrame, często zachodzi potrzeba ich zapisania w formacie JSON. Właśnie do tego służy metoda to_json(). W tym artykule przyjrzymy się jej działaniu i praktycznym przykładowym zastosowaniom.
Co robi pandas to_json?
Metoda to_json() w pandas konwertuje obiekt DataFrame lub Series na format JSON. Jest to szczególnie przydatne podczas przesyłania danych w aplikacjach internetowych, zapisu do pliku czy komunikacji z API.
Podstawowe użycie to_json()
Najprostszy sposób na użycie to_json() to konwersja DataFrame na tekstowy JSON:
import pandas as pd
# Tworzenie przykładowego DataFrame
data = {'Imię': ['Anna', 'Jan', 'Piotr'],
'Wiek': [25, 30, 22]}
df = pd.DataFrame(data)
# Konwersja do JSON
json_data = df.to_json()
print(json_data)
Domyślnie to_json() zwraca JSON w formacie obiektów słownika (dict), gdzie klucze to indeksy kolumn.
Dostępne orientacje JSON
Metoda to_json() pozwala na określenie struktury JSON-a za pomocą parametru orient. Oto kilka dostępnych opcji:
| Wartość orient | Opis | Przykład |
|---|---|---|
split |
Dzielenie na indeks, kolumny i wartości | {"columns": [...], "index": [...], "data": [[...], [...]]} |
records |
Lista słowników, przydatna dla API | [{"Imię": "Anna", "Wiek": 25}, {"Imię": "Jan", "Wiek": 30}] |
index |
Słownik, gdzie klucze to indeksy | {"0": {"Imię": "Anna", "Wiek": 25}, "1": {"Imię": "Jan", "Wiek": 30}} |
columns |
Słownik, gdzie klucze to nazwy kolumn | {"Imię": {"0": "Anna", "1": "Jan"}, "Wiek": {"0": 25, "1": 30}} |
Przykłady zastosowania różnych orientacji
JSON jako lista rekordów
Jeśli chcemy otrzymać listę słowników, możemy użyć opcji records:
json_records = df.to_json(orient='records')
print(json_records)
Wynik:
[{"Imię": "Anna", "Wiek": 25}, {"Imię": "Jan", "Wiek": 30}, {"Imię": "Piotr", "Wiek": 22}]
JSON z kluczami jako indeksy
Użycie index powoduje, że kluczami w JSON-ie są indeksy DataFrame:
json_index = df.to_json(orient='index')
print(json_index)
Wynik:
{"0": {"Imię": "Anna", "Wiek": 25}, "1": {"Imię": "Jan", "Wiek": 30}, "2": {"Imię": "Piotr", "Wiek": 22}}
Zapis JSON do pliku
Jeśli chcemy zapisać dane do pliku JSON, możemy to zrobić w prosty sposób:
df.to_json("dane.json", orient="records", indent=4)
Dzięki temu plik dane.json zostanie zapisany w formacie JSON z wcięciami (przyjazny dla czytania).
Obsługa wartości NaN
Domyślnie pandas zapisuje wartości NaN jako null w JSON-ie. Możemy to jednak zmienić:
import numpy as np
df_with_nan = pd.DataFrame({'A': [1, np.nan, 3]})
json_na_as_null = df_with_nan.to_json()
json_na_as_string = df_with_nan.to_json(null_value='string')
print(json_na_as_null) # {"A":{"0":1,"1":null,"2":3}}
print(json_na_as_string) # {"A":{"0":1,"1":"string","2":3}}
Podsumowanie
Metoda to_json() w bibliotece pandas jest niezwykle elastyczna i przydatna przy eksporcie danych do formatu JSON. Dzięki różnym wartościom parametru orient możemy dostosować strukturę wyniku do naszych potrzeb. Warto również pamiętać o możliwościach obsługi wartości NaN oraz opcji zapisu do pliku.
Inny ciekawy artykuł:
Jak działa pandas to_sql w języku Python? Przykład zastosowania
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

