Para testar algumas funcionalidades, eu gostaria de criar um a DataFrame
partir de uma string. Digamos que meus dados de teste se pareçam com:
TESTDATA="""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
"""
Qual é a maneira mais simples de ler esses dados em um Pandas DataFrame
?
from pandas.compat import StringIO
, observando que é da mesma classe que a que acompanha o Python.pd.read_table()
é uma função equivalente, apenas ligeiramente melhor nomenclatura:df = pd.read_table(TESTDATA, sep=";")
.pandas.compat.StringIO
. Dessa forma, não precisamos importarStringIO
separadamente. No entanto, opandas.compat
pacote é considerado privado de acordo com pandas.pydata.org/pandas-docs/stable/api.html?highlight=compat , deixando a resposta como está por enquanto.df.to_csv(TESTDATA)
, useTESTDATA.seek(0)
Método Split
fonte
df = pd.DataFrame([x.split(';') for x in data.split('\n')[1:]], columns=[x for x in data.split('\n')[0].split(';')])
Uma solução rápida e fácil para o trabalho interativo é copiar e colar o texto carregando os dados da área de transferência.
Selecione o conteúdo da string com o mouse:
No shell do Python, use
read_clipboard()
Use o separador apropriado:
fonte
Um CSV tradicional de largura variável é ilegível para armazenar dados como uma variável de sequência. Especialmente para uso em um
.py
arquivo, considere dados separados por tubo de largura fixa. Vários IDEs e editores podem ter um plugin para formatar texto separado por canal em uma tabela organizada.Usando
read_csv
Armazene o seguinte em um módulo utilitário, por exemplo
util/pandas.py
. Um exemplo está incluído na documentação da função.Alternativas não relacionadas ao trabalho
O código abaixo não funciona corretamente porque adiciona uma coluna vazia nos lados esquerdo e direito.
Quanto a
read_fwf
, na verdade, ele não usa muitos dos kwargs opcionais queread_csv
aceitam e usam. Como tal, ele não deve ser usado para dados separados por canal.fonte
read_fwf
leva maisread_csv
argumentos do que o documentado, mas é verdade que alguns não têm efeito .A maneira mais simples é salvá-lo no arquivo temporário e depois lê-lo:
Maneira correta de criar arquivo temporário: Como posso criar um arquivo tmp no Python?
fonte