Anda cukup menggunakan DataFrame.fillna
untuk mengisi nan
langsung:
In [27]: df
Out[27]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 NaN -2.027325 1.533582
4 NaN NaN 0.461821
5 -0.788073 NaN NaN
6 -0.916080 -0.612343 NaN
7 -0.887858 1.033826 NaN
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
In [28]: df.mean()
Out[28]:
A -0.151121
B -0.231291
C -0.530307
dtype: float64
In [29]: df.fillna(df.mean())
Out[29]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 -0.151121 -2.027325 1.533582
4 -0.151121 -0.231291 0.461821
5 -0.788073 -0.231291 -0.530307
6 -0.916080 -0.612343 -0.530307
7 -0.887858 1.033826 -0.530307
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
Doktring fillna
mengatakan bahwa itu value
harus skalar atau dikt, bagaimanapun, tampaknya bekerja dengan Series
baik juga. Jika Anda ingin mengirimkan dikt, Anda dapat menggunakannya df.mean().to_dict()
.
df.fillna(df.mean())
akan mengembalikan bingkai data baru, jadi Anda harus menulisdf=df.fillna(df.mean())
untuk menyimpannya.df=df.fillna(df.mean())
Anda juga bisa menggunakandf.fillna(df.mean(), inplace=True)
Mencoba:
sumber
Terapkan per kolom rata-rata kolom itu dan isi
sumber
sumber
Jika Anda ingin menyalahkan nilai yang hilang dengan mean dan Anda ingin pergi kolom demi kolom, maka ini hanya akan menyalahkan dengan rata-rata kolom itu. Ini mungkin sedikit lebih mudah dibaca.
sumber
Langsung digunakan
df.fillna(df.mean())
untuk mengisi semua nilai nol dengan meanJika Anda ingin mengisi nilai nol dengan rata-rata kolom itu maka Anda dapat menggunakan ini
anggap di
x=df['Item_Weight']
siniItem_Weight
adalah nama kolomdi sini kita menugaskan (mengisi nilai nol dari x dengan rata-rata x ke x)
Jika Anda ingin mengisi nilai nol dengan beberapa string kemudian gunakan
di sini
Outlet_size
adalah nama kolomsumber
Pilihan lain selain yang di atas adalah:
Ini kurang elegan daripada respons sebelumnya untuk mean, tetapi bisa lebih pendek jika Anda ingin mengganti nol dengan beberapa fungsi kolom lainnya.
sumber
Panda: Bagaimana cara mengganti nilai NaN (
nan
) dengan rata-rata (rata-rata), median atau statistik lainnya dari satu kolomKatakanlah DataFrame
df
Anda dan Anda memiliki satu kolom yang dipanggilnr_items
. Ini adalah:df['nr_items']
Jika Anda ingin mengganti dengan
NaN
nilai-nilai kolom Andadf['nr_items']
dengan rerata kolom :Gunakan metode
.fillna()
:mean_value=df['nr_items'].mean()
df['nr_item_ave']=df['nr_items'].fillna(mean_value)
Saya telah membuat
df
kolom baru yang disebutnr_item_ave
untuk menyimpan kolom baru denganNaN
nilai - nilai yang digantikan olehmean
nilai kolom.Anda harus berhati-hati saat menggunakan
mean
. Jika Anda memiliki outlier lebih direkomendasikan untuk menggunakanmedian
sumber
menggunakan kelas preprocessing perpustakaan sklearn
Catatan: Dalam nilai parameter versi terbaru
missing_values
berubahnp.nan
dariNaN
sumber