如何从.csv文件中提取数据并创建图表?

3 投票
1 回答
3099 浏览
提问于 2025-04-30 10:57

我有一个.csv文件,里面有24列和514行的数据。每一列代表不同的参数,我想研究这些参数之间的趋势。

我正在使用genfromtxt这个函数把数据导入为一个numpy数组,这样我就可以绘制两个特定列的值(比如第9列和第11列的关系)。这是我目前写的代码:

import matplotlib.pyplot as plt
import numpy as np


data = np.genfromtxt('output_burnin.csv', delimiter=',')

impactparameter=data[:,11]
planetradius=data[:,9]

plt.plot(planetradius,impactparameter,'bo')

plt.title('Impact Parameter vs. Planet Radius')
plt.xlabel('R$_P$/R$_Jup$')
plt.ylabel('b/R$_star$')

plt.show()

不过在第12行的时候,我遇到了一个错误:

    impactparameter=data[:,11]
IndexError: too many indices

这里可能是什么问题呢?

另外,我一直在想怎么给.csv文件中的每一列加个标题。这样我在绘图的时候就不用数列号,而是可以直接用列的名字。有没有办法做到这一点?

我对Python完全是个新手,任何帮助都非常感谢,谢谢!

暂无标签

1 个回答

0

我一直在想怎么给.csv文件里的每一列加个标题。这样我在画图的时候就可以直接用列的名字,而不是数列的编号。有没有办法做到这一点呢?

要给你数组里的列起名字,你需要把它变成一个结构化数组

这里有个简单的例子:

a = np.zeros(5, dtype='f4, f4, f4')
a.dtype.names = ('col1', 'col2', 'col3')
print a[0]  # prints [0, 0, 0], the first row (record)
print a['col1']  # prints [0, 0, 0, 0, 0], the first column

如果你在CSV文件的开头有列名,并且在np.genfromtxt中设置names=True,那么Numpy会自动为你创建一个带有正确列名的结构化数组。

撰写回答