Sobes.tech
Middle

Jak obejść problem przetwarzania dużych plików w Pandas, które nie mieszczą się w pamięci?

sobes.tech AI

Odpowiedź od AI

Aby przetwarzać duże pliki w Pandas, które nie mieszczą się w pamięci operacyjnej, można zastosować kilka podejść:

  1. Czytanie po częściach (chunking) Użyj parametru chunksize w funkcjach odczytu, takich jak pd.read_csv(), aby ładować dane partiami i przetwarzać je oddzielnie:
import pandas as pd

chunksize = 10**6  # liczba wierszy w jednym fragmencie
for chunk in pd.read_csv('large_file.csv', chunksize=chunksize):
    # przetwarzanie każdego fragmentu osobno
    process(chunk)
  1. Użycie bibliotek do pracy z dużymi danymi

    • Dask DataFrame — API kompatybilne z Pandas, obsługuje leniwe obliczenia i rozproszoną obróbkę.
    • Vaex — do pracy z dużymi zbiorami danych bez ładowania wszystkiego do pamięci.
  2. Optymalizacja typów danych Podczas odczytu danych jawnie określ typy kolumn, aby zmniejszyć zużycie pamięci (np. użyj category dla kolumn tekstowych z powtarzającymi się wartościami).

  3. Użycie bazy danych lub formatów obsługujących ładowanie częściowe Wczytuj dane do bazy danych (np. SQLite) i wykonuj zapytania partiami.

Łącząc odczyt po częściach i optymalizację typów, można efektywnie pracować z dużymi plikami w Pandas.