Pandy: importuj plik csv z różną liczbą kolumn w wierszu


Możesz użyć następującej podstawowej składni, aby zaimportować plik CSV do pand, gdy liczba kolumn w wierszu jest różna:

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

Wartością wewnątrz funkcji range() powinna być liczba kolumn w wierszu z maksymalną liczbą kolumn.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: zaimportuj plik CSV do Pand z różną liczbą kolumn w wierszu

Załóżmy, że mamy następujący plik CSV o nazwie irre_data.csv :

Należy pamiętać, że każdy wiersz nie ma tej samej liczby kolumn.

Jeśli spróbujemy użyć funkcji read_csv() do zaimportowania tego pliku CSV do ramki DataFrame pandy, otrzymamy błąd:

 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

Otrzymujemy błąd ParserError , który mówi nam, że pandas spodziewała się 2 pól (ponieważ taka była liczba kolumn w pierwszym wierszu), ale zobaczyła 4 .

Ten błąd mówi nam, że maksymalna liczba kolumn w danym wierszu wynosi 4 .

Możemy więc zaimportować plik CSV i podać wartość range(4) do argumentu nazwy :

 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

Zauważ, że jesteśmy w stanie pomyślnie zaimportować plik CSV do ramki DataFrame pand bez żadnych błędów, ponieważ wyraźnie powiedzieliśmy pandom, aby oczekiwały 4 kolumn.

Domyślnie pandy wypełniają wszystkie brakujące wartości w każdym wierszu NaN.

Jeśli chcesz, aby brakujące wartości były wyświetlane jako zero, możesz użyć funkcji fillna() w następujący sposób:

 #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

Każda wartość NaN w ramce danych została teraz zastąpiona zerem.

Uwaga : pełną dokumentację funkcji pandy read_csv() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Pythonie:

Pandy: Jak pominąć linie podczas czytania pliku CSV
Pandy: Jak dodać dane do istniejącego pliku CSV
Pandy: Jak określić typy podczas importowania pliku CSV
Pandy: ustaw nazwy kolumn podczas importowania pliku CSV

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *