Pandas: gunakan groupby untuk menghitung rata-rata dan jangan mengabaikan nan
Saat menggunakan fungsi pandas groupby() untuk mengelompokkan berdasarkan satu kolom dan menghitung nilai rata-rata kolom lain, pandas akan mengabaikan nilai NaN secara default.
Jika Anda ingin menampilkan NaN jika ada nilai NaN di kolom, Anda dapat menggunakan sintaks dasar berikut:
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})
Contoh khusus ini akan mengelompokkan baris kolom DataFrame menurut Tim dan kemudian menghitung nilai rata-rata kolom poin tanpa mengabaikan nilai NaN .
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: gunakan pandas groupby() dan jangan abaikan NaNs
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:
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
Misalkan kita menggunakan sintaks berikut untuk menghitung nilai poin rata-rata, yang dikelompokkan berdasarkan tim :
#calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()
team
At 21.0
B 22.8
Name: points, dtype: float64
Perhatikan bahwa nilai poin rata-rata untuk setiap tim dikembalikan, meskipun terdapat nilai NaN untuk Tim A di kolom poin.
Secara default, panda mengabaikan nilai NaN saat menghitung rata-rata.
Jika Anda ingin menampilkan NaN sebagai nilai rata-rata jika memang ada NaN , Anda dapat menggunakan sintaks berikut:
#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
Perhatikan bahwa nilai NaN dikembalikan sebagai nilai poin rata-rata untuk Tim A kali ini.
Dengan menggunakan argumen skipna=False , kami memberi tahu panda untuk tidak mengabaikan nilai NaN saat menghitung rata-rata.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Cara menghitung nilai unik menggunakan Pandas GroupBy
Cara menerapkan fungsi ke Pandas Groupby
Cara Membuat Plot Batang dari Pandas GroupBy