ordenar operaciones leer graficar exportar diccionario datos crear con como columnas archivos archivo python csv

operaciones - leer columnas en python



Cómo importar un archivo csv usando python con encabezados intactos, donde la primera columna es no numérica (3)

El módulo csv de Python maneja los datos por filas, que es la forma habitual de ver esos datos. Parece que quieres un enfoque basado en columnas. Aquí hay una forma de hacerlo.

Suponiendo que su archivo se llama myclone.csv y contiene

workers,constant,age w0,7.334,-1.406 w1,5.235,-4.936 w2,3.2225,-1.478 w3,0,0

este código debería darte una idea o dos:

>>> import csv >>> f = open(''myclone.csv'', ''rb'') >>> reader = csv.reader(f) >>> headers = reader.next() >>> headers [''workers'', ''constant'', ''age''] >>> column = {} >>> for h in headers: ... column[h] = [] ... >>> column {''workers'': [], ''constant'': [], ''age'': []} >>> for row in reader: ... for h, v in zip(headers, row): ... column[h].append(v) ... >>> column {''workers'': [''w0'', ''w1'', ''w2'', ''w3''], ''constant'': [''7.334'', ''5.235'', ''3.2225'', ''0''], ''age'': [''-1.406'', ''-4.936'', ''-1.478'', ''0'']} >>> column[''workers''] [''w0'', ''w1'', ''w2'', ''w3''] >>> column[''constant''] [''7.334'', ''5.235'', ''3.2225'', ''0''] >>> column[''age''] [''-1.406'', ''-4.936'', ''-1.478'', ''0''] >>>

Para obtener sus valores numéricos en flotantes, agregue esto

converters = [str.strip] + [float] * (len(headers) - 1)

por adelantado, y haz esto

for h, v, conv in zip(headers, row, converters): column[h].append(conv(v))

para cada fila en lugar de las dos líneas similares anteriores.

Nota: En Python 3.5+, use next(reader, None) o reader.__next__() lugar de reader.next()

Esta es una elaboración de una pregunta anterior, pero a medida que profundizo en Python, me confundo más sobre cómo maneja python los archivos csv.

Tengo un archivo csv, y debe permanecer de esa manera (por ejemplo, no puedo convertirlo a un archivo de texto). Es el equivalente de una matriz o matriz de 5 filas por 11 columnas o vector.

He intentado leer en la csv utilizando varios métodos que he encontrado aquí y en otros lugares (por ejemplo, python.org ) para que se preserve la relación entre columnas y filas, donde la primera fila y la primera columna = valores no numéricos. El resto son valores flotantes y contienen una mezcla de flotantes positivos y negativos.

Lo que deseo hacer es importar el csv y compilarlo en python para que, si tuviera que hacer referencia a un encabezado de columna, devolvería sus valores asociados almacenados en las filas. Por ejemplo:

>>> workers, constant, age >>> workers w0 w1 w2 w3 constant 7.334 5.235 3.225 0 age -1.406 -4.936 -1.478 0

Etcétera...

Estoy buscando técnicas para manejar este tipo de estructura de datos. Soy muy nuevo en Python.


Puede usar la biblioteca pandas y hacer referencia a las filas y columnas como esta:

import pandas as pd input = pd.read_csv("path_to_file"); #for accessing ith row: input.iloc[i] #for accessing column named X input.X #for accessing ith row and column named X input.iloc[i].X


Para Python 2

import csv with open( <path-to-file>, "rb" ) as theFile: reader = csv.DictReader( theFile ) for line in reader: # line is { ''workers'': ''w0'', ''constant'': 7.334, ''age'': -1.406, ... } # e.g. print( line[ ''workers'' ] ) yields ''w0''

Python tiene un poderoso controlador de CSV incorporado. De hecho, la mayoría de las cosas ya están incorporadas en la biblioteca estándar.

Para Python 3

Elimine el argumento rb y use r o no pase el argumento ( default read mode ).

with open( <path-to-file>, ''r'' ) as theFile: reader = csv.DictReader(theFile) for line in reader: # line is { ''workers'': ''w0'', ''constant'': 7.334, ''age'': -1.406, ... } # e.g. print( line[ ''workers'' ] ) yields ''w0'' print(line)