HOWTO · Pandas
Como carregar dados do arquivo de texto em Pandas
Aprenda a carregar arquivos de texto delimitados, de largura fixa e separados por tabulações em DataFrames do pandas usando as funções read_csv(), read_fwf() e read_table().
Nesta página
A extensão .txt não determina como o arquivo deve ser interpretado. Use read_csv() para campos separados por um delimitador, read_fwf() para colunas alinhadas em posições fixas de caracteres e read_table() para tabelas separadas por tabulações. Cada função retorna um DataFrame do pandas. Os exemplos abaixo criam seus próprios arquivos de entrada pequenos para que cada formato possa ser visto junto com o código.
Carregar texto delimitado com read_csv()
Use read_csv() quando cada registro tiver campos separados por um caractere consistente, como vírgula ou ponto e vírgula. Por padrão, o pandas trata a primeira linha como cabeçalho das colunas. Defina header=None quando o arquivo não tiver cabeçalho e passe names para fornecer os nomes das colunas. O exemplo usa um arquivo separado por vírgulas, com cabeçalho e um campo vazio:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "people.txt"
path.write_text("name,age\nAda,36\nLinus,", encoding="utf-8")
df = pd.read_csv(path, sep=",")
print(df.to_string(index=False))
name age
Ada 36.0
Linus NaN
Por padrão, o pandas reconhece marcadores comuns de valores ausentes, inclusive um campo vazio. Use keep_default_na=False para desativar esses marcadores padrão ou na_values para incluir marcadores específicos do seu arquivo. Aqui, a idade ausente aparece como NaN, e a idade preenchida é interpretada como um valor de ponto flutuante porque a coluna também contém um valor ausente.
Carregar texto de largura fixa com read_fwf()
Use read_fwf() quando os campos ocuparem posições de caracteres definidas e não houver delimitadores entre as colunas. Essa função não é um leitor genérico para arquivos com delimitadores variáveis. O exemplo informa explicitamente as larguras das colunas para deixar claros os limites entre elas:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "people.txt"
path.write_text("Ada 036\nLinus 042\n", encoding="utf-8")
df = pd.read_fwf(path, widths=[6, 3], names=["name", "age"])
print(df.to_string(index=False))
name age
Ada 36
Linus 42
Ajuste widths para corresponder aos intervalos de caracteres dos seus registros. Se os limites não forem conhecidos, examine o formato do arquivo antes de escolher as larguras. Os valores fornecidos em names dão nomes aos dois campos interpretados, portanto a amostra não precisa de uma linha de cabeçalho.
Carregar texto tabular com read_table()
read_table() lê dados delimitados e usa uma tabulação como separador padrão. Informe sep se o arquivo usar outro delimitador. Este exemplo usa o separador de tabulação padrão:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "scores.txt"
path.write_text("name\tscore\nMina\t91\nOmar\t87\n", encoding="utf-8")
df = pd.read_table(path)
print(df.to_string(index=False))
name score
Mina 91
Omar 87
Por exemplo, para um arquivo separado por ponto e vírgula, passe sep=";"; o separador precisa corresponder aos caracteres usados no arquivo. Assim como read_csv(), read_table() usa a primeira linha como cabeçalho por padrão. Defina header=None quando a entrada começar diretamente pelos dados.
Escolher uma função de leitura e usar opções comuns
Escolha read_csv() para registros separados por vírgulas ou por outro delimitador consistente, read_fwf() para campos alinhados de largura fixa e read_table() para tabelas separadas por tabulações. Nos leitores de dados delimitados, o pandas infere que a primeira linha é o cabeçalho, a menos que você defina header=None; use names=[...] para atribuir nomes às colunas quando o arquivo não tiver cabeçalho. Defina na_values para indicar marcadores de valores ausentes específicos do arquivo. O exemplo de read_fwf() também aceita names, enquanto o argumento widths descreve os intervalos de caracteres dos campos.
Para carregar um arquivo .txt existente, passe o caminho dele à função de leitura, por exemplo: pd.read_csv("/path/to/people.txt", sep=","). No Windows, uma string bruta, como r"C:\data\people.txt", evita que as barras invertidas sejam tratadas como caracteres de escape. Em cada exemplo, substitua a configuração do arquivo temporário e o valor de path pelo caminho do seu arquivo. Mantenha a chamada da função de leitura e escolha o separador, o cabeçalho, os nomes das colunas ou as larguras que correspondam ao arquivo. Um caminho relativo é resolvido a partir do diretório de trabalho atual do processo Python; use um caminho absoluto se esse diretório puder variar.