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