Użycie zewnętrznej pamięci

Biblioteka Pandas umożliwia używanie zewnętrznej pamięci, takiej jak pamięć wirtualna lub dysk twardy, do przechowywania danych podczas przetwarzania. Jest to szczególnie przydatne, gdy mamy do czynienia z dużymi plikami, które są zbyt duże, aby zmieścić się w pamięci RAM. Dzięki temu możemy przetwarzać pliki o dowolnym rozmiarze, bez obawy o brak pamięci.

Pandas udostępnia kilka narzędzi do używania zewnętrznej pamięci, takich jak:

  1. pd.read_csv(): ta metoda pozwala na odczyt pliku CSV do DataFrame’u z opcją chunksize, która pozwala na określenie, ile danych ma być wczytanych do pamięci w jednym kawałku. Możemy wtedy iterować przez kawałki danych i wykonywać różne operacje, takie jak filtrowanie czy grupowanie, a następnie zapisać wynik na dysku twardym lub w innej formie. Przykład:
import pandas as pd

# wczytanie dużego pliku CSV z użyciem chunksize
chunksize = 100000
for chunk in pd.read_csv('big_file.csv', chunksize=chunksize):
  # wykonaj operacje na danych
  processed_chunk = chunk[chunk['column1'] > 0]
  
  # zapisz wynik na dysku
  processed_chunk.to_csv('processed_data.csv', mode='a', index=False)

2.pd.read_sql(): ta metoda pozwala na odczyt danych z bazy danych do DataFrame’u za pomocą zapytania SQL. Możemy wtedy wykorzystać klauzulę LIMIT w zapytaniu, aby ograniczyć liczbę wczytanych danych w jednym kawałku. Przykład:

import pandas as pd
import mysql.connector

# połączenie z bazą danych
conn = mysql.connector.connect(user='user', password='password', host='host', database='database')

# wczytanie danych z bazy danych z użyciem LIMIT
df = pd.read_sql('SELECT * FROM table LIMIT 100000', con=conn)

# wykonaj operacje na danych
processed_df = df[df['column1'] > 0]

# zapisz wynik na dysku
processed_df.to_csv('processed_data.csv', index=False)

# zamknij połączenie z bazą danych
conn.close()

Używanie zewnętrznej pamięci jest bardzo przydatnym narzędziem w przetwarzaniu dużych zbiorów danych w Pandas i pozwala na łatwe i efektywne przetwarzanie danych, nawet gdy pamięć RAM jest ograniczona.