
W pracy z biblioteką Pandas w Pythonie często napotykam sytuacje, w których muszę zmienić typ danych w kolumnie. W takich przypadkach niezastąpiona jest metoda astype(). Jeśli kiedykolwiek zastanawiałeś się, jak działa pandas astype w języku Python, to ten artykuł jest dla Ciebie.
Co to jest pandas.astype()?
Metoda astype() pozwala na rzutowanie (czyli zmianę typu) danych w ramach obiektu Series lub DataFrame. Dzięki niej mogę konwertować kolumny na odpowiednie typy, co pomaga w optymalizacji pamięci oraz poprawności obliczeń.
Podstawowa składnia pandas.astype()
Metoda astype() ma stosunkowo prostą składnię:
df.astype(dtype, copy=True, errors='raise')
Poszczególne argumenty mają następujące znaczenie:
- dtype – typ danych, na który chcę przekonwertować dane.
- copy – jeśli jest ustawione na
True(domyślnie), to Pandas utworzy kopię obiektu, zamiast go modyfikować. - errors – określa sposób radzenia sobie z błędami konwersji. Możliwe wartości:
'raise'– (domyślnie) w przypadku błędu konwersji zostanie zgłoszony wyjątek.'ignore'– błędy zostaną zignorowane.
Przykład zastosowania pandas.astype()
Załóżmy, że mam następujący DataFrame:
import pandas as pd
data = {'A': ['1', '2', '3'], 'B': [4.5, 3.2, 6.8]}
df = pd.DataFrame(data)
print(df.dtypes)
Wynik:
A object
B float64
dtype: object
Kolumna A jest traktowana jako object (czyli tekst), mimo że zawiera liczby. Mogę to łatwo skorygować:
df['A'] = df['A'].astype(int)
print(df.dtypes)
Teraz wynik wygląda tak:
A int64
B float64
dtype: object
Konwersja wielu kolumn jednocześnie
Jeśli chcę zmienić typ danych w wielu kolumnach, mogę przekazać do astype() słownik:
df = df.astype({'A': 'int32', 'B': 'float32'})
To często stosowana praktyka, zwłaszcza gdy chcę zoptymalizować zużycie pamięci poprzez wybór mniejszych typów, takich jak int32 zamiast int64.
Obsługa błędów podczas konwersji
Gdy próbuję skonwertować kolumnę, która zawiera nieodpowiednie wartości (np. tekst, który nie jest liczbą), może pojawić się błąd. Przykładowo:
df = pd.DataFrame({'A': ['1', '2', 'trzy']})
df['A'] = df['A'].astype(int) # To spowoduje błąd
Aby uniknąć błędu, mogę skorzystać z parametru errors='ignore':
df['A'] = df['A'].astype(int, errors='ignore')
W takim przypadku, jeśli konwersja nie powiedzie się, Pandas pozostawi oryginalne wartości.
Konwersja na typ category
Jeśli kolumna zawiera powtarzające się wartości, mogę przekonwertować ją na typ category, co pozwala zaoszczędzić pamięć.
df['A'] = df['A'].astype('category')
Jak działa pandas astype w języku Python? Przykład zastosowania w praktyce
Spójrzmy na praktyczne zastosowanie tej metody. Załóżmy, że mam dane o produktach:
data = {'Produkt': ['Jabłko', 'Banan', 'Gruszka'], 'Cena': ['3.5', '2.1', '4.0']}
df = pd.DataFrame(data)
Kolumna Cena jest typu object, ale powinna być liczbą zmiennoprzecinkową. Poprawiam to:
df['Cena'] = df['Cena'].astype(float)
Teraz mogę swobodnie wykonywać operacje matematyczne, np. obliczyć średnią cenę:
print(df['Cena'].mean())
Podsumowanie
Metoda astype() w Pandas to niezwykle przydatne narzędzie do konwersji typów danych. Dzięki niej mogę:
- konwertować pojedyncze kolumny lub całe obiekty
DataFrame, - dostosowywać typy w celu optymalizacji pamięci,
- obsługiwać błędne konwersje dzięki parametrowi
errors, - zmieniać kolumny na typ
category.
Znając możliwości astype(), mogę lepiej zarządzać danymi i unikać problemów z niezgodnymi typami.
Inny ciekawy artykuł:
Jak działa pandas replace 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.

