Bagaimana cara mengabaikan nan dengan python?

Untuk memulai, berikut adalah sintaks yang dapat Anda terapkan dalam rangka menjatuhkan baris dengan nilai NaN di DataFrame Anda

df.dropna()

Di bagian selanjutnya, Anda akan mengamati langkah-langkah untuk menerapkan sintaks di atas dalam praktik

Langkah-langkah untuk Menjatuhkan Baris dengan Nilai NaN di Pandas DataFrame

Langkah 1. Buat DataFrame dengan Nilai NaN

Katakanlah Anda memiliki kumpulan data berikut

nilai_1nilai_2700DDDABC150500350XYZ40012005000

Anda kemudian dapat menangkap data di atas dengan Python dengan membuat DataFrame

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)
_

Setelah Anda menjalankan kode, Anda akan mendapatkan DataFrame ini

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000

Perhatikan bahwa DataFrame berisi keduanya

  • Data numerik. 700, 500, 1200, 150 , 350 ,400, 5000
  • Nilai non-numerik. ABC, XYZ, DDD

Anda kemudian dapat menggunakan to_numeric untuk mengonversi nilai dalam kumpulan data menjadi format float. Tetapi karena 3 dari nilai tersebut non-numerik, Anda akan mendapatkan 'NaN' untuk 3 nilai tersebut

Berikut adalah kode yang dapat Anda gunakan untuk mendapatkan nilai NaN

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)

Seperti yang Anda amati, baris pertama, kedua, dan keempat sekarang memiliki nilai NaN

   values_1   values_2
0     700.0        NaN
1       NaN      150.0
2     500.0      350.0
3       NaN      400.0
4    1200.0     5000.0
_

Langkah 2. Jatuhkan Baris dengan Nilai NaN di Pandas DataFrame

Untuk menghapus semua baris dengan nilai NaN, Anda dapat menggunakan df. dropna()

Berikut adalah kode Python lengkap untuk menghapus baris tersebut dengan nilai NaN

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)

Jalankan kode, dan Anda hanya akan melihat dua baris tanpa nilai NaN

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0
_

Anda mungkin memperhatikan bahwa kedua baris tersebut tidak lagi memiliki indeks berurutan. Saat ini 2 dan 4. Anda kemudian dapat mengatur ulang indeks untuk memulai dari 0

Dalam ilmu data terapan, Anda biasanya akan kehilangan data. Misalnya, aplikasi industri dengan sensor akan memiliki data sensor yang hilang pada hari-hari tertentu

Anda memiliki beberapa alternatif untuk bekerja dengan data yang hilang. Kamu bisa

  • Jatuhkan seluruh baris
  • Isi kombinasi baris-kolom dengan beberapa nilai

Tidak masuk akal untuk menghapus kolom karena akan membuang metrik tersebut untuk semua baris. Jadi, mari kita lihat bagaimana menangani skenario ini

(Tutorial ini adalah bagian dari Panduan Panda kami. Gunakan menu sebelah kanan untuk menavigasi. )

NaN berarti data yang hilang

Data yang hilang diberi label NaN

Perhatikan bahwa np. nan tidak sama dengan Python Tidak ada. Perhatikan juga bahwa np. nan bahkan tidak ke np. nan sebagai np. nan pada dasarnya berarti tidak terdefinisi

Di sini buat kerangka data dengan 3 kolom dan 3 baris. Array np. arange(1,4) disalin ke setiap baris

import pandas as pd
import numpy as np
df = pd.DataFrame([np.arange(1,4)],index=['a','b','c'],
columns=["X","Y","Z"]) 

Hasil

Bagaimana cara mengabaikan nan dengan python?

Sekarang indeks ulang array ini dengan menambahkan indeks d. Karena d tidak memiliki nilai maka diisi dengan NaN

df.reindex(index=['a','b','c','d'])
_

Bagaimana cara mengabaikan nan dengan python?

isna

Sekarang gunakan isna untuk memeriksa nilai yang hilang

pd.isna(df)
_

Bagaimana cara mengabaikan nan dengan python?

notna

Pemeriksaan sebaliknya—mencari nilai sebenarnya—adalah notna()

pd.notna(df)

Bagaimana cara mengabaikan nan dengan python?

nat

nat berarti tanggal yang hilang

df['time'] = pd.Timestamp('20211225')
df.loc['d'] = np.nan

Bagaimana cara mengabaikan nan dengan python?

fillna

Di sini kita bisa mengisi nilai NaN dengan bilangan bulat 1 menggunakan fillna(1). Kolom tanggal tidak diubah karena bilangan bulat 1 bukan tanggal

df=df.fillna(1)

Bagaimana cara mengabaikan nan dengan python?
Untuk memperbaikinya, isi nilai waktu kosong dengan

df['time'].fillna(pd.Timestamp('20221225'))

dropna()

dropna() artinya membuang baris atau kolom yang nilainya kosong. Cara lain untuk mengatakannya adalah dengan hanya menampilkan baris atau kolom yang tidak kosong

Di sini kita mengisi baris c dengan NaN

df = pd.DataFrame([np.arange(1,4)],index=['a','b','c'],
columns=["X","Y","Z"])
df.loc['c']=np.NaN

Bagaimana cara mengabaikan nan dengan python?

Kemudian jalankan dropna di atas sumbu baris (sumbu=0).

df.dropna()

Anda juga bisa menulis

df.dropna(axis=0)

Semua baris kecuali c dijatuhkan

Bagaimana cara mengabaikan nan dengan python?

Untuk menjatuhkan kolom

df.reindex(index=['a','b','c','d'])
_0

Bagaimana cara mengabaikan nan dengan python?

df.reindex(index=['a','b','c','d'])
_1

Bagaimana cara mengabaikan nan dengan python?

menambah

Fitur lain dari Pandas adalah ia akan mengisi nilai yang hilang menggunakan apa yang logis

Pertimbangkan rangkaian waktu — katakanlah Anda memantau beberapa mesin dan pada hari-hari tertentu gagal melaporkan. Di bawahnya ada laporan tentang Natal dan hari lainnya dalam minggu itu. Kemudian kami mengindeks ulang Seri Pandas, menciptakan celah di garis waktu kami

df.reindex(index=['a','b','c','d'])
_2

Bagaimana cara mengabaikan nan dengan python?

Kami menggunakan fungsi interpolasi (). Panda mengisinya dengan baik menggunakan titik tengah di antara titik-titik tersebut. Tentu saja, jika ini lengkung, itu akan cocok dengan fungsi itu dan menemukan rata-rata dengan cara lain

Bagaimana Anda menghapus nilai NaN?

Untuk menghapus semua baris dengan nilai NaN, Anda dapat menggunakan df. dropna() .

Bagaimana Anda menutupi nilai NaN dengan Python?

Untuk menutupi array di mana nilai yang tidak valid terjadi (NaN atau infs), gunakan numpy. ma. metode masked_invalid() dengan Python Numpy. Fungsi ini adalah jalan pintas ke masked_where, dengan kondisi = ~(np.

Bagaimana cara mengganti NaN dengan apa-apa?

Untuk mengganti nilai NaN dengan string Kosong pada banyak kolom atau semua kolom dari daftar, gunakan df[['Kursus','Biaya']] = df[[ . fillna('') . Ini menggantikan nilai NaN pada kolom Kursus dan Biaya.