
W pracy z danymi w Pythonie jednym z kluczowych narzędzi jest biblioteka pandas. Często zdarza się, że dane liczbowe przechowywane są jako ciągi znaków (stringi), co utrudnia wykonywanie operacji matematycznych czy analizy statystycznej. W takich przypadkach z pomocą przychodzi funkcja pandas.to_numeric()
, która umożliwia konwersję wartości do typów numerycznych. W tym artykule przeanalizuję, jak działa ta funkcja, jakie ma zastosowania oraz jakie pułapki mogą się z nią wiązać.
Co to jest pandas.to_numeric()
?
Funkcja pandas.to_numeric()
jest częścią biblioteki pandas i służy do konwersji obiektów na liczby. Obsługuje ona różne typy wejściowe, takie jak:
- ciągi znaków zawierające liczby,
- liczby całkowite (
int
), - liczby zmiennoprzecinkowe (
float
), - wartości
NaN
(not a number), - inne wartości możliwe do skonwertowania.
Jest to niezwykle przydatne podczas przetwarzania danych, gdzie mogą występować różne typy wartości mieszane w jednej kolumnie.
Jak używać pandas.to_numeric()
?
Podstawowa składnia funkcji wygląda następująco:
import pandas as pd
pd.to_numeric(arg, errors='raise', downcast=None)
Gdzie:
arg
– seria lub pojedyncza wartość do konwersji,errors
– sposób obsługi błędów ('raise'
,'coerce'
lub'ignore'
),downcast
– próba zmniejszenia rozmiaru wartości liczbowych ('integer'
,'float'
).
Obsługa błędów w pandas.to_numeric()
Funkcja posiada parametr errors
, który pozwala kontrolować, co dzieje się w przypadku napotkania niekonwertowalnych wartości:
'raise'
(domyślnie) – powoduje błąd, jeśli konwersja się nie powiedzie,'coerce'
– zamienia niepoprawne wartości naNaN
,'ignore'
– pozostawia wartości bez zmian.
Przykładowo:
df = pd.DataFrame({'liczby': ['1', '2', 'trzy', '4.5', '6']})
df['liczby'] = pd.to_numeric(df['liczby'], errors='coerce')
print(df)
Po uruchomieniu tego kodu otrzymamy:
liczby |
---|
1.0 |
2.0 |
NaN |
4.5 |
6.0 |
Niezmienialna wartość „trzy” została przemieniona w NaN
, ponieważ ustawiliśmy opcję 'coerce'
.
Zoptymalizowane przechowywanie danych: parametr downcast
Jeśli zależy nam na zmniejszeniu ilości zajmowanej pamięci (np. pracując na dużych zbiorach danych), możemy skorzystać z parametru downcast
, który próbuje zmienić typ na bardziej optymalny.
Przykład:
df['liczby'] = pd.to_numeric(df['liczby'], downcast='integer')
print(df.dtypes)
To spowoduje, że liczby, które mogą być przechowywane jako int8
lub int16
, zostaną odpowiednio zoptymalizowane.
Kiedy warto stosować pandas.to_numeric()
?
Funkcja ta jest najbardziej przydatna w poniższych przypadkach:
- Importowanie danych z plików CSV czy Excel, gdzie liczby zapisane są jako tekst.
- Obsługa danych, w których mogą występować wartości tekstowe wymagające konwersji.
- Optymalizacja pamięci poprzez konwersję na odpowiednie typy danych.
- Filtrowanie i czyszczenie danych, np. zamiana błędnych wartości na
NaN
.
Pułapki i błędy przy używaniu pandas.to_numeric()
Podczas korzystania z tej funkcji warto uważać na pewne pułapki:
- Wartości mieszane (np. liczby + tekst) mogą wymagać dodatkowej obróbki.
- Nie zawsze konwersja będzie możliwa – w takich przypadkach warto użyć
errors='coerce'
. downcast
może prowadzić do nieoczekiwanych rezultatów, jeśli dane zostaną zaokrąglone lub stracą precyzję.
Podsumowanie
pandas.to_numeric()
to niezwykle przydatna funkcja w języku Python, pozwalająca na konwersję różnych formatów danych na liczby. Jej elastyczność oraz obsługa błędów sprawiają, że świetnie nadaje się do przetwarzania dużych zbiorów danych. Warto ją znać i stosować w codziennej pracy z danymi.
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.