¿Cuál es la forma de Python para leer un archivo CSV en un DataFrame de pandas (que luego puedo usar para operaciones estadísticas, puede tener columnas de tipos diferentes, etc.)?
Mi archivo CSV "value.txt"
tiene el siguiente contenido:
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 leeríamos este archivo usando:
price <- read.csv("value.txt")
y eso devolvería 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 una forma Pythonic de obtener la misma funcionalidad?
Respuestas:
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 pandas DataFrame que es similar a
R's
.fuente
Para leer un archivo CSV como un DataFrame de pandas, necesitará usar
pd.read_csv
.Pero aquí no es donde termina la historia; Los datos existen en muchos formatos diferentes y se almacenan de diferentes maneras, por lo que a menudo necesitará pasar parámetros adicionales
read_csv
para asegurarse de que sus datos se lean correctamente.Aquí hay una tabla que enumera los escenarios comunes encontrados con los archivos CSV junto con el argumento apropiado que necesitará usar. Por lo general, necesitará todos o una combinación de los siguientes argumentos para leer sus datos.
Hay otros argumentos que no he mencionado aquí, pero estos son los que encontrará con más frecuencia.
fuente
index_col
: pandas decir cuál (s) columna de usar como los indices de su trama de datos'Aquí hay una alternativa a la biblioteca 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']}
fuente
import pandas as pd df = pd.read_csv('/PathToFile.txt', sep = ',')
Esto importará su archivo .txt o .csv a un DataFrame.
fuente
Prueba esto
import pandas as pd data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
Reemplace la ubicación de destino del archivo, con el lugar donde se encuentra su conjunto de datos, consulte esta URL https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- one-12ddfd31592f
fuente
%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
fuente
Puedes usar el módulo csv 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
fuente
csv
módulo ya que es de un nivel demasiado bajo.pandas
proporciona el nivel de abstracción solicitado.importar pandas como
conjunto de datos pd = pd.read_csv ('/ home / nspython / Downloads / movie_metadata1.csv')
fuente
Tenga en cuenta que es igual de limpio, 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 tan compacto, pero hace el trabajo:
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
fuente