Oto dlaczego Pandas jest najpopularniejszą biblioteką analizy danych Pythona

Pandas to bezsprzecznie najczęściej wybierana biblioteka w Pythonie, gdy chodzi o analizę danych. Znajduje ona szerokie zastosowanie wśród analityków, badaczy danych oraz inżynierów specjalizujących się w uczeniu maszynowym.

Wraz z biblioteką NumPy, Pandas stanowi fundamentalny zestaw narzędzi, który każdy specjalista pracujący z danymi i sztuczną inteligencją powinien mieć w swoim arsenale.

W tym artykule skupimy się na bibliotece Pandas oraz na mechanizmach, które decydują o jej olbrzymiej popularności w środowisku przetwarzania danych.

Czym właściwie jest Pandas?

Pandas to biblioteka języka Python dedykowana do analizy danych. Umożliwia ona pracę z danymi oraz ich modyfikację bezpośrednio w kodzie Pythona. Za pomocą Pandas możemy efektywnie wczytywać, przetwarzać, prezentować w formie wykresów, analizować oraz przechowywać dane.

Nazwa „Pandas” wywodzi się z połączenia słów „Panel Data”, terminu z zakresu ekonometrii, który odnosi się do danych pozyskiwanych z obserwacji wielu podmiotów w czasie. Biblioteka ta została po raz pierwszy udostępniona w styczniu 2008 roku przez Wesa Kinneya i od tamtej pory stała się najczęściej wybieranym narzędziem w swoim obszarze zastosowań.

Kluczowymi elementami Pandas są dwie podstawowe struktury danych: DataFrame (ramka danych) oraz Series (szereg). Podczas tworzenia lub wczytywania zbioru danych w Pandas, jest on reprezentowany za pomocą jednej z tych struktur.

W dalszej części artykułu przyjrzymy się bliżej tym strukturom, omówimy różnice między nimi oraz sytuacje, w których użycie każdej z nich jest najbardziej odpowiednie.

Podstawowe struktury danych

Jak wspomniano wcześniej, wszelkie dane w Pandas są przedstawiane za pomocą jednej z dwóch struktur: ramki danych (DataFrame) lub szeregu (Series). Poniżej znajduje się szczegółowe wyjaśnienie obu tych struktur.

Ramka danych (DataFrame)

Poniższa przykładowa ramka danych została wygenerowana za pomocą fragmentu kodu przedstawionego na końcu tej sekcji.

Ramka danych w Pandas to dwuwymiarowa struktura, składająca się z kolumn i wierszy. Jest ona zbliżona do arkusza kalkulacyjnego w programie takim jak Excel lub tabeli w relacyjnej bazie danych.

Składa się ona z kolumn, gdzie każda z nich reprezentuje określony atrybut lub cechę w danym zbiorze danych. Kolumny te składają się z kolei z konkretnych wartości. Taka lista lub szereg pojedynczych wartości jest reprezentowana jako obiekty typu Series. Strukturę danych Series omówimy szerzej w dalszej części artykułu.

Kolumny w ramce danych mogą posiadać opisowe nazwy, które umożliwiają ich identyfikację i rozróżnienie. Nazwy te są nadawane podczas tworzenia lub wczytywania ramki, jednak w każdym momencie można je swobodnie modyfikować.

Wartości w obrębie jednej kolumny muszą być tego samego typu, jednak kolumny w obrębie jednej ramki danych mogą zawierać dane różnego typu. Oznacza to, że kolumna z imionami będzie zawierała wyłącznie ciągi znaków, natomiast w tej samej ramce danych może istnieć kolumna z wiekiem, przechowująca liczby całkowite.

Ramki danych posiadają także indeks, który jest wykorzystywany do odwoływania się do wierszy. Wartości z różnych kolumn, ale z tym samym indeksem, tworzą jeden wiersz. Domyślnie indeksy są numerowane, ale istnieje możliwość ich ponownego przypisania, aby odpowiadały zawartości danych. W przykładzie (zaprezentowanym powyżej, a zakodowanym poniżej) kolumna „miesiące” została ustawiona jako kolumna indeksu.

import pandas as pd

sales_df = pd.DataFrame({
    'Month': ['January', 'February', 'March'],
    'Jane Doe': [5000, 6000, 5500],
    'John Doe': [4500, 6700, 6000]
})

sales_df.set_index(['Month'], inplace=True)

print(sales_df)

Szereg (Series)

Powyższy przykładowy szereg został wygenerowany za pomocą kodu przedstawionego na końcu tej sekcji.

Jak już wspomniano, szereg (Series) służy do reprezentowania kolumny danych w Pandas. Jest to zatem jednowymiarowa struktura. Kontrastuje to z ramką danych (DataFrame), która jest strukturą dwuwymiarową.

Choć szereg jest najczęściej używany jako kolumna w ramce danych, może także samodzielnie reprezentować kompletny zbiór danych, pod warunkiem, że zbiór ten składa się z tylko jednego atrybutu, zapisanego w jednej kolumnie. Innymi słowy, zbiór danych jest po prostu listą wartości.

Ponieważ szereg to jedynie pojedyncza kolumna, nie musi posiadać nazwy. Jednak wartości w szeregu są indeksowane. Podobnie jak indeks ramki danych, indeks szeregu można modyfikować w stosunku do domyślnej numeracji.

W przykładzie (zaprezentowanym powyżej i zakodowanym poniżej) indeks został ustawiony na różne miesiące za pomocą metody `set_axis` obiektu Pandas Series.

import pandas as pd

total_sales = pd.Series([9500, 12700, 11500])
months = ['January', 'February', 'March']

total_sales = total_sales.set_axis(months)

print(total_sales)

Funkcje biblioteki Pandas

Teraz, gdy masz już solidną wiedzę na temat tego, czym jest Pandas oraz jakie kluczowe struktury danych wykorzystuje, możemy przejść do omówienia funkcji, które czynią z Pandas tak potężne narzędzie do analizy danych, a w konsekwencji – niezwykle popularne w środowiskach Data Science i Machine Learning.

#1. Manipulacja danymi

Obiekty typu DataFrame i Series są modyfikowalne. W razie potrzeby możesz dodawać lub usuwać kolumny. Dodatkowo Pandas umożliwia dodawanie wierszy, a nawet łączenie zbiorów danych.

Możesz wykonywać obliczenia numeryczne, takie jak normalizacja danych, oraz porównywać wartości elementów. Pandas pozwala również na grupowanie danych i stosowanie funkcji agregujących, takich jak średnia, mediana, maksimum i minimum. Dzięki temu praca z danymi w Pandas staje się niezwykle prosta.

#2. Czyszczenie danych

Dane pochodzące z rzeczywistych źródeł często zawierają wartości, które utrudniają pracę lub nie są idealne do analizy, czy też do wykorzystania w modelach uczenia maszynowego. Dane mogą być niepoprawnego typu, w niewłaściwym formacie, lub po prostu ich brakuje. W każdym z tych przypadków dane wymagają wstępnej obróbki, nazywanej czyszczeniem, zanim będzie można z nich skorzystać.

Pandas oferuje funkcje, które pomagają w czyszczeniu danych. Na przykład w Pandas możesz usuwać zduplikowane wiersze, usuwać kolumny lub wiersze z brakującymi danymi, oraz zastępować brakujące wartości wartościami domyślnymi lub innymi wartościami, takimi jak średnia z danej kolumny. Dostępne są także inne funkcje i biblioteki współpracujące z Pandas, które umożliwiają jeszcze szersze możliwości czyszczenia danych.

#3. Wizualizacja danych

Powyższy wykres został wygenerowany za pomocą kodu znajdującego się na końcu tej sekcji.

Chociaż Pandas nie jest typową biblioteką do wizualizacji, jak np. Matplotlib, posiada ona wbudowane funkcje do tworzenia podstawowych wykresów. Mimo że są one dość proste, w większości przypadków są w zupełności wystarczające.

Za pomocą Pandas można w łatwy sposób tworzyć wykresy słupkowe, histogramy, wykresy punktowe oraz inne rodzaje wizualizacji. W połączeniu z możliwościami manipulacji danymi, jakie oferuje Python, możesz tworzyć jeszcze bardziej zaawansowane wykresy, co pozwoli Ci lepiej zrozumieć dane.

import pandas as pd

sales_df = pd.DataFrame({
    'Month': ['January', 'February', 'March'],
    'Jane Doe': [5000, 6000, 5500],
    'John Doe': [4500, 6700, 6000]
})

sales_df.set_index(['Month'], inplace=True)

sales_df.plot.line()

#4. Analiza szeregów czasowych

Pandas oferuje również obsługę pracy z danymi, które zawierają znaczniki czasu. Gdy Pandas rozpozna kolumnę zawierającą wartości typu data/godzina, możliwe jest wykonywanie na niej wielu operacji, które są niezwykle przydatne podczas pracy z danymi szeregów czasowych.

Obejmuje to grupowanie obserwacji w oparciu o określony okres oraz stosowanie do nich funkcji agregujących, takich jak suma lub średnia, a także wyszukiwanie najwcześniejszych lub najpóźniejszych obserwacji za pomocą funkcji min i maks. Oczywiście, możliwości pracy z danymi szeregów czasowych w Pandas jest znacznie więcej.

#5. Wejście/Wyjście w Pandas

Pandas umożliwia odczytywanie danych z najpopularniejszych formatów przechowywania danych. Należą do nich między innymi JSON, zrzuty SQL i pliki CSV. Możesz także zapisywać dane w wielu z tych formatów.

Zdolność do odczytu i zapisu danych w różnych formatach sprawia, że Pandas doskonale współpracuje z innymi aplikacjami i umożliwia tworzenie potoków danych, które dobrze integrują się z tą biblioteką. Jest to jeden z powodów, dla których Pandas jest tak często wykorzystywana przez programistów.

#6. Integracja z innymi bibliotekami

Pandas posiada również bogaty ekosystem narzędzi i bibliotek, które zostały zbudowane z myślą o uzupełnianiu jej funkcjonalności. Dzięki temu jest ona jeszcze potężniejsza i bardziej wszechstronna.

Narzędzia w ekosystemie Pandas zwiększają jej możliwości w różnych obszarach, takich jak czyszczenie danych, wizualizacja, uczenie maszynowe, wejście/wyjście oraz przetwarzanie równoległe. Pandas udostępnia listę takich narzędzi w swojej dokumentacji.

Kwestie wydajności i efektywności w Pandas

Pomimo że Pandas doskonale sprawdza się w większości operacji, w niektórych przypadkach może działać wolno. Dobrą wiadomością jest fakt, że istnieje możliwość optymalizacji kodu w celu zwiększenia jego szybkości. Aby tego dokonać, należy zrozumieć, jak zbudowana jest biblioteka Pandas.

Pandas bazuje na NumPy, popularnej bibliotece Pythona przeznaczonej do obliczeń numerycznych i naukowych. W związku z tym, tak jak NumPy, Pandas działa najbardziej wydajnie, gdy operacje są wektoryzowane, w przeciwieństwie do wybierania pojedynczych komórek lub wierszy za pomocą pętli.

Wektoryzacja to forma przetwarzania równoległego, w której ta sama operacja jest stosowana do wielu punktów danych jednocześnie. Jest to tak zwana operacja SIMD – Single Instruction, Multiple Data. Wykorzystanie operacji wektorowych znacząco poprawia szybkość i wydajność Pandas.

Ponieważ „pod maską” wykorzystuje ona tablice NumPy, struktury danych typu DataFrame i Series działają szybciej niż ich alternatywy w postaci słowników i list.

Domyślna implementacja Pandas działa tylko na jednym rdzeniu procesora. Kolejnym sposobem na przyspieszenie kodu jest wykorzystanie bibliotek, które umożliwiają Pandas korzystanie z wszystkich dostępnych rdzeni procesora. Należą do nich Dask, Vaex, Modin oraz IPython.

Społeczność i zasoby

Jako popularna biblioteka najpopularniejszego języka programowania, Pandas może poszczycić się dużą społecznością użytkowników i współtwórców. W rezultacie istnieje wiele zasobów, które można wykorzystać w nauce jej obsługi. Należy do nich oficjalna dokumentacja Pandas. Ponadto dostępne są niezliczone kursy, poradniki i książki.

Istnieją również społeczności online na platformach takich jak Reddit, w subredditach r/Python i r/Data Science, gdzie można zadawać pytania i uzyskiwać odpowiedzi. Jako biblioteka o otwartym kodzie źródłowym, możesz zgłaszać problemy na GitHub, a nawet współtworzyć kod.

Podsumowanie

Pandas to niezwykle użyteczna i potężna biblioteka w dziedzinie nauki o danych. W tym artykule starałem się wyjaśnić przyczyny jej popularności, analizując funkcje, które czynią z niej podstawowe narzędzie dla analityków danych i programistów.

Zachęcam do dalszego eksplorowania tematu i sprawdzenia, jak utworzyć Pandas DataFrame.


newsblog.pl