import pandas as pdimport numpy as nps = pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])print(s)print(s['b'])s['b'] =8print(s)print(s[s >5])print(s *2)print(np.sin(s))
a 3
b -5
c 7
d 4
dtype: int64
-5
a 3
b 8
c 7
d 4
dtype: int64
b 8
c 7
dtype: int64
a 6
b 16
c 14
d 8
dtype: int64
a 0.141120
b 0.989358
c 0.656987
d -0.756802
dtype: float64
Country Capital Population
0 Belgium Brussels 11190846
1 India New Delhi 1303171035
2 Brazil Brasília 207847528
Country Population Capital
0 Belgium 11190846 Brussels
1 India 1303171035 New Delhi
2 Brazil 207847528 Brasília
Country
0 Belgium
--
Country
0 Belgium
--
Country Brazil
Population 207847528
Capital Brasília
Name: 2, dtype: object
--
0 Brussels
1 New Delhi
2 Brasília
Name: Capital, dtype: object
--
New Delhi
loc:
To metoda indeksowania oparta na etykietach, co oznacza, że używa nazw etykiet kolumn i indeksów wierszy do wyboru danych.
Działa na podstawie etykiet indeksu oraz etykiet kolumny, co pozwala na wygodniejsze filtrowanie danych.
Obsługuje zarówno jednostkowe etykiety, jak i zakresy etykiet.
Działa również z etykietami nieliczbowymi.
Przykład użycia: df.loc[1:3, ['A', 'B']] - zwraca wiersze od indeksu 1 do 3 (włącznie) oraz kolumny ‘A’ i ‘B’.
iloc:
To metoda indeksowania oparta na pozycji, co oznacza, że używa liczbowych indeksów kolumn i wierszy do wyboru danych.
Działa na podstawie liczbowych indeksów zarówno dla wierszy, jak i kolumn.
Obsługuje jednostkowe indeksy oraz zakresy indeksów.
W przypadku używania zakresów indeksów, zakres jest półotwarty, co oznacza, że prawy kraniec nie jest uwzględniany.
Przykład użycia: df.iloc[1:3, 0:2] - zwraca wiersze od indeksu 1 do 3 (bez 3) oraz kolumny od indeksu 0 do 2 (bez 2).
0 11190846
1 1303171035
2 207847528
Name: Population, dtype: int64
--
Country Population Capital
1 India 1303171035 New Delhi
--
Population Capital
0 11190846 Brussels
1 1303171035 New Delhi
2 207847528 Brasília
--
** Ważne: trzeba zainstalować bibliotekę openpyxl do importu .xlsx oraz xlrd do importu .xls (nie trzeba ich importować w kodzie jawnie w większości wypadków)
Wybrane argumenty:
io - ścieżka dostępu
sheet_name=0 - nazwa arkusza
header='infer' - nagłówek - domyślnie nazwy kolumn, ew. header=None oznacza brak nagłówka
index_col=None - ustalenie kolumny na indeksy (nazwy wierszy)
right: ramka danych, którą chcesz dołączyć do oryginalnej ramki danych.
how: określa typ łączenia. Dostępne są cztery typy: ‘inner’, ‘outer’, ‘left’ i ‘right’. ‘inner’ to domyślna wartość, która zwraca tylko te wiersze, które mają pasujące klucze w obu ramkach danych.
on: nazwa lub lista nazw, które mają być używane do łączenia. Musi to być nazwa występująca zarówno w oryginalnej, jak i prawej ramce danych.
left_on i right_on: nazwy kolumn w lewej i prawej ramce danych, które mają być używane do łączenia. Można to użyć, jeśli nazwy kolumn nie są takie same.
left_index i right_index: czy indeksy z lewej i prawej ramki danych mają być używane do łączenia.
sort: czy wynikowa ramka danych ma być posortowany według łączonych kluczy.
suffixes: sufiksy, które mają być dodane do nazw kolumn, które nachodzą na siebie. Domyślnie to (’_x’, ’_y’).
copy: czy zawsze kopiować dane, nawet jeśli nie są potrzebne.
indicator: dodaj kolumnę do wynikowej ramki danych, która pokazuje źródło każdego wiersza.
validate: sprawdź, czy określone zasady łączenia są spełnione.
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K3 A3 B3
key C D
0 K0 C0 D0
1 K1 C1 D1
2 K4 C2 D2
3 K5 C3 D3
Inner join
key A B C D _merge
0 K0 A0 B0 C0 D0 both
1 K1 A1 B1 C1 D1 both
Outer join
key A B C D _merge
0 K0 A0 B0 C0 D0 both
1 K1 A1 B1 C1 D1 both
2 K2 A2 B2 NaN NaN left_only
3 K3 A3 B3 NaN NaN left_only
4 K4 NaN NaN C2 D2 right_only
5 K5 NaN NaN C3 D3 right_only
Left join
key A B C D _merge
0 K0 A0 B0 C0 D0 both
1 K1 A1 B1 C1 D1 both
2 K2 A2 B2 NaN NaN left_only
3 K3 A3 B3 NaN NaN left_only
Right join
key A B C D _merge
0 K0 A0 B0 C0 D0 both
1 K1 A1 B1 C1 D1 both
2 K4 NaN NaN C2 D2 right_only
3 K5 NaN NaN C3 D3 right_only
other: ramka danych, którą chcesz dołączyć do oryginalnej ramki danych.
on: nazwa lub lista nazw kolumn w oryginalnej ramxce danych, do których chcesz dołączyć.
how: określa typ łączenia. Dostępne są cztery typy: ‘inner’, ‘outer’, ‘left’ i ‘right’. ‘left’ to domyślna wartość, która zwraca wszystkie wiersze z oryginalnej ramki danych i pasujące wiersze z drugiej ramki danych. Wartości są uzupełniane wartością NaN, jeśli nie ma dopasowania.
lsuffix i rsuffix: sufiksy do dodania do kolumn, które się powtarzają. Domyślnie jest to puste.
objs: sekwencja ramek danych, które chcesz połączyć.
axis: oś, wzdłuż której chcesz łączyć ramki danych. Domyślnie to 0 (łączenie wierszy, pionowo), ale można także ustawić na 1 (łączenie kolumn, poziomo).
join: określa typ łączenia. Dostępne są dwa typy: ‘outer’ i ‘inner’. ‘outer’ to domyślna wartość, która zwraca wszystkie kolumny z każdej ramki danych. ‘inner’ zwraca tylko te kolumny, które są wspólne dla wszystkich ramek danych.
ignore_index: jeśli ustawione na True, nie używa indeksów z ramek danych do tworzenia indeksu w wynikowej ramce danych. Zamiast tego tworzy nowy indeks od 0 do n-1.
keys: wartości do skojarzenia z obiektami.
levels: określone indeksy dla nowej ramki danych.
names: nazwy dla poziomów indeksów (jeśli są wielopoziomowe).
verify_integrity: sprawdza, czy nowy, skonkatenowana ramka danych nie ma powtarzających się indeksów.
sort: czy sortować niekonkatenacyjną oś (np. indeksy, jeśli axis=0), niezależnie od danych.
copy: czy zawsze kopiować dane, nawet jeśli nie są potrzebne.
A B
0 A0 B0
1 A1 B1
2 A2 B2
C D
0 C0 D0
1 C1 D1
2 C2 D2
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
A B C D
df1 0 A0 B0 NaN NaN
1 A1 B1 NaN NaN
2 A2 B2 NaN NaN
df2 0 NaN NaN C0 D0
1 NaN NaN C1 D1
2 NaN NaN C2 D2
A B C D
0 foo one 2.0 3.0
1 bar one 1.0 2.0
2 baz two 3.0 1.0
A B My_Var My_Val
0 foo one C 2.0
1 bar one C 1.0
2 baz two C 3.0
3 foo one D 3.0
4 bar one D 2.0
5 baz two D 1.0
“Tidy data”
Imię
Wiek
Wzrost
Kolor oczu
Adam
26
167
Brązowe
Sylwia
34
164
Piwne
Tomasz
42
183
Niebieskie
jedna obserwacja (jednostka statystyczna) = jeden wiersz w tabeli/macierzy/ramce danych
wartosci danej cechy znajduja sie w kolumnach
jeden typ/rodzaj obserwacji w jednej tabeli/macierzy/ramce danych
Obsługa brakujących danych
import numpy as npimport pandas as pdstring_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])print(string_data)print(string_data.isnull())print(string_data.dropna())
from numpy import nan as NAimport pandas as pddata = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA], [NA, NA, NA], [NA, 6.5, 3.]])cleaned = data.dropna()print(cleaned)print(data.dropna(how='all'))data[4] = NAprint(data.dropna(how='all', axis=1))print(data)print(data.fillna(0))print(data.fillna({1: 0.5, 2: 0}))
0 1 2
0 1.0 6.5 3.0
0 1 2
0 1.0 6.5 3.0
1 1.0 NaN NaN
3 NaN 6.5 3.0
0 1 2
0 1.0 6.5 3.0
1 1.0 NaN NaN
2 NaN NaN NaN
3 NaN 6.5 3.0
0 1 2 4
0 1.0 6.5 3.0 NaN
1 1.0 NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN 6.5 3.0 NaN
0 1 2 4
0 1.0 6.5 3.0 0.0
1 1.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0
3 0.0 6.5 3.0 0.0
0 1 2 4
0 1.0 6.5 3.0 NaN
1 1.0 0.5 0.0 NaN
2 NaN 0.5 0.0 NaN
3 NaN 6.5 3.0 NaN
k1 k2
0 one 1
1 two 1
2 one 2
3 two 3
4 one 3
5 two 4
6 two 4
0 False
1 False
2 False
3 False
4 False
5 False
6 True
dtype: bool
k1 k2
0 one 1
1 two 1
2 one 2
3 two 3
4 one 3
5 two 4