para - leer archivos csv en python
lee el archivo csv y devuelve data.frame en Python (5)
Aquí hay una alternativa a la biblioteca de pandas usando el módulo csv incorporado 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
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'']}
Tengo un archivo CSV, "value.txt"
con el siguiente contenido: las primeras filas del archivo son:
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
En R, podemos leer este archivo usando
price <- read.csv("value.txt")
y eso devolverá un data.frame que puedo usar para operaciones estadísticas:
> 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
¿Hay alguna forma Pythonic para obtener la misma funcionalidad?
Nota bastante limpia, pero:
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
No es tan compacto, pero cumple su función:
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
Prueba esto:
import pandas as pd
print(pd.read_csv("path to file"))
Puede usar el módulo csv que se encuentra en la biblioteca estándar de Python para manipular archivos CSV.
ejemplo:
import csv
with open(''some.csv'', ''rb'') as f:
reader = csv.reader(f)
for row in reader:
print row
pandas al rescate:
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
Esto devuelve DataFrame que es similar a R''s
.