Optymalizacja pamięci

Pandas to popularna biblioteka w języku Python, która umożliwia szybkie i łatwe manipulowanie danymi w postaci tabelarycznej. Jedną z jej zalet jest możliwość optymalizacji pamięci, co pozwala na oszczędzenie zasobów podczas pracy z dużymi plikami danych.

Jednym ze sposobów optymalizacji pamięci w pandas jest użycie opcji low_memory=True podczas wczytywania pliku. Ta opcja powoduje, że pandas nie będzie próbował od razu wczytać całego pliku do pamięci, lecz będzie go odczytywać partiami. Dzięki temu zmniejsza się zapotrzebowanie na pamięć podczas wczytywania danych, co jest szczególnie przydatne w przypadku bardzo dużych plików.

Opcja low_memory=True ma jednak pewien minus – wczytywanie pliku partiami może być nieco wolniejsze niż wczytywanie go od razu całości. Dlatego też warto rozważyć, czy w danym przypadku faktycznie potrzebujemy optymalizacji pamięci i czy nie lepiej poświęcić trochę więcej czasu na wczytanie danych w zamian za oszczędność pamięci.

Oprócz opcji low_memory=True, istnieje również kilka innych sposobów na optymalizację pamięci podczas pracy z danymi w pandas. Możemy np. zmienić typ danych w kolumnach tak, aby zajmowały one mniej miejsca w pamięci. Do tego celu możemy użyć metody .astype() lub funkcji .to_numeric(). Możemy także usunąć niepotrzebne kolumny lub wiersze z naszej tabeli za pomocą metody .drop() lub wybierając te, które nas interesują, za pomocą metody .loc[].

Podsumowując, optymalizacja pamięci w pandas pozwala na oszczędzenie zasobów podczas pracy z dużymi plikami danych. Opcja low_memory=True umożliwia wczytywanie pliku partiami, co zmniejsza zapotrzebowanie na pamięć, ale może wydłużyć czas wczytywania danych. Inne sposoby optymalizacji pamięci to zmiana typu danych, usuwanie niepotrzebnych kolumn lub wierszy oraz wybieranie interesujących nas danych za pomocą metody .loc[]. Ważne, aby dobrze rozważyć, czy w danym przypadku optymalizacja pamięci jest konieczna i czy lepsze będzie poświęcenie trochę więcej czasu na wczytanie danych, czy też oszczędność pamięci.

  1. Użycie opcji low_memory=True podczas wczytywania pliku:
import pandas as pd

# Wczytanie pliku
df = pd.read_csv('plik.csv')

# Zmiana typu danych w kolumnie 'col1' na int
df['col1'] = df['col1'].astype('int32')

# Zmiana typu danych w kolumnie 'col2' na float
df['col2'] = df['col2'].astype('float32')

# Zmiana typu danych w kolumnie 'col3' na datę
df['col3'] = pd.to_datetime(df['col3'])

2. Zmiana typu danych w kolumnach:

import pandas as pd

# Wczytanie pliku
df = pd.read_csv('plik.csv')

# Zmiana typu danych w kolumnie 'col1' na int
df['col1'] = df['col1'].astype('int32')

# Zmiana typu danych w kolumnie 'col2' na float
df['col2'] = df['col2'].astype('float32')

# Zmiana typu danych w kolumnie 'col3' na datę
df['col3'] = pd.to_datetime(df['col3'])

3. Usuwanie niepotrzebnych kolumn lub wierszy:

import pandas as pd

# Wczytanie pliku
df = pd.read_csv('plik.csv')

# Usunięcie kolumny 'col4'
df = df.drop('col4', axis=1)

# Usunięcie wierszy, w których kolumna 'col2' ma wartość 'X'
df = df[df['col2'] != 'X']

4. Wybieranie interesujących nas danych za pomocą metody .loc[]:

import pandas as pd

# Wczytanie pliku
df = pd.read_csv('plik.csv')

# Wybieranie tylko wierszy z kolumną 'col1' równą 1
df = df.loc[df['col1'] == 1]

# Wybieranie tylko kolumn 'col1' i 'col3'
df = df[['col1', 'col3']]