Apa yang harus dilakukan ketika string data NA/ND tidak dikenali sebagai nilai yang hilang di panda

2018 12 年 月 日 5

nilai yang hilang di panda

Dalam kumpulan data eksperimental, dll., kosong dapat diisi dengan NA, NA (Tidak dianalisis) atau ND, ND (Tidak terdeteksi). Di panda, NA dan ND dikenali hanya sebagai string (objek), jadi tidak mungkin memproses batch nilai yang hilang menggunakan fungsi dropna(), fillna(), dan isnull() sebagaimana adanya. .

Berikut ini diakui sebagai nilai yang hilang di panda:

  • Tidak
  • None
  • np.nan
  • matematika.nan

String NA dan ND harus dikonversi ke salah satu di atas.

Pemrosesan untuk NA dan ND

Buat data sampel yang berisi NA, ND, dan NaN.

Di [1]: impor numpy sebagai np impor panda sebagai pd df = pd.DataFrame({'A': [ 1, 'ND', 2, 3], 'B': [ 4,'NA', 5, 6 ], 'C': [ 7, 'ND', Tidak ada, np.nan]}) Keluar[1] A B C 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

Tidakne dan np.nan dikenali dan dihitung sebagai nilai yang hilang, tetapi ND dan NA salah.
isnull(): Mengembalikan True jika nilainya hilang
isnull.sum(): agregat nilai yang hilang

In [2]: df.isnull() Out[2]: A B C 0 False False False 1 False False False 2 False False True 3 False False True In [3]: df.isnull().sum() Out[3] : A 0 B 0 C 2 dtype: int64

Ganti string ND dengan fungsi ganti

Masuk[4]: df = df.replace('ND', np.nan) Keluar[4]: A B C 0 1 4 7 1 NaN NA NaN 2 2 5 NaN 3 3 5 NaN

isnull() dan fillna() sekarang dapat diterapkan.

Di [5]: df.isnull() Keluar[5]: A B C 0 Salah Salah Salah Salah 1 Benar Salah Benar 2 Salah Salah Benar 3 Salah Salah Benar Di [6]: df.isnull().sum() Keluar[6] : A 2 B 0 C 2 dtype: int64 In [7]: df.fillna(10) Out[7]: A B C 0 1 4 7 1 10 NA 10 2 2 5 10 3 3 5 10