Spis treści:

Odkryj świat nauki o danych na bezpłatnym kursie. Poznaj trzy kluczowe obszary nauki o danych i określ swoją przyszłą specjalizację. Zdobądź przydatne prezenty, rozwijając jednocześnie swoje umiejętności w zakresie nauki o danych.
Dowiedz się więcejJęzyk Python jest wykorzystywany w analizie danych i uczeniu maszynowym oraz integruje się z różnymi bibliotekami, takimi jak Pandas, Matplotlib, NumPy, TensorFlow i wieloma innymi. Każda z tych bibliotek została zaprojektowana do wykonywania określonych zadań.
W dzisiejszej dyskusji skupimy się na bibliotece Pandas: przyjrzymy się jej roli, sposobowi jej importowania do środowiska Pythona oraz przeanalizujemy nasz pierwszy zestaw danych, aby określić, które kraje mają najszybsze i najwolniejsze prędkości internetu.
Cel biblioteki Pandas w Pythonie
Pandas to kluczowa biblioteka w Pythonie przeznaczona do przetwarzania danych. Jest szeroko wykorzystywana przez specjalistów z dziedziny analizy danych i data science. Stworzona w 2008 roku przez AQR Capital, biblioteka stała się projektem open source w 2009 roku i uzyskała wsparcie dużej społeczności programistów.
Oto cele tej biblioteki.
Analiza danych obejmuje różne obszary, takie jak analiza produktów i marketingu, a także wiele innych. Praca z dowolnym zbiorem danych wymaga starannej analizy i przygotowania: trzeba eliminować lub wypełniać luki, filtrować, sortować lub w inny sposób modyfikować informacje. Biblioteka Pandas w Pythonie umożliwia efektywne wykonywanie wszystkich tych zadań i, w większości przypadków, automatyzowanie ich procesu.
Badania i przetwarzanie dużych zbiorów danych w ramach data science. Biblioteka Pandas służy jako narzędzie do wstępnego przetwarzania i analizy danych, co pozwala na późniejsze zastosowanie w zadaniach uczenia maszynowego i głębokiego.
Metody statystyczne. Biblioteka oferuje zestaw kluczowych narzędzi statystycznych niezbędnych do analizy danych. Takie metody obejmują na przykład obliczanie wartości średnich, ich rozkład kwantylowy i wiele innych podejść.
Praca z Pandas
W dziedzinie analizy danych i uczenia maszynowego często wykorzystuje się specjalistyczne narzędzia, takie jak Google Colab i Jupyter Notebook. Te zintegrowane środowiska programistyczne (IDE) umożliwiają pracę z danymi przyrostowo i iteracyjnie, bez konieczności tworzenia pełnoprawnej aplikacji.
W tym artykule przyjrzymy się Google Colab, platformie do analizy danych w chmurze, dostępnej za pośrednictwem przeglądarki na różnych urządzeniach – od komputerów stacjonarnych i laptopów po tablety i smartfony.

Każda linijka kodu wyświetlana na ekranie odpowiada konkretnej akcji, której wynik jest natychmiast wyświetlany użytkownikowi w Google Colab i Jupyter Notebook. Jest to szczególnie wygodne podczas pracy z zadaniami związanymi z analityką i nauką o danych.
Korzystając z Jupyter Notebook lub Google Colab, nie ma potrzeby instalowania biblioteki Pandas, ponieważ jest ona już zawarta w pakiecie standardowym i będzie dostępna natychmiast po otwarciu środowiska. Wystarczy ją zaimportować do kodu.
pd to powszechnie używany skrót oznaczający bibliotekę Pandas w programowaniu. Pojawia się w literaturze, artykułach i materiałach edukacyjnych. Zaleca się używanie go we własnych projektach, aby uniknąć konieczności wpisywania pełnej nazwy biblioteki Pandas.
Serie i DataFrame
W bibliotece Pandas informacje można organizować w dwóch głównych formatach: Series i DataFrame. Przyjrzyjmy się bliżej każdemu z tych typów.
Serie to struktura danych przypominająca jednowymiarową tablicę, która może przechowywać elementy różnych typów. Najwyraźniej można to przedstawić jako kolumnę tabeli, w której wartości są ułożone w kolejności sekwencyjnej, a każda z nich odpowiada indeksowi wskazującemu numer wiersza.
Utwórzmy elementarny obiekt Series:
Wyświetlmy to na ekranie.

Seria jest prezentowana w formacie tabeli, gdzie pierwsza kolumna zawiera indeksy elementów, a druga odpowiadające im wartości.
DataFrame to kluczowy element strukturalny w bibliotece Pandas, na podstawie którego wykonywana jest cała praca z danymi. Można ją traktować jako standardową tabelę składającą się z wielu kolumn i wierszy. Komórki tej „tabeli” mogą zawierać dane różnego typu, w tym wartości liczbowe, zmienne logiczne, tekst i wiele innych.
DataFrame zawiera zarówno indeksy wierszy, jak i indeksy kolumn. Taka struktura sprawia, że sortowanie i filtrowanie danych jest wygodniejsze, a także umożliwia szybkie wyszukiwanie potrzebnych komórek.
Utwórzmy podstawową ramkę danych przy użyciu słownika, a następnie zastanówmy się, jak będzie wyglądać.
Oceńmy wynik.

Tabela pokazuje wiersze indeksowane od 0 do 3, a nazwy kolumn służą jako ich indeksy. Oczywiste jest, że ta ramka danych zawiera trzy serie: Miasto, Rok założenia i Ludność. Oba typy indeksów umożliwiają nawigację po informacjach.
Importowanie danych
Pandas oferuje wiele metod importowania danych. Można na przykład załadować informacje ze słowników, list lub krotek. Jednak najpopularniejszą opcją jest praca z plikami .csv, które są szeroko stosowane w analityce danych. Do ich wczytania służy funkcja pd.read_csv().
Funkcja read_csv udostępnia użytkownikom szereg parametrów, które pozwalają kontrolować proces importu danych.
- Parametr sep pozwala jawnie ustawić znak pełniący rolę separatora w importowanym dokumencie. Domyślnie jest to przecinek, który odpowiada standardowemu separatorowi w plikach .csv. Ten parametr jest szczególnie przydatny, gdy plik źródłowy używa niestandardowych separatorów, takich jak tabulatory lub średniki.
- dtype pozwala określić typ danych dla kolumn po zaimportowaniu pliku .csv. Ta funkcja jest szczególnie przydatna, gdy automatyczne wykrywanie formatu danych zawodzi. Na przykład daty są często importowane jako zmienne łańcuchowe, pomimo istnienia dla nich określonego typu danych.
Dokumentacja zawiera szczegółowe parametry, które pomogą Ci poprawnie skonfigurować proces importu pliku CSV.
Zaimportujemy zbiór danych zawierający informacje o prędkościach internetu mobilnego i stacjonarnego w różnych krajach. Pobierzemy ten gotowy zbiór danych z platformy Kaggle; jest on prezentowany w formacie .csv. Nie będziemy określać żadnych parametrów dla funkcji read_csv, ponieważ dane są już przygotowane do analizy.
Przyjrzyjmy się bliżej wygenerowanej ramce danych:
Ważne!
Korzystając z Google Colab lub Jupyter Notebook, nie trzeba używać polecenia print, aby wyświetlić ramkę danych lub serię. Biblioteka Pandas może wyprowadzać dane bez niego. Użycie polecenia print(df) spowoduje uszkodzenie formatowania tabeli. Spróbuj wyświetlić dane na dwa różne sposoby i oceń wyniki.
Na wyświetlaczu pojawiła się następująca tabela:

Na początku ramki danych znajdują się nagłówki kolumn: kraj, szerokopasmowy i mobilny. Po lewej stronie znajdują się indeksy z zakresu od 0 do 176, co daje łącznie 177 wierszy. Informacje te są również prezentowane na dole tabeli, co jest powszechne w Pandas.
Nie ma potrzeby wyświetlania całej tabeli. Aby zorientować się w danych, wystarczy spojrzeć na pierwsze pięć lub ostatnie pięć wierszy. Można to zrobić za pomocą funkcji df.head() i df.tail(). Możesz określić liczbę wierszy wyświetlanych w nawiasach, przy czym 5 jest wartością domyślną.
Wynik:

To Znacznie ułatwia zadanie. Możemy szybko zobaczyć nagłówki kolumn i zawarte w nich typy danych. Dodatkowo, niektóre komórki zawierają wartości NaN, do których wrócimy później.
Analiza i interpretacja zebranych danych
Teraz musimy przeanalizować zaimportowane dane. Zrobimy to krok po kroku.
Pierwszym krokiem jest sprawdzenie typu danych zawartych w tabeli. Jest to konieczne, aby określić, jak dokładnie reprezentowane są informacje w zbiorze danych i zidentyfikować wszelkie anomalie. Na przykład daty mogą być przechowywane jako ciągi znaków, co może utrudniać dalszą analizę. Aby wykonać to sprawdzenie, możesz użyć standardowej metody:
Wyświetli się tabela wskazująca typ danych reprezentowanych w każdej kolumnie ramki danych.

Co widzimy:
- Kolumna „Kraj” ma typ danych obiektu. Ten typ jest przeznaczony do przechowywania wartości tekstowych i danych mieszanych.
- Kolumny „Szerokopasmowy” i „Mobilny” mają typ danych float, co oznacza, że reprezentują liczby zmiennoprzecinkowe.
Krok 2. Na tym etapie konieczna jest szybka analiza informacji i sformułowanie wstępnych wniosków. Można to łatwo zrobić za pomocą metody describe() dostępnej w bibliotece Pandas. Ta metoda wyprowadza wartości średnie z odchyleniami standardowymi, a także maksima i minima zmiennych oraz ich rozkład kwantylowy.
Zobaczmy, jak ta metoda działa w praktyce:
Wynik:

Przyjrzyjmy się szczegółowo każdemu wierszowi.
- Słowo „count” odnosi się do liczby wypełnionych wierszy w każdej kolumnie. Patrząc na kolumnę zawierającą informacje o szybkości internetu mobilnego, można zauważyć luki.
- Średnia prędkość internetu, zarówno przewodowego, jak i mobilnego, wskazuje, że w większości krajów internet mobilny jest wolniejszy niż jego odpowiednik kablowy.
- Odchylenie standardowe, oznaczane jako std, to kluczowa statystyka odzwierciedlająca stopień zmienności wartości w zbiorze danych.
- min i max odnoszą się odpowiednio do wartości minimalnych i maksymalnych.
- Wartości prędkości internetu na poziomach 25%, 50% i 75% reprezentują wyniki percentylowe. Mówiąc prościej, percentyl to metryka ilustrująca rozkład wartości w danej próbie. Na przykład w zbiorze danych mobilnych 25. percentyl oznacza, że 25% wszystkich zarejestrowanych prędkości internetu jest poniżej 24,4.
Pamiętaj, że ta metoda ma zastosowanie tylko do danych liczbowych. Kolumna zawierająca nazwy krajów jest pusta.
Co możemy wywnioskować? W większości krajów prędkość internetu przewodowego jest wyższa niż prędkość internetu mobilnego. Jednak w 75% przypadków prędkość internetu przewodowego nie przekracza 110 Mb/s, podczas gdy prędkość internetu mobilnego osiąga 69 Mb/s.
Krok 3. Organizowanie i filtrowanie danych. W naszej ramce danych informacje są już posortowane malejąco według prędkości internetu przewodowego. Teraz spróbujemy określić kraj z najwyższą jakością internetu mobilnego. W tym celu użyjemy standardowej metody sort_values, która wymaga dwóch argumentów:
- Kolumna, według której przeprowadzane jest sortowanie, musi być ujęta w pojedyncze lub podwójne cudzysłowy.
- Parametr ascending= określa metodę sortowania. Jeśli naszym celem jest sortowanie wartości w kolejności malejącej, ustawiamy ten parametr na False. Jeśli chcesz posortować dane w kolejności rosnącej, ustaw wartość na True.
Przejdźmy do kodu:
Wynik:

Rankingi krajów zostały zaktualizowane, a pięć najlepszych zmieniło się, ponieważ zmieniliśmy kolejność sortowania danych. W rezultacie ustaliliśmy, że Zjednoczone Emiraty Arabskie mają najszybszy internet mobilny.
Jest jednak jedno ważne zastrzeżenie. Jeśli spojrzysz wstecz na oryginalną tabelę, w której dane są uporządkowane według szybkości internetu przewodowego, zobaczysz, że Monako, które zajmuje pierwsze miejsce, ma wartość NaN w drugiej kolumnie.
W Pythonie wartość NaN oznacza brak danych. Oznacza to, że w dostarczonym zestawie danych brakuje informacji o szybkości internetu mobilnego w Monako, co utrudnia uzyskanie jasnego obrazu światowych liderów w dziedzinie internetu mobilnego.
Przefiltrujmy dane, wykluczając z ramki danych te kraje, dla których nie zgłoszono szybkości internetu mobilnego. Pozwoli nam to skupić się na krajach o najgorszych wynikach. Pozostawienie wartości NaN zaśmieci tabelę i utrudni identyfikację rzeczywistych danych o najwolniejszym internecie mobilnym.
Biblioteka Pandas udostępnia kilka metod filtrowania i usuwania wartości NaN. Jedną z nich jest metoda dropna(), która wyklucza wszystkie wiersze z lukami. Należy pamiętać, że ta metoda eliminuje cały wiersz z wartością NaN, a nie tylko komórki zawierające brakujące dane w określonej kolumnie.
Wynik:

Po usunięciu pustych wartości liczba wierszy w ramce danych została zmniejszona do 136. Jeśli wrócisz do drugiego etapu analizy, zauważysz, że liczba ta odpowiada liczbie niepustych rekordów w kolumnie mobilnej w oryginalnej ramce danych.
Utwórzmy nową ramkę danych, którą nazwiemy df_without_nan, aby zapisać uzyskany wynik. W tym przypadku postaramy się pozostawić oryginalną ramkę danych bez zmian, ponieważ może się ona przydać później.
Teraz posortujmy uzyskane dane według kolumny prędkości mobilnej, zaczynając od najmniejszych wartości i przechodząc do największych, aby określić kraj o najwolniejszej prędkości mobilnego Internetu.
Wynik:

Najgorszą jakość internetu mobilnego obserwuje się w Afganistanie, a następnie w Palestynie i Wenezueli.
Sposoby modyfikacji i edycji ramki danych
Oprócz pracy z istniejącą ramką danych, możemy ją modyfikować według naszych potrzeb: możemy dodawać nowe rekordy, usuwać stare, agregować informacje i wykonywać inne operacje.
Przywróćmy pierwotny stan naszej ramki danych. Aby to zrobić, ponownie prześlijmy plik CSV ze zbiorem danych:
Zwróćmy uwagę na ramkę danych:
Sprawdźmy, czy wszystkie dane są obecne:

Na liście znajduje się 177 krajów, w tym te, dla których nie ma informacji o szybkości internetu.
Dodamy nowy kraj do naszej ramki danych. Ponieważ na liście znajduje się już 177 krajów, dodajmy Republikę Galaktyczną ze świata Gwiezdnych Wojen.
Aby dodać dane do ramki danych, używamy metody concat.
Przyjrzyjmy się kodowi linia po linii:
- Najpierw tworzymy słownik, który będzie zbierał dane o krajach, w tym informacje o średniej szybkości internetu i szybkości internetu mobilnego.
- Używając konstruktora pd.DataFrame, konwertujemy słownik na ramkę danych.
- Używając metody concat, łączymy oryginalną ramkę danych z nową, która znajduje się na new_list. Ważne jest, aby ustawić parametr ignore_index=True, aby nowy wiersz pojawił się na początku.
Sprawdźmy wynik:

Wszystko zadziałało. Republika Galaktyczna jest teraz na naszej liście.
Pandas używa metody „drop” do usuwania wierszy. Użyjmy jej, aby usunąć kraj, który tak naprawdę nie istnieje i który wcześniej dodaliśmy do naszej ramki danych:
Metoda przyjmuje dwa argumenty:
- Indeksy wierszy do usunięcia, w tym przykładzie, to wiersz o indeksie 0. Jeśli chcesz usunąć wiele wierszy jednocześnie, musisz przekazać ich indeksy jako listę, na przykład [0, 1, 2].
- Parametr „inplace=True” resetuje indeksy, więc pierwszy wiersz po usunięciu otrzymuje indeks 0.
Uruchommy kod i zobaczmy wyniki jako ramkę danych:

Republika Galaktyczna przestała istnieć. Ramka danych została przywrócona do stanu pierwotnego.
W niektórych przypadkach konieczne jest znalezienie konkretnego wiersza w ramce danych. Istnieją dwa sposoby, aby to osiągnąć: użycie wartości indeksu lub uzyskanie dostępu do indeksu. Przyjrzyjmy się obu tym metodom.
Filtrowanie odbywa się na podstawie wartości indeksów, które są prezentowane w pierwszej kolumnie ramki danych. W tym kontekście wartości indeksu wahają się od 0 do 177.
Wyświetlmy kraje o wartościach indeksu 10 i 11.
Zwróć uwagę na wynik:

Filtrowanie danych według indeksów. W ramce danych indeksowanie rozpoczyna się od zera. Przyjrzyjmy się, jak wyodrębnić dane dotyczące krajów z indeksami od 5 do 8. Do tej operacji użyto metody iloc.
Oceniamy wynik:

Wyodrębniliśmy część listy, zaczynając od 6. i kończąc na 8. elemencie. Należy zauważyć, że indeksy i wartości wierszy nie są zgodne.
Wyświetlmy tylko te kraje, w których prędkość mobilnego Internetu przekracza 100 Mb/s.
W rezultacie powstała tabela obejmująca 18 krajów:

Ważne!
Dzięki tej metodzie można zachować wartości indeksu badanej ramki danych.
Agregacja danych to proces łączenia kilku pojedynczych wartości w celu uzyskania uogólnionych informacji.
Aby obliczyć średnią prędkość internetu dla wszystkich krajów, używamy funkcji agg, przekazując parametr średniej.
Wynik:

Średnia prędkość Internetu w różnych krajach wynosi 72,67 Mb/s.
Po zakończeniu edycji ramki danych możesz zapisać ją w formacie CSV lub wybrać inny odpowiedni format.
Zapisany dokument będzie dostępny pod wskazanym adresem Adres.
Ważne!
W przypadku stosowania tego podejścia wartości indeksów badanej ramki danych pozostają niezmienione.
Co dalej?
Pandas to jedna z najskuteczniejszych bibliotek do analizy danych w Pythonie. W tym artykule omówiliśmy podstawowe operacje, które można za jej pomocą wykonać. Bardziej szczegółowe informacje na temat funkcjonalności biblioteki można znaleźć w oficjalnej dokumentacji. Aby lepiej zrozumieć Pandas, zalecamy lekturę następujących pozycji:
- Książka „Learning Pandas” autorstwa Michaela Haidta i Artema Gruzdeva to fascynujący i przydatny przewodnik po pracy z biblioteką pandas.
- Książka „Thoughts on Pandas: How to Properly Use the Python Data Analysis Library” autorstwa Hannah Stepanek.
- Książka „Practical Data Analysis with Pandas: Effectively Collecting, Processing, Analyzing, and Visualizing Data Using Python” autorstwa Stephanie Molin.
Przeczytaj również:
- Biblioteki odgrywają ważną rolę w świecie programowania, dostarczając programistom gotowe rozwiązania do różnych zadań. Ich główną funkcją jest ułatwianie procesu tworzenia oprogramowania poprzez umożliwienie korzystania z gotowego kodu zamiast tworzenia wszystkiego od podstaw.
Istnieje kilka typów bibliotek, z których każda została zaprojektowana z myślą o określonych potrzebach. Na przykład biblioteka standardowych funkcji języka programowania zawiera podstawowe narzędzia potrzebne do wykonywania prostych operacji. Inne mogą być bardziej wyspecjalizowane, oferując funkcjonalność do pracy z grafiką, sieciami lub przetwarzaniem danych.
Biblioteki mogą być również open source, umożliwiając programistom wprowadzanie modyfikacji i ulepszeń, lub zamknięte, ograniczając dostęp do kodu źródłowego. Niektóre biblioteki są szeroko wykorzystywane w różnych projektach, podczas gdy inne mogą być bardziej wyspecjalizowane i przeznaczone do konkretnych zastosowań.
Ostatecznie biblioteki znacznie przyspieszają proces rozwoju, pozwalając programistom skupić się na bardziej złożonych aspektach projektu bez marnowania czasu na rutynowe zadania.
- Test: Określ, które z prezentowanych języków programowania są ezoteryczne, a które nie.
- Wprowadzenie do programowania w Pythonie: Krótki przewodnik.
