Qual é a maneira do Python de ler um arquivo CSV em um DataFrame do pandas (que posso usar para operações estatísticas, pode ter colunas com tipos diferentes, etc.)?
Meu arquivo CSV "value.txt"
tem o seguinte conteúdo:
Date,"price","factor_1","factor_2"
2012-06-11,1600.20,1.255,1.548
2012-06-12,1610.02,1.258,1.554
2012-06-13,1618.07,1.249,1.552
2012-06-14,1624.40,1.253,1.556
2012-06-15,1626.15,1.258,1.552
2012-06-16,1626.15,1.263,1.558
2012-06-17,1626.15,1.264,1.572
Em R, leríamos este arquivo usando:
price <- read.csv("value.txt")
e isso retornaria um R data.frame:
> price <- read.csv("value.txt")
> price
Date price factor_1 factor_2
1 2012-06-11 1600.20 1.255 1.548
2 2012-06-12 1610.02 1.258 1.554
3 2012-06-13 1618.07 1.249 1.552
4 2012-06-14 1624.40 1.253 1.556
5 2012-06-15 1626.15 1.258 1.552
6 2012-06-16 1626.15 1.263 1.558
7 2012-06-17 1626.15 1.264 1.572
Existe uma maneira Pythônica de obter a mesma funcionalidade?
Respostas:
pandas para o resgate:
import pandas as pd print pd.read_csv('value.txt') Date price factor_1 factor_2 0 2012-06-11 1600.20 1.255 1.548 1 2012-06-12 1610.02 1.258 1.554 2 2012-06-13 1618.07 1.249 1.552 3 2012-06-14 1624.40 1.253 1.556 4 2012-06-15 1626.15 1.258 1.552 5 2012-06-16 1626.15 1.263 1.558 6 2012-06-17 1626.15 1.264 1.572
Isso retorna o DataFrame do pandas que é semelhante a
R's
.fonte
Para ler um arquivo CSV como um DataFrame do pandas, você precisará usar
pd.read_csv
.Mas não é aqui que a história termina; os dados existem em muitos formatos diferentes e são armazenados de maneiras diferentes, então você frequentemente precisará passar parâmetros adicionais para
read_csv
para garantir que seus dados sejam lidos corretamente.Aqui está uma tabela que lista cenários comuns encontrados com arquivos CSV, juntamente com o argumento apropriado que você precisará usar. Normalmente, você precisará de todos ou de alguma combinação dos argumentos abaixo para ler seus dados.
Existem outros argumentos que não mencionei aqui, mas esses são os que você encontrará com mais frequência.
fonte
index_col
: diga aos pandas quais colunas usar como índice para o seu dataframe'Aqui está uma alternativa para a biblioteca pandas usando o módulo csv integrado do Python .
import csv from pprint import pprint with open('foo.csv', 'rb') as f: reader = csv.reader(f) headers = reader.next() column = {h:[] for h in headers} for row in reader: for h, v in zip(headers, row): column[h].append(v) pprint(column) # Pretty printer
irá imprimir
{'Date': ['2012-06-11', '2012-06-12', '2012-06-13', '2012-06-14', '2012-06-15', '2012-06-16', '2012-06-17'], 'factor_1': ['1.255', '1.258', '1.249', '1.253', '1.258', '1.263', '1.264'], 'factor_2': ['1.548', '1.554', '1.552', '1.556', '1.552', '1.558', '1.572'], 'price': ['1600.20', '1610.02', '1618.07', '1624.40', '1626.15', '1626.15', '1626.15']}
fonte
import pandas as pd df = pd.read_csv('/PathToFile.txt', sep = ',')
Isso importará seu arquivo .txt ou .csv para um DataFrame.
fonte
Tente isto
import pandas as pd data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
Substitua o local de destino do arquivo, com onde seu conjunto de dados é encontrado, consulte este url https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- one-12ddfd31592f
fonte
%cd C:\Users\asus\Desktop\python import pandas as pd df = pd.read_csv('value.txt') df.head() Date price factor_1 factor_2 0 2012-06-11 1600.20 1.255 1.548 1 2012-06-12 1610.02 1.258 1.554 2 2012-06-13 1618.07 1.249 1.552 3 2012-06-14 1624.40 1.253 1.556 4 2012-06-15 1626.15 1.258 1.552
fonte
Você pode usar o módulo csv encontrado na biblioteca padrão do python para manipular arquivos CSV.
exemplo:
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
fonte
csv
módulo, pois é de nível muito baixo.pandas
fornece o nível de abstração solicitado.importar pandas como
conjunto de dados pd = pd.read_csv ('/ home / nspython / Downloads / movie_metadata1.csv')
fonte
Observe igualmente limpo, mas:
import csv with open("value.txt", "r") as f: csv_reader = reader(f) num = ' ' for row in csv_reader: print num, '\t'.join(row) if num == ' ': num=0 num=num+1
Não é tão compacto, mas faz o trabalho:
Date price factor_1 factor_2 1 2012-06-11 1600.20 1.255 1.548 2 2012-06-12 1610.02 1.258 1.554 3 2012-06-13 1618.07 1.249 1.552 4 2012-06-14 1624.40 1.253 1.556 5 2012-06-15 1626.15 1.258 1.552 6 2012-06-16 1626.15 1.263 1.558 7 2012-06-17 1626.15 1.264 1.572
fonte