Python - Leer datos de .csv con un bucle.

 
Vista:
Imágen de perfil de Zhisi

Leer datos de .csv con un bucle.

Publicado por Zhisi (21 intervenciones) el 25/10/2016 14:46:35
Hola. Tengo un problema a la hora de leer datos de un archivo .csv.

El código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np                     # Libreria matematica.
import scipy.fftpack                   # Libreria FFT.
from PIL import Image                  # Libreria para imagenes.
import matplotlib.pyplot as plt        # Libreria para graficas.
import csv                             # Libreria para .csv.
 
def plotcontrast(direccion,archcsv,n):
    registrosarch = csv.reader(archcsv)
 
    x = [0 for i in range(n)]
    y = [0 for i in range(n)]
 
    for j in range(0,n):
        x[j],y[j]= next(registrosarch)
 
num = 10
direc = "C:/Users/"
contrastes = open(direc + '/Contrastes.csv','r')
 
plotcontrast(direc,contrastes,num)

He intentado varias cosas pero ninguna me funciona dentro del bucle.
Al hacer:
1
x[j],y[j]= next(registrosarch)

fuera del bucle lee la primera fila correctamente. Pero al hacerlo dentro, me da el siguiente error:
"
File "C:/Users/.......", line 42, in plotcontrast
x[j],y[j]= next(registrosarch)

StopIteration
"

En el archivo hay dos datos por fila y están separados por coma.

¿Alguna sugerencia de cómo hacerlo o de por qué no funciona?


Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Leer datos de .csv con un bucle.

Publicado por xve (1646 intervenciones) el 25/10/2016 15:30:40
Hola Zhisi, esta linea creo que esta mal:
1
x[j],y[j]= next(registrosarch)

puede ser que tenga que ser algo así?
1
x[j],y[j]= registrosarch.next()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Zhisi

Leer datos de .csv con un bucle.

Publicado por Zhisi (21 intervenciones) el 26/10/2016 10:42:31
Hola xve!
Me da el mismo error, pero he encontrado otra forma de hacerlo:

1
2
3
4
5
6
7
8
9
    # Inicializamos una variable para un bucle.
    j=0
    # Leemos la info del archivo y la almacenamos en dos variables, una por
    # columna.
    for row in registrosarch:
        x[j] = float(row[0])    # Forzamos a float para que no lo lea como str.
        y[j] = float(row[1])    # row[i] corresponde al i-esimo elemento de la
                                # row-esima fila del archivo.
        j = j+1

En cualquier caso, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Leer datos de .csv con un bucle.

Publicado por xve (1646 intervenciones) el 26/10/2016 15:12:54
Perfecto Zhisi!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar