Pandy: użyj groupby do obliczenia średniej i nie ignoruj nan


Podczas korzystania z funkcji pandas groupby() do grupowania według jednej kolumny i obliczania średniej wartości innej kolumny, pandy domyślnie ignorują wartości NaN .

Jeśli zamiast tego chcesz wyświetlić NaN , jeśli w kolumnie znajdują się wartości NaN , możesz użyć następującej podstawowej składni:

 df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

W tym konkretnym przykładzie wiersze kolumny DataFrame według zespołu zostaną pogrupowane, a następnie obliczona zostanie średnia wartość kolumny punktów bez ignorowania wartości NaN .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: użyj pandy groupby() i nie ignoruj NaN

Załóżmy, że mamy następującą ramkę danych pand, która zawiera informacje o różnych koszykarzach:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [15, np.nan, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team points
0 to 15.0
1 A NaN
2 A 24.0
3 A 25.0
4 A 20.0
5 B 35.0
6 B 34.0
7B 19.0
8B 14.0
9B 12.0

Załóżmy, że używamy następującej składni do obliczenia średniej wartości punktów w podziale na zespoły :

 #calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()

team
At 21.0
B 22.8
Name: points, dtype: float64

Należy pamiętać, że zwracana jest średnia wartość punktów dla każdej drużyny , nawet jeśli w kolumnie punktów znajduje się wartość NaN dla drużyny A.

Domyślnie pandy po prostu ignorują wartość NaN podczas obliczania średniej.

Jeśli zamiast tego chcesz wyświetlić NaN jako wartość średnią, jeśli rzeczywiście występują NaN , możesz użyć następującej składni:

 #calculate mean points value grouped by team and don't ignore NaNs
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

      points
team	
To NaN
B 22.8

Należy pamiętać, że tym razem wartość NaN jest zwracana jako średnia wartość punktowa drużyny A.

Używając argumentu skipna=False , powiedzieliśmy pandom, aby przy obliczaniu średniej nie ignorowały wartości NaN .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Jak liczyć unikalne wartości za pomocą Pandas GroupBy
Jak zastosować funkcję do Pandas Groupby
Jak utworzyć wykres słupkowy z Pandas GroupBy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *