
Jak działa pandas memory_usage w języku Python? Przykład zastosowania
Kiedy pracujemy z dużymi zbiorami danych w bibliotece pandas, warto zwrócić uwagę na zużycie pamięci. Python, będący językiem dynamicznym, nie zawsze jest optymalny pod względem zarządzania pamięcią, dlatego znajomość narzędzi pozwalających monitorować jej wykorzystanie jest niezwykle przydatna. Jednym z nich jest pandas.memory_usage(). W tym artykule omówię, jak działa ta funkcja, w jakich sytuacjach warto z niej korzystać oraz jakie daje nam możliwości optymalizacji.
Czym jest pandas.memory_usage()?
Funkcja memory_usage() w pandas pozwala sprawdzić, ile pamięci zajmują poszczególne kolumny w obiekcie DataFrame lub Series. Dzięki temu łatwo można zidentyfikować zmienne, które pochłaniają najwięcej zasobów i podjąć kroki w celu ich optymalizacji.
Podstawowe użycie pandas.memory_usage()
Spójrzmy na przykład. Najpierw zaimportujemy bibliotekę pandas i utworzymy przykładowy DataFrame:
import pandas as pd
# Tworzymy przykładowy DataFrame
df = pd.DataFrame({
"A": range(10000),
"B": [True, False] * 5000,
"C": [1.5] * 10000,
"D": ["tekst"] * 10000
})
# Sprawdzamy zużycie pamięci
print(df.memory_usage())
Wynikiem działania tej funkcji będzie seria, w której klucze reprezentują nazwy kolumn, a wartości pokazują ilość bajtów zajmowanych przez każdą z nich.
Interpretacja wyników
Wyniki mogłyby wyglądać mniej więcej tak:
Index 128
A 80000
B 10000
C 80000
D 80000
dtype: int64
Oznacza to, że:
- Indeks naszego
DataFramezajmuje 128 bajtów. - Kolumna
A, zawierająca liczby całkowite, zajmuje 80 000 bajtów. - Kolumna
B, czyli wartości boolean, zajmuje tylko 10 000 bajtów. - Kolumny
CiDzajmują kolejne 80 000 bajtów.
Warto zwrócić uwagę, że kolumny liczbowe zajmują stosunkowo dużo pamięci. W takich przypadkach czasem warto zmienić typ danych na mniej wymagający pod względem przestrzeni.
Opcja deep – dokładniejsze obliczenia
Domyślnie memory_usage() nie uwzględnia rzeczywistego zużycia pamięci przez typy obiektowe (np. string). Można to jednak zmienić, używając parametru deep=True:
print(df.memory_usage(deep=True))
Wyniki mogą wtedy wyglądać inaczej, ponieważ pandas dokładniej analizuje zawartość kolumn typu object. Ma to szczególne znaczenie przy pracy z dużymi zbiorami zawierającymi napisy.
Zmniejszanie zużycia pamięci
Gdy już wiemy, które kolumny pochłaniają najwięcej pamięci, możemy spróbować je zoptymalizować. Oto kilka popularnych strategii:
- Konwersja typów – Warto zamieniać
int64naint32lubint16, jeśli zakres liczb na to pozwala. - Przechowywanie zmiennych logicznych jako bool – Typ
boolzajmuje znacznie mniej przestrzeni niżint. - Zamiana stringów na kategorie – Kolumny zawierające powtarzające się wartości mogą być przekonwertowane na typ
category, co drastycznie zmniejsza zużycie pamięci.
Przykładowa optymalizacja
Sprawdźmy, jak można poprawić wydajność przechowywania danych:
df_opt = df.copy()
df_opt["A"] = df_opt["A"].astype("int32") # Mniejszy int
df_opt["B"] = df_opt["B"].astype("bool") # Zmieniamy na bool
df_opt["D"] = df_opt["D"].astype("category") # Zamieniamy stringi na kategorie
print(df_opt.memory_usage(deep=True))
Ta prosta optymalizacja może zmniejszyć zużycie pamięci nawet o kilkadziesiąt procent!
Podsumowanie
Funkcja pandas.memory_usage() to potężne narzędzie do analizy pamięci zużywanej przez nasze dane. Dzięki niej łatwo zidentyfikować problematyczne kolumny, a następnie podjąć odpowiednie działania optymalizacyjne. Jeśli pracujemy z dużymi zbiorami, zdecydowanie warto o niej pamiętać, ponieważ nawet drobne zmiany w strukturze danych mogą mieć istotny wpływ na wydajność całej aplikacji.
Inny ciekawy artykuł:
Jak działa pandas info 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.

