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

Tambahkan komentar

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