Quelle est la façon Python de lire un fichier CSV dans un DataFrame pandas (que je peux ensuite utiliser pour des opérations statistiques, peut avoir des colonnes de types différents, etc.)?
Mon fichier CSV "value.txt"
a le contenu suivant:
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
Dans R, nous lirions ce fichier en utilisant:
price <- read.csv("value.txt")
et cela renverrait un 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-t-il un moyen pythonique d'obtenir la même fonctionnalité?
Réponses:
pandas à la rescousse:
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
Cela renvoie pandas DataFrame qui est similaire à
R's
.la source
Pour lire un fichier CSV en tant que DataFrame pandas, vous devrez utiliser
pd.read_csv
.Mais ce n'est pas là que l'histoire se termine; les données existent dans de nombreux formats différents et sont stockées de différentes manières, vous devrez donc souvent passer des paramètres supplémentaires pour
read_csv
vous assurer que vos données sont lues correctement.Voici un tableau répertoriant les scénarios courants rencontrés avec les fichiers CSV ainsi que l'argument approprié que vous devrez utiliser. Vous aurez généralement besoin de tout ou partie des combinaisons des arguments ci-dessous pour lire vos données.
Il y a d'autres arguments que je n'ai pas mentionnés ici, mais ce sont ceux que vous rencontrerez le plus fréquemment.
la source
index_col
: dites aux pandas quelle (s) colonne (s) utiliser comme index pour votre dataframe»Voici une alternative à la bibliothèque pandas utilisant le module csv intégré de 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
va imprimer
{'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']}
la source
import pandas as pd df = pd.read_csv('/PathToFile.txt', sep = ',')
Cela importera votre fichier .txt ou .csv dans un DataFrame.
la source
Essaye ça
import pandas as pd data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
Remplacez l'emplacement cible du fichier, par l'emplacement de votre ensemble de données, reportez-vous à cette URL https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- one-12ddfd31592f
la source
%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
la source
Vous pouvez utiliser le module csv présent dans la bibliothèque standard python pour manipuler les fichiers CSV.
exemple:
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
la source
csv
module car son niveau est trop bas.pandas
fournit le niveau d'abstraction demandé.importer des pandas en tant que
jeu de données pd = pd.read_csv ('/ home / nspython / Downloads / movie_metadata1.csv')
la source
Remarque tout aussi propre, mais:
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
Pas aussi compact, mais il fait le travail:
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
la source