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.