从CSV值读取Python错误:x和y的第一个维度必须相同

2024-06-16 13:09:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始使用Python和Python。我正在尝试创建一个线条图,类似于使用R成功生成的线条图。当我尝试下面的代码尝试在csv文件中读取时,我得到错误ValueError: x and y must have same first dimension

import csv
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

def getColumn(filename, column):
    results = csv.reader(open(filename), delimiter="\t")
    return [result[column] for result in results if len(result) > column]

Season = getColumn("vs.csv",0)
VORP = getColumn("vs.csv",2)

fig = plt.figure()
plt.figure("VORP vs Season")
plt.xlabel("Season")
plt.ylabel("VORP")
plt.legend(["PlayerA","PlayerB"], loc=9,ncol=2)
plt.plot(Season, VORP)
plt.show()

CSV文件只包含以下条目:

^{pr2}$

Tags: 文件csvimportmatplotlibascolumnpltresult
1条回答
网友
1楼 · 发布于 2024-06-16 13:09:57

一种解决方案是使用Anaconda附带的^{}数据分析库。它应该提供一些与R相同的功能,所以它可能是一个很好的选择。它大大简化了从csv文件导入和操作数据。它还有很好的plotting功能,使用^{}。在

首先,导入pandasmatplotlib.pyplot,并使用前者从csv创建一个^{}对象。如果您将数据帧打印到控制台,您可以看到它看起来非常漂亮。在

>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>>
>>> df = pd.DataFrame.from_csv('vorp.csv', index_col=None)
>>> print df

   Season   Player  VORP
0  '0405'  PlayerA  0.70
1  '0506'  PlayerA  0.14
2  '0405'  PlayerB  0.23
3  '0506'  PlayerB -0.30

现在在DataFrame上调用^{}方法。这将只返回另一个DataFrame对象,但它将以一种便于图形化的方式进行组织。您需要将“VORP”设置为值,“Season”设置为索引(即行),并将“Player”设置为列,如下所示:

^{pr2}$

现在只是一个绘制表格的问题。只需调用pivot表上的^{}方法(它将返回一个^{}对象),然后使用matplotlib来任意操作它。例如,我添加了y轴标签和标题。在

^{3}$

下面是结果,使用完整的数据集,它无疑会看起来更好。 enter image description here

相关问题 更多 >