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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *