Pandas: importe csv com número diferente de colunas por linha
Você pode usar a seguinte sintaxe básica para importar um arquivo CSV para o pandas quando houver um número diferente de colunas por linha:
df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))
O valor dentro da função range() deve ser o número de colunas na linha com o número máximo de colunas.
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: importar CSV para Pandas com número diferente de colunas por linha
Digamos que temos o seguinte arquivo CSV chamado desigual_data.csv :
Observe que cada linha não possui o mesmo número de colunas.
Se tentarmos usar a função read_csv() para importar este arquivo CSV para um DataFrame do pandas, receberemos um erro:
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
Recebemos um ParserError que nos diz que o pandas esperava 2 campos (já que esse era o número de colunas na primeira linha), mas viu 4 .
Este erro nos diz que o número máximo de colunas em uma determinada linha é 4 .
Portanto, podemos importar o arquivo CSV e fornecer um valor de range(4) para o argumento de nomes :
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
Observe que podemos importar com êxito o arquivo CSV para um DataFrame do pandas sem erros, pois dissemos explicitamente ao pandas para esperar 4 colunas.
Por padrão, o pandas preenche todos os valores ausentes em cada linha com NaN.
Se quiser que os valores ausentes apareçam como zero, você pode usar a função fillna() da seguinte maneira:
#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
Cada valor NaN no DataFrame foi agora substituído por um zero.
Nota : Você pode encontrar a documentação completa da função read_csv() do pandas aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em Python:
Pandas: Como pular linhas ao ler um arquivo CSV
Pandas: como adicionar dados a um arquivo CSV existente
Pandas: como especificar tipos ao importar um arquivo CSV
Pandas: defina nomes de colunas ao importar um arquivo CSV