
Podczas pracy z biblioteką Pandas często musimy znaleźć najmniejsze wartości w danym zbiorze danych. W tym celu Python oferuje świetne narzędzie – metodę pandas.nsmallest()
. Jest to bardzo wydajne rozwiązanie, które pozwala w szybki sposób uzyskać określoną liczbę najmniejszych wartości z kolumny DataFrame lub Series.
Jak działa pandas nsmallest w języku Python?
Metoda nsmallest()
zwraca n najmniejszych wartości dla określonej kolumny w obiekcie DataFrame
lub Series
. Co ważne, sortowanie odbywa się tylko na tej części danych, której dotyczy operacja, co czyni ją bardziej wydajną niż pełne sortowanie.
Podstawowa składnia wygląda następująco:
DataFrame.nsmallest(n, columns, keep='first')
Gdzie:
- n – liczba najmniejszych wartości do zwrócenia,
- columns – nazwa kolumny, według której ma być wykonana operacja,
- keep – sposób obsługi duplikatów (opcje:
'first'
,'all'
). Domyślnie pozostawia pierwsze wystąpienie.
Przykład zastosowania pandas.nsmallest()
Załóżmy, że mamy DataFrame z danymi o sprzedaży różnych produktów:
import pandas as pd
data = {
'Produkt': ['A', 'B', 'C', 'D', 'E'],
'Sprzedaż': [500, 200, 400, 100, 250]
}
df = pd.DataFrame(data)
print(df)
W efekcie otrzymamy:
Produkt | Sprzedaż |
---|---|
A | 500 |
B | 200 |
C | 400 |
D | 100 |
E | 250 |
Aby znaleźć 3 produkty o najniższej sprzedaży, użyjemy:
najmniejsza_sprzedaz = df.nsmallest(3, 'Sprzedaż')
print(najmniejsza_sprzedaz)
Wynikiem będzie:
Produkt | Sprzedaż |
---|---|
D | 100 |
B | 200 |
E | 250 |
Porównanie pandas.nsmallest() i sort_values()
Alternatywnym sposobem uzyskania najmniejszych wartości byłoby użycie sort_values()
oraz head()
:
df.sort_values('Sprzedaż').head(3)
Różnica polega na tym, że sort_values()
wykonuje pełne sortowanie, co może być mniej wydajne dla dużych zbiorów danych. Metoda nsmallest()
jest zoptymalizowana pod kątem zwracania jedynie wskazanej liczby najmniejszych wartości.
Obsługa duplikatów w pandas.nsmallest()
Kiedy istnieją duplikaty wartości, możemy zdecydować, czy uwzględniać tylko pierwsze ich wystąpienie (keep='first'
), czy wszystkie (keep='all'
). Zobaczmy przykład:
data = {
'Produkt': ['A', 'B', 'C', 'D', 'E', 'F'],
'Sprzedaż': [500, 200, 400, 100, 200, 100]
}
df = pd.DataFrame(data)
print(df.nsmallest(3, 'Sprzedaż', keep='all'))
W tym przypadku metoda zwróci wszystkie rekordy z najmniejszą wartością (100), a następnie te z kolejną najmniejszą wartością (200).
Podsumowanie
Metoda pandas.nsmallest()
to niezwykle przydatne narzędzie do wydobywania najmniejszych wartości z DataFrame w sposób wydajny i intuicyjny. Dzięki niej można uniknąć pełnego sortowania zbioru danych i szybko uzyskać interesujące nas wyniki. Warto stosować ją szczególnie w przypadku dużych zbiorów danych, gdzie oszczędność czasu i zasobów ma kluczowe znaczenie.
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.