Pandas: impor csv dengan jumlah kolom berbeda per baris
Anda dapat menggunakan sintaks dasar berikut untuk mengimpor file CSV ke panda ketika jumlah kolom per baris berbeda:
df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))
Nilai di dalam fungsi range() harus berupa jumlah kolom dalam baris dengan jumlah kolom maksimum.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: mengimpor CSV ke Pandas dengan jumlah kolom per baris yang berbeda
Katakanlah kita memiliki file CSV berikut bernama uneven_data.csv :
Perhatikan bahwa setiap baris tidak memiliki jumlah kolom yang sama.
Jika kami mencoba menggunakan fungsi read_csv() untuk mengimpor file CSV ini ke pandas DataFrame, kami akan menerima kesalahan:
import pandas as pd #attempt to import CSV file with differing number of columns per row df = pd. read_csv (' uneven_data.csv ', header= None ) ParserError: Error tokenizing data. C error: Expected 2 fields in line 2, saw 4
Kami menerima ParserError yang memberi tahu kami bahwa panda mengharapkan 2 bidang (karena itu adalah jumlah kolom di baris pertama) tetapi ia melihat 4 .
Kesalahan ini memberi tahu kita bahwa jumlah maksimum kolom dalam suatu baris adalah 4 .
Jadi, kita dapat mengimpor file CSV dan memberikan nilai range(4) ke argumen nama :
import pandas as pd #import CSV file with differing number of columns per row df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))) #view DataFrame print (df) 0 1 2 3 0 to 22 NaN NaN 1 B 16 10.0 12.0 2 C 25 10.0 NaN 3 D 14 2.0 7.0 4 E 20 4.0 NaN
Perhatikan bahwa kami berhasil mengimpor file CSV ke pandas DataFrame tanpa kesalahan apa pun karena kami secara eksplisit memberi tahu pandas untuk mengharapkan 4 kolom.
Secara default, pandas mengisi semua nilai yang hilang di setiap baris dengan NaN.
Jika Anda ingin nilai yang hilang muncul sebagai nol, Anda dapat menggunakan fungsi fillna() sebagai berikut:
#fill NaN values with zeros df_new = df. fillna ( 0 ) #view new DataFrame print (df_new) 0 1 2 3 0 to 22 0.0 0.0 1 B 16 10.0 12.0 2 C 25 10.0 0.0 3 D 14 2.0 7.0 4 E 20 4.0 0.0
Setiap nilai NaN di DataFrame kini telah diganti dengan nol.
Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas read_csv() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan Python:
Pandas: Cara melewati baris saat membaca file CSV
Pandas: Cara menambahkan data ke file CSV yang sudah ada
Pandas: Cara menentukan tipe saat mengimpor file CSV
Pandas: menetapkan nama kolom saat mengimpor file CSV