Pandas: імпорт csv з різною кількістю стовпців у рядку


Ви можете використовувати наступний базовий синтаксис, щоб імпортувати файл CSV у pandas, якщо кількість стовпців у рядку різна:

 df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))

Значення всередині функції range() має бути кількістю стовпців у рядку з максимальною кількістю стовпців.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: імпорт CSV у Pandas з різною кількістю стовпців у рядку

Скажімо, у нас є такий файл CSV під назвою uneven_data.csv :

Зауважте, що кожен рядок не має однакової кількості стовпців.

Якщо ми спробуємо використати функцію read_csv() , щоб імпортувати цей файл CSV у pandas DataFrame, ми отримаємо помилку:

 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

Ми отримуємо помилку ParserError , яка повідомляє нам, що pandas очікувала 2 поля (оскільки це була кількість стовпців у першому рядку), але побачила 4 .

Ця помилка повідомляє нам, що максимальна кількість стовпців у даному рядку становить 4 .

Отже, ми можемо імпортувати файл CSV і надати значення діапазону (4) для аргументу імен :

 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

Зверніть увагу, що ми можемо успішно імпортувати файл CSV у pandas DataFrame без будь-яких помилок, оскільки ми явно сказали pandas очікувати 4 стовпці.

За замовчуванням pandas заповнює всі відсутні значення в кожному рядку NaN.

Якщо ви хочете, щоб пропущені значення відображалися як нуль, ви можете використовувати функцію fillna() наступним чином:

 #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

Кожне значення NaN у DataFrame тепер замінено нулем.

Примітка : Ви можете знайти повну документацію функції pandas read_csv() тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в Python:

Pandas: як пропускати рядки під час читання файлу CSV
Pandas: Як додати дані до наявного файлу CSV
Pandas: як указати типи під час імпортування файлу CSV
Pandas: установіть назви стовпців під час імпорту файлу CSV

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *