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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *