Jak działa pandas astype w języku Python? Przykład zastosowania

Jak działa pandas astype w języku Python? Przykład zastosowania
„`html

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
KajoDataSpace