Carregar dados do txt com pandas


159

Estou carregando um arquivo txt contendo uma mistura de dados flutuantes e de string. Eu quero armazená-los em uma matriz onde eu possa acessar cada elemento. Agora estou apenas fazendo

import pandas as pd

data = pd.read_csv('output_list.txt', header = None)
print data

Esta é a estrutura do arquivo de entrada: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Agora os dados são importados como uma coluna exclusiva. Como posso dividi-lo, para armazenar diferentes elementos separadamente (para que eu possa ligar data[i,j])? E como posso definir um cabeçalho?

Respostas:


217

Você pode usar:

data = pd.read_csv('output_list.txt', sep=" ", header=None)
data.columns = ["a", "b", "c", "etc."]

Adicione sep=" "seu código, deixando um espaço em branco entre as aspas. Assim, os pandas podem detectar espaços entre valores e classificar em colunas. As colunas de dados são para nomear suas colunas.


Obrigado! Como posso acessar um elemento da tabela?
Albus_c

se você quiser chamar uma coluna, use data.a se você nomeou a coluna "a".
Pietrovismara 04/02

1
Ou se você quiser chamar uma única linha que você pode usar data.a [1] (este exemplo chama a primeira linha da coluna)
pietrovismara

Ótimo! Isso consertou tudo #
24414 albus_c

87

Gostaria de adicionar às respostas acima, você pode usar diretamente

df = pd.read_fwf('output_list.txt')

fwf significa linhas formatadas em largura fixa.


38

A solução do @ Pietrovismara está correta, mas eu gostaria de adicionar: em vez de ter uma linha separada para adicionar nomes de colunas, é possível fazer isso em pd.read_csv.

df = pd.read_csv('output_list.txt', sep=" ", header=None, names=["a", "b", "c"])


13

Se você não tiver um índice atribuído aos dados e não tiver certeza de qual é o espaçamento, poderá usar para permitir que os pandas atribuam um índice e procurem vários espaços.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)

3
Equivalentemente você pode especificar o argumento mais detalhado delim_whitespace=Trueem vez do '\s+'delimitador
ALollz

8

Você pode fazer o seguinte:

import pandas as pd
df = pd.read_csv('file_location\filename.txt', delimiter = "\t")

(como, df = pd.read_csv ('F: \ Desktop \ ds \ text.txt', delimitador = "\ t")


6

Com base nas alterações mais recentes dos pandas, você pode usar, read_csv, read_table está obsoleto:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")

5

Você pode importar o arquivo de texto usando o comando read_table da seguinte maneira:

import pandas as pd
df=pd.read_table('output_list.txt',header=None)

O pré-processamento precisará ser feito após o carregamento


1

Normalmente, primeiro dou uma olhada nos dados ou apenas tento importá-los e fazer data.head (), se você vir que as colunas estão separadas por \ t, deverá especificar o sep="\t"contrário sep = " ",.

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.