首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从CSV文件中提取数据列并将其定义为x和y变量,然后使用pylab在python中绘制它们?

如何从CSV文件中提取数据列并将其定义为x和y变量,然后使用pylab在python中绘制它们?
EN

Stack Overflow用户
提问于 2012-07-28 02:50:15
回答 3查看 3.1K关注 0票数 0

我有一个CSV文件,其中包含如下数据

代码语言:javascript
运行
复制
350, -0.042447984
349, -0.041671798
348, -0.04158416
347, -0.041811798
346, -0.041716855

尽管我有更多的数据。我想做的是让第一列(350,349,等等)定义为我的x值,第二列(-0.042447984、-0.041671798等)被定义为我的y值。这是我到目前为止的代码:

代码语言:javascript
运行
复制
import pylab
x=[350, 349, 348, 347, 346]
y=[-0.042447984, -0.041671798, -0.04158416, -0.041811798, -0.041716855]
pylab.plot(x, y)
pylab.show()

但是,我没有手动输入数字,而是尝试编写一个程序,从CSV文件中提取第1列作为x值,将第2列提取为y值。它可能是比我想做的简单得多的东西。我是python的新手,所以请耐心听我说!

EN

回答 3

Stack Overflow用户

发布于 2012-07-28 03:00:59

假设您的csv文件是您所描述的格式,我可能会使用loadtxt

代码语言:javascript
运行
复制
>>> d = numpy.loadtxt("plot1.csv", delimiter=",")
>>> d
array([[  3.50000000e+02,  -4.24479840e-02],
       [  3.49000000e+02,  -4.16717980e-02],
       [  3.48000000e+02,  -4.15841600e-02],
       [  3.47000000e+02,  -4.18117980e-02],
       [  3.46000000e+02,  -4.17168550e-02]])

有很多方法可以从中获得xy

代码语言:javascript
运行
复制
>>> x,y = numpy.loadtxt("plot1.csv", delimiter=",", unpack=True)
>>> x
array([ 350.,  349.,  348.,  347.,  346.])
>>> y
array([-0.04244798, -0.0416718 , -0.04158416, -0.0418118 , -0.04171685])

x,y = d.Td[:,0], d[:,1]等。

格式越复杂,直接使用csv模块就越好。虽然loadtxt有很多选择,但通常你需要比它提供的更精细的控制。

票数 2
EN

Stack Overflow用户

发布于 2012-07-28 02:55:19

这将帮助您入门:

代码语言:javascript
运行
复制
import csv

with open('data.txt') as inf:
    x = []
    y = []
    for line in csv.reader(inf):
        tx, ty = line
        x.append(int(tx))
        y.append(float(ty))

列出xy将分别包含:

代码语言:javascript
运行
复制
[350, 349, 348, 347, 346]
[-0.042447984, -0.041671798, -0.04158416, -0.041811798, -0.041716855]

备注

使用with打开文件将负责在我们完成操作或遇到异常时将其关闭。csv模块将逐行读取输入数据,并根据逗号分隔符将每行拆分为一个列表。第一项被转换为int,第二项在被附加到各自的列表之前被转换为float

文件data.txt包含示例数据。

票数 1
EN

Stack Overflow用户

发布于 2015-10-01 11:58:22

我知道这篇文章很过时;但是,对于需要快速绘制csv数据的人来说,以下脚本将提供一个很好的解决方案。

它展示了如何从csv文件导入数据,以及如何使用matplotlib进行绘图,这将生成一个png并对其进行绘图。

使用不带头的Lake Huron数据,您可以得到一个很好的图。

代码语言:javascript
运行
复制
import csv
import matplotlib.pyplot as plt
from numpy import arange

#####################################
# instatiation of variables

filehandle = "lake_huron.csv"
x_data = []                         # makes a list
y_data = []                         # makes a list
png_filename = 'LakeData.png'

#####################################
# opening csv file and reading

my_file = open(filehandle, "rb")    # opens file for reading
data = csv.reader(my_file)          # saves file to variable "data"

#####################################
# saves csv data to x_data and y_data

for row in data:
    x_data.append(eval(row[1]))     # selects data from the ith row
    y_data.append(eval(row[2]))     # selects data from the ith row

#####################################
# closes csv file
my_file.close()                     # closes file




#####################################
# makes plot (show) and saves png

fig = plt.figure()                  # calls a variable for the png info

# defines plot's information (more options can be seen on matplotlib website)
plt.title("Level of Lake Huron from 1875 to 1972")      # plot name
plt.xlabel('Year')                                      # x axis label
plt.ylabel('Lake Level (in feet)')                      # y axis label
plt.xticks(arange(1875,1973,10))                        # x axis tick marks
plt.axis([1875,1973,573,584])                           # x and y ranges

# defines png size
fig.set_size_inches(10.5,5.5)                           # png size in inches

# plots the data from the csv above
plt.plot(x_data,y_data)

#saves png with specific resolution and shows plot
fig.savefig(png_filename ,dpi=600, bbox_inches='tight')     # saves png
plt.show()                                                  # shows plot

plt.close()                                                 # closes pylab
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11693935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档