Filtrowanie danych w pandas polega na wybieraniu wierszy lub kolumn dataframe’u, które spełniają określone warunki. Można to zrobić za pomocą operatorów porównania, takich jak ==
, >
, <
itp., lub za pomocą metod, takich jak isin()
lub query()
.
Przykład użycia operatorów porównania:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]})
col1 col2 col3
0 1 4 7
1 2 5 8
2 3 6 9
# Wybieranie wierszy, gdzie wartość w kolumnie 'col1' jest większa niż 1
df1 = df[df['col1'] > 1]
print(df1)
col1 col2 col3
1 2 5 8
2 3 6 9
# Wybieranie wierszy, gdzie wartość w kolumnie 'col2' jest równa 5
df2 = df[df['col2'] == 5]
print(df2)
col1 col2 col3
1 2 5 8
# Wybieranie wierszy, gdzie wartość w kolumnie 'col3' jest mniejsza lub równa 8
df3 = df[df['col3'] <= 8]
print(df3)
col1 col2 col3
0 1 4 7
Operatory porównania, które mogą być użyte do filtrowania danych w pandas, to:
==
: równe!=
: różne>
: większe<
: mniejsze>=
: większe lub równe<=
: mniejsze lub równe
Można też łączyć operatory porównania za pomocą operatorów logicznych, takich jak `&’, ‘|’.
Przykłady:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]})
col1 col2 col3
0 1 4 7
1 2 5 8
2 3 6 9
# Wybieranie wierszy, gdzie wartość w kolumnie 'col1' jest większa niż 1 i mniejsza niż 3
df1 = df[(df['col1'] > 1) & (df['col1'] < 3)]
print(df1)
col1 col2 col3
1 2 5 8
# Wybieranie wierszy, gdzie wartość w kolumnie 'col2' jest równa 4 lub 6
df2 = df[(df['col2'] == 4) | (df['col2'] == 6)]
print(df2)
col1 col2 col3
0 1 4 7
2 3 6 9
Innym sposobem filtrowania danych jest użycie metody isin()
, która pozwala wybrać wiersze, w których wartości w danej kolumnie znajdują się w określonym zbiorze.
Przykład:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]})
col1 col2 col3
0 1 4 7
1 2 5 8
2 3 6 9
# Wybieranie wierszy, w których wartości w kolumnie 'col1' znajdują się w zbiorze [1, 3]
df1 = df[df['col1'].isin([1, 3])]
print(df1)
col1 col2 col3
0 1 4 7
2 3 6 9
# Wybieranie wierszy, w których wartości w kolumnie 'col2' nie znajdują się w zbiorze [4, 6]
df2 = df[~df['col2'].isin([4, 6])]
print(df2)
col1 col2 col3
1 2 5 8
Ostatnim sposobem filtrowania danych jest użycie metody query()
, która pozwala wybrać wiersze, spełniające określone warunki zapisane w postaci stringa.
Przykład:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]})
col1 col2 col3
0 1 4 7
1 2 5 8
2 3 6 9
# Wybieranie wierszy, gdzie wartość w kolumnie 'col1' jest większa niż 1
df1 = df.query('col1 > 1')
print(df1)
col1 col2 col3
1 2 5 8
2 3 6 9
# Wybieranie wierszy, gdzie wartość w kolumnie 'col2' jest równa 5
df2 = df.query('col2 == 5')
print(df2)
col1 col2 col3
1 2 5 8
# Wybieranie wierszy, gdzie wartość w kolumnie 'col3' jest mniejsza lub równa 8
df3 = df.query('col3 <= 8')
print(df3)
col1 col2 col3
0 1 4 7
Oczywiście, można też łączyć różne sposoby filtrowania danych, aby uzyskać bardziej złożone wyniki.