分配从csv导入的变量

时间:2015-02-20 07:52:14

标签: python arrays csv variable-assignment

我有一个.csv文件,它有3列,看起来像这样。

-10.5,7.79,0
-10.5,8.37,0
-10.5,9.52,0
-10.5,10.10,0
-10.5,11.25,0

我想将第1列中的数字指定给变量数组'x',将第2列指定为'y',将第3列指定为'z'。这样我就可以绘制一个3D图形了。我到目前为止的初始代码如下,

import csv
ifile  = open('new.csv', "rb")
reader = csv.reader(ifile)

for row in reader:
    writer.writerow(row)

ifile.close()

fig = plt.figure()
axis = fig.gca(projection='3d')
axis.plot_trisurf(x, y, z)
plt.show()

但是我无法在以下变量数组中分配这些数字。亲切的,请帮我分配这些变量数组中.csv文件中的数据。

4 个答案:

答案 0 :(得分:3)

你可以这样做,

import csv
ifile = open('new.csv', "rb")
reader = csv.reader(ifile)
x = []
y = []
z = []
for row in reader:
    x.append(float(row[0]))
    y.append(float(row[1]))
    z.append(float(row[2]))

ifile.close()

或者更好的方法就是,

with open('new.csv', "r") as ifile:
    reader = csv.reader(ifile, delimiter=',')
    for row in reader:
        x.append(float(row[0]))
        y.append(float(row[1]))
        z.append(float(row[2]))

这将在操作后关闭文件。

答案 1 :(得分:1)

尝试使用我的库pyexcel

>>> import pyexcel as pe
>>> sheet=pe.load("csv-import.csv")
>>> sheet
Sheet Name: csv-import.csv
+---------+--------+---+
| -10.500 | 7.790  | 0 |
+---------+--------+---+
| -10.500 | 8.370  | 0 |
+---------+--------+---+
| -10.500 | 9.520  | 0 |
+---------+--------+---+
| -10.500 | 10.100 | 0 |
+---------+--------+---+
| -10.500 | 11.250 | 0 |
+---------+--------+---+
>>> sheet.column.format([0,1], float)
>>> sheet.column.format(2, int)
>>> sheet[0,0]
-10.5
>>> type(sheet[0,0])
<type 'float'>
>>> x = sheet.column[0]
>>> y = sheet.column[1]
>>> z = sheet.column[2]
>>> x
[-10.5, -10.5, -10.5, -10.5, -10.5]
>>> y
[7.79, 8.37, 9.52, 10.1, 11.25]
>>> z
[0, 0, 0, 0, 0]

答案 2 :(得分:0)

row中的每个reader都会为您提供这些值的列表。在for循环中,您可以编写(x, y, z) = row,然后绘制新点。

如果您需要x来保存所有x等的列表,您可以添加,例如循环中Xs.append(x),其中Xs预先初始化为空列表。

答案 3 :(得分:0)

尝试使用numpy。

import numpy as np
x, y, z = np.loadtxt('new.csv', delimiter=',', unpack=True)