Series to jednowymiarowa tablica przeznaczona do przechowywania danych.
Składa się ona z danych, oraz odnośników do nich, zwanych powszechnie
index‘ami. Pisząc dane mam na myśli wszystkie standardowe typy występujące w
języku Python jak liczby stałe, listy, tuple, obiekty, itd.
employee_fields = ["Name", "Surename", "ID", "Salary"]
employee_data = ["Krzysztof", "Kowalski", "123456", 5000]
employee_series = pd.Series(index = employee_fields,
data = employee_data)
print(employee_series)
Name Krzysztof
Surename Kowalski
ID 123456
Salary 5000
dtype: object
Taki sam efekt uzyskamy tworząc obiekt bezpośrednio ze słownika
employee_dict = { "Name": "Krzysztof",
"Surename": "Kowalski",
"ID": "123456",
"Salary": 5000}
employee_series = pd.Series(employee_dict)
Dostęp do wartości i indeksów uzyskujemy przez własności values, oraz
index:
>>> employee_series.values
array(['Krzysztof', 'Kowalski', '123456', 5000], dtype=object)
>>> employee_series.index
Index(['Name', 'Surename', 'ID', 'Salary'], dtype='object')
Będąc w tym punkcie warto sprawdzić jakiego typu jest obiekt zwrócony przez wspomniane własności.
type(employee_series) # <class 'pandas.core.series.Series'>
type(employee_series.index) # <class 'pandas.core.indexes.base.Index'>
type(employee_series.values)# <class 'numpy.ndarray'>
Dostęp do elementów utworzone obiektu mamy poprzez numeryczne indeksy:
>>> employee_series[0]
'Krzysztof'
>>> employee_series[0:2]
Name Krzysztof
Surename Kowalski
dtype: object
Lub też podając nazwy indeksów do których chcemy uzyskać dostęp:
>>> employee_series[["Name", "Surename"]]
Name Krzysztof
Surename Kowalski
dtype: object
Podstawową strukturą danych pakietu pandas jest Series. Jest to
jednowymiarowa tablica z indeksowanymi elementami. Przykład użycia tworzący
Series z listy elementów: s = Series( [1, 2, 4, 5, 5] ) i dający im
domyślne, numeryczne, indeksy. Wartości indeksów możemy nadawać samodzielnie s
= Series( [1, 2, 4, 5, 5], index =['a', 'b', 'c', 'd', 'e'] ). Wyświetlając na
ekranie utworzony obiekt zobaczymy, że oprócz elementów wyświetlone zostaną
również przyporządkowane im indeksy.
Dostęp do elementów realizowany jest przez podanie interesujących nas indeksów.
Na przykład s[ [1, 2] ) by uzyskać dostęp do elementu z indeksem 1, oraz 2.
Ciekawostką jest, że w przypadku nadania nie numerycznych indeksów elementom
tabeli w dalszym ciągu będziemy w stanie uzyskać do nich dostęp podając ich
numeryczną pozycję.
Dostęp do samych wartości indeksów realizowany jest przez s.index i wraca
obiekt Index zawierający nazwy wszystkich użytych etykiet.
Często jako etykiet używa się dat. Istnieje specjalna klasa DatetimeIndex
stanowiąca indeks zoptymalizowany do przechowywania dat i czasów. Przykładowo
by stworzyć etykiety prezentujące serię dat pomiędzy określonymi i włączonymi
do serii punktami w czasie możemy wykonać kod: dates_label =
pd.date_range('2020-03-01', '2020-03-31'). Sam w sobie indeks jest mało
użyteczny, jednak możemy go wykorzystać do indeksowania elementów w Series.
Obiekt Series to nazwany szereg danych. Nazwę nadajemy przez przypisanie do
atrybutu .name wartości.
series[1]mask=[1, 3, 5 ], a
następnie przekazanie jej do serii series[mask].
Uzyskamy dostęp do wybranych indeksów,mask=[True, False, True,
False, True], a następnie przekazanie jej do serii series[mask]. Uzyskamy
dostęp do elementów na pozycjach True,Przekształcanie danych, ang. data wrangling to jedna z podstawowych operacji
w czasie analizy danych. Przykładowe operacje, które mogą być pomocne od samego
początku przygody z Pandas
s1.isin(s2) zwraca Series z maską boolowską dla stanowiącą porównanie
elementów,s1.map(lambda x: ...) zastosuj funkcję lambda na wszystkich elementachs1.drop(labels=[1, 2]) usuń elementy o indeksach 1 i 2,s1.add(s2) zwraca obiekt Series z elementami będącymi sumą elementów na
poszczególnych indeksachs1.append(s2) łączenie dwóch Series. Istotne jest to, że połączone
zostaną zarówno dane, jak i przypisane do nich indeksy. Może to być dość
mylące, dlatego też przed wykonaniem operacji warto wywołać funkcję z
parametrem s1.append(s2, ignore_index=True)s1.count() zwraca liczbę elementóws1.nunique() zwraca liczbę unikalnych wartościs1.unique() zwraca listę z unikalnymi wartościamis1.sort_values() zwraca obiekt Series z posortowanymi wartościami.
Przyporządkowane indeksy do elementów dalej pozostaną przypisane do
oryginalnych wartości.s1.sort_values(inplace=True) sortuje wartości obiektu. Przyporządkowane
indeksy do elementów dalej pozostaną przypisane do oryginalnych wartości.s1.reset_index(drop=True) resetuje index zaczynając numerację od 0.s1.reset_index() zwraca DataFrame z nowym indeksem zaczynającym się od
zera, zaś stary indeks zostanie przypisany do kolumny “Index”.s1.astype("float64") konwertuje dane na żądany typ.Ci którzy się uczą, posiadają ziemię, natomiast Ci, którzy się nauczyli, będą doskonale przygotowani do życia w świecie, którego już nie ma. Eric Hoffer, pisarz filozof