Efektywne przechowywanie zebranych danych
Zapisywanie do CSV/JSON/Parquet, bezpieczne dopisywanie, deduplikacja i przyrostowe gromadzenie.
Efektywne przechowywanie zebranych danych to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Od surowych odpowiedzi do zapisanych danych
Po zebraniu danych musisz je przechować, aby można było je ponownie wczytać, udostępnić i analizować. Właściwy format oraz kilka dobrych praktyk mają duży wpływ na szybkość i zużycie miejsca na dysku.
W tej lekcji omówiono formaty CSV i Parquet, dołączanie partii danych oraz usuwanie duplikatów.
JSON do DataFrame
Odpowiedzi interfejsów API to zwykle listy słowników. pd.DataFrame bezpośrednio przekształca je w tabelę gotową do zapisania.
import pandas as pd
records = [
{"id": 1, "name": "A", "score": 9.5},
{"id": 2, "name": "B", "score": 8.0},
]
df = pd.DataFrame(records)
print(df)Zapisywanie do CSV za pomocą df.to_csv
CSV jest uniwersalny i czytelny dla człowieka. Zapisuj dane za pomocą to_csv; przekaż index=False, aby indeks wierszy nie został zapisany jako niepotrzebna kolumna.
df.to_csv("data.csv", index=False)
# Reload
df2 = pd.read_csv("data.csv")Ograniczenia formatu CSV
CSV jest wygodny, ale ma w zastosowaniach związanych z AI pewne wady:
- brak typów — wszystko jest przechowywane jako tekst, więc typy danych są ponownie zgadywane podczas wczytywania
- duże pliki i brak kompresji domyślnie
- powolny odczyt dużych zbiorów danych
W przypadku większych danych lub danych wielokrotnie wczytywanych lepszy jest Parquet.
Zapisywanie do Parquet za pomocą df.to_parquet
Parquet to kolumnowy format binarny. Zachowuje typy danych, dobrze się kompresuje i wczytuje się znacznie szybciej niż CSV.
Wymaga zainstalowania silnika, takiego jak pyarrow.
df.to_parquet("data.parquet", index=False)
df2 = pd.read_parquet("data.parquet")
print(df2.dtypes) # types preserved, no re-guessingCSV a Parquet — kiedy używać którego formatu
Praktyczne zasady:
- CSV: niewielkie dane, udostępnianie za pomocą narzędzi innych niż Python, szybki wgląd
- Parquet: duże dane, wielokrotne wczytywanie, zachowanie typów, potoki analityczne
W przypadku zadań zbierających dane, które będą zasilać modele, preferuj Parquet.
Dołączanie nowych partii za pomocą pd.concat
Zbieranie danych często odbywa się partiami. Połącz istniejący obiekt DataFrame z nowym za pomocą pd.concat.
ignore_index=True ponownie numeruje indeks, dzięki czemu pozostaje on uporządkowany.
new_batch = pd.DataFrame(new_records)
df = pd.concat([df, new_batch], ignore_index=True)
print(len(df))Bezpośrednie dołączanie danych do pliku CSV
Aby dołączyć dane do istniejącego pliku CSV bez wczytywania go, otwórz plik w trybie dołączania i pomiń nagłówek przy kolejnych zapisach.
import os
header = not os.path.exists("data.csv")
new_batch.to_csv("data.csv", mode="a", header=header, index=False)Dlaczego usuwać duplikaty
Wielokrotne uruchamianie zbierania danych, nakładające się strony lub ponowienia prób mogą tworzyć zduplikowane wiersze. Duplikaty zawyżają statystyki i mogą przenikać między zbiorami treningowym i testowym, pogarszając ocenę modelu.
Po połączeniu partii danych zawsze należy usunąć duplikaty.
drop_duplicates(subset=[id])
Należy użyć stabilnego, unikatowego klucza (często jest to id) wraz z drop_duplicates(subset=...). Usuwa to powtórzenia, nawet jeśli inne pola nieznacznie się zmieniły.
keep="last" zachowuje najnowszą wersję każdego identyfikatora.
df = df.drop_duplicates(subset=["id"], keep="last").reset_index(drop=True)
print(len(df), "unique rows")Pomocnik do zapisywania i scalania
Należy połączyć wszystkie elementy: wczytać istniejący plik Parquet, jeśli jest dostępny, połączyć nową partię, usunąć duplikaty według identyfikatora i ponownie zapisać dane. Operację można bezpiecznie uruchamiać wielokrotnie.
import os
import pandas as pd
def save_merge(new_df, path="data.parquet", key="id"):
if os.path.exists(path):
old = pd.read_parquet(path)
new_df = pd.concat([old, new_df], ignore_index=True)
new_df = new_df.drop_duplicates(subset=[key], keep="last")
new_df.to_parquet(path, index=False)
return new_dfSzybki test: wybór formatu
Wielokrotnie wczytywany jest duży zbiór danych do trenowania modelu, a typy danych muszą zostać zachowane przy szybkim odczycie.
Podsumowanie: wydajne przechowywanie danych
Można już prawidłowo zapisywać zebrane dane:
pd.DataFramedo przekształcania rekordów JSON w tabelęto_csv(index=False)dla przenośnego tekstu orazto_parquetdla szybkiego przechowywania danych wraz z typamipd.concat(ignore_index=True)lub tryb dopisywania do pliku CSV dla partii danychdrop_duplicates(subset=["id"])do zachowania unikatowości wierszy
Następnie: praca z rzeczywistymi publicznymi interfejsami API danych.
Często zadawane pytania
Czy lekcja „Efektywne przechowywanie zebranych danych” jest bezpłatna?
Tak — pełny tekst „Efektywne przechowywanie zebranych danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Efektywne przechowywanie zebranych danych”?
Zapisywanie do CSV/JSON/Parquet, bezpieczne dopisywanie, deduplikacja i przyrostowe gromadzenie. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Efektywne przechowywanie zebranych danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy REST API do gromadzenia danych
- Stronicowanie i gromadzenie dużych zbiorów danych
- Efektywne przechowywanie zebranych danych
- Praca z publicznymi interfejsami API danych