
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.
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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.