Biblioteka pandas

Typ danych DataFrame

Data Frame to tabelaryczna struktura danych składająca się z kolumn i wierszy, gdzie kolumny mają swoje nazwy a wiersze są indeksowane wartościami.

Tworzenie obiektu DataFrame

Wypełnianie danymi statycznymi

Pierwszą metodą jest użycie słowników:

myDict = {'weekday': ['Mon', 'Tue', 'Wend'],
          'city': ['Warsaw', 'Paris', 'Vien'],
          'visitors': [120, 12, 100]}

df = pd.DataFrame(myDict)

Inny sposób to wykorzystanie list:

weekdays = ['Mon', 'Tue', 'Wend']
cities = ['Warsaw', 'Paris', 'Vien']
visitors = [120, 12, 100]

labels = ['weekday', 'city', 'visitors']
list_cols = [weekdays, cities, visitors]

zipped = list(zip(labels, list_cols))

data = dict(zipped)

df = pd.DataFrame(data)

Funkcja _zip _tworzy iterator na który składają się krotki reprezentujące kolejne elementy występujące na tym samym indeksie w listach przekazanych jako parametry.

Broadcasting

Broadcasting jest metodą rozszerzenia obiektu DataFrame poprzez przypisanie wartości do nieistniejącej kolumny. W takiej sytuacji tworzona jest dodatkowa kolumna, która zostaje wypełniona zadaną wartością:

df['new_col'] = 0

Zmiana wartości nazw kolumn i wartości indeksów

Przypisanie do atrybutu _columns _zmienia nazwy kolumn:

df.columns = ['A', 'B', 'C', 'D']

Przypisanie do atrybutu _index _zmienia wartości indeksów:

df.index = ['a', 'b', 'c', 'd', 'e', 'f']

Kolumna zawierająca indeks może być nazwana:

df.index.name = "index"

Podstawowe metody i atrybuty pozwalające na zapoznanie się z konkretnym obiektem

Sprawdzenie nazw kolumn w obiekcie

df.columns

Badanie rozmiaru obiektu

df.shape

Zwraca wymiary macierzy.

Badanie typów danych w obiekcie

df.dtypes

Zwraca obiekt "dtype", który opisuje typ danych dla każdej kolumny w obiekcie DataFrame. Typ danych jest wyliczany na podstawie danych w danej kolumnie.

Badanie statystyk na wartościach

Metoda _describe _pozwala na szybkie policzenie statystyk na wartościach numerycznych w poszczególnych kolumnach, np.: średniej, mediany, wartości mininalnej, maksymalnej, itp.

df.describe()

Wywołanie metody na stringach pozwala na sprawdzenie liczby wartości niepustych, liczby wartości unikalnych, najczęściej występującej wartości oraz częstości jej występowania. Może to pomóc w odszukaniu cech, które mogą być skategoryzowane.

Sprawdzanie unikalnych wartości na kolumnie znakowej

df.species.unique()

Sprawdzanie zajętości obiektu DataFrame

Aby zobaczyć podsumowanie informacji o obiekcie DataFrame można wykonać polecenie:

df.info()

Zostanie zwrócona informacja o kolumnach i ich typach, liczbie niepustych wartości w kolumnach, jak również wielkości jaką obiekt zajmuje w pamięci.

Sposoby dostępu do danych

Dostęp do zakresu danych

Dostęp do pierwszych pięciu wierszy i wszystkich kolumn:

df.iloc[:5,:]

Dostęp do ostatnich pięciu wierszy i wszystkich kolumn:

df.iloc[-5:,:]

Dostęp do pierwszych n wierszy:

df.head(n)

Dostęp do n ostatnich wierszy:

df.tail(n)

Indeksowanie po kolumnie typu Date

Obiekt DataFrame pozwala na zdefiniowanie jednej kolumny jako kolumny indeksowej, a następnie na wykorzystanie wartości tej kolumny do pobierania danych z obiektu. W przypadku, jeśli tą kolumną jest kolumna typu Date możliwe są do wykorzystania różne ciekawe właściwości, np.:

Pobranie danych wskazanej kolumny dla wskazanej daty i godziny:

df.loc['2015-01-12 12:32','Company']

Pobranie zakresu danych wynikających z podanego roku i miesiąca:

df.loc['2015-01-12']

Pobranie zakresu danych pasujących do wprowadzonego zakresu dat:

df.loc['2015-01-12':'2015-01-13']

Reindeksowanie kolumny indeksowej

Za pomocą metody _reindex _możliwe jest reindeksowanie istniejącej kolumny indeksowej, np.: poprzez dodanie nowych wartości indeksów:

df.reindex(new_index_values)

Wówczas wiersze ze starym indeksem pasującym do nowego są pozostawiane, a wartości kolumn obiektu dla nowych indeksów są wypełniane wartościami pustymi. Można to zmienić używając atrybutu _method _przyjmującego wartości "ffill" lub "bfill". Pierwszy powoduje, że puste kolumny dla nowych indeksów są wypełniane wartościami kolumn niepustych dla ostatniego napotkanego indeksu. W przypadku "bfill" te puste kolumny są wypełniane wartościami kolumn niepustych pierwszego niepustego indeksu napotkanego po indeksie pustym.

Dostęp do wskazanej kolumny w obiekcie

Dostęp do kolumny w obiekcie DataFrame jest możliwy za pomocą jednego z dwóch sposobów. Zwracany jest wówczas obiekt: Series

column = df['column_name']
column = df.column_name

Konwersja typów kolumn w obiekcie DataFrame

Aby skonwertować daną kolumnę na typ prosty trzeba wykonać metodę:

df['column name'] = df['column name'].astype(str)

gdzie "str" oznacza nazwę typu danych.

Aby skonwertować daną kolumnę na kategorię trzeba wykonać metodę:

df['column name'] = df['column name'].astype('category')

Uwaga!!! Konwersja kolumny na kategorię zmniejsza ilość miejsca potrzebnego na przechowanie całego obiektu DataFrame

Aby skonwertować daną kolumnę na wartość numeryczną trzeba wykonać metodę:

df['column name'] = pd.to_numeric(df['column name'], errors='coerce')

Parametr "errors" ustawiony na wartość "coerce" spowoduje automatyczną zamianę wszystkich wartości, które nie mogą zostać skonwertowane na NaN.

Wywoływanie funkcji na wierszu lub kolumnie w obiekcie DataFrame

Na obiekcie DataFrame można wywołać metodę apply. Pozwala ona na przekazanie nazwy funkcji, która będzie wywołana na wierszu lub kolumnie obiektu DataFrame.

Aby wywołać funkcję na wierszu:

df_subset = df.apply(<nazwa funkcji>, axis = 1, <dodatkowe parametry do przekazanej jako argument funkcji>)

Aby wywołać funkcję na wszystkich kolumnach:

df_subset = df.apply(<nazwa funkcji>, axis = 0, <dodatkowe parametry do przekazanej jako argument funkcji>)

Aby wywołać funkcję na wskazanej kolumnie:

df_subset = df.<nazwa kolumny>.apply(<nazwa funkcji>, <dodatkowe parametry do przekazanej jako argument funkcji>)

Usuwanie danych zduplikowanych

Dane zduplikowane można usunąć korzystając z metody drop_duplicates.

df = df.drop_duplicates()

Usuwanie wierszy zawierających puste wartości

Wiersze, które zawierają puste wartości można usunąć korzystając z metody dropna:

df = df.dropna()

Wypełnienie wartościami danych z wartościami pustymi

Wartości puste można wypełnić zadanymi wartościami korzystając z metody fillna.

Może to być wartość wskazana przez użytkownika:

df['sex'] = ds['sex'].fillna('missing')

Albo może to być wartość wynikająca ze statystyki wartości niepustych w tej kolumnie, np.:

mean_value = df['tip'].mean()
df['tip'] = df['tip'].fillna(mean_value)

Sprawdzanie wartości w kolumnach

Metoda all zwraca wartość True, jeśli wszystkie wartości działania na wartościach kolumn mają wartość True.

Poniższy kod sprawdza czy wszystkie kolumny mają wartość niepustą

pd.notnull(ebola).notnull().all()

Jeśli napiszemy:

pd.notnull(ebola).notnull().all().all()

Dostaniemy pojedynczą wartość informującą o całościowym wyniku sprawdzenia.

Funkcje manipulujące na danych

"Zwijanie" wartości z wielu kolumn do jednej

Czasami, osobne obserwacje tego samego rodzaju są zapisywane w wielu kolumnach danej struktury danych. Przykład, to liczba urodzin w kolejnych latach, gdzie kolumny to kolejne lata. Funkcja _melt _pozwala na zamianę wartości we wskazanych kolumnach na wartości w jednej kolumnie, gdzie kolejna kolumna to nazwa poszczególnej kolumny.

gapminder_melt = pd.melt(gapminder, id_vars=['Life expectancy'])

W parametrze _id_vars _podaje się listę kolumn, które mają zostać niezmienione.

results matching ""

    No results matching ""