python - 来自 CSV 文件的新手 Matplotlib 和 Pandas 绘图
问题描述
我根本没有接受过多的 Matplotlib 培训,这看起来确实是一个基本的绘图应用程序,但我得到的只是错误。
使用 Python 3,我只是尝试从 CSV 文件中绘制历史股票价格数据,使用日期作为 x 轴,价格作为 y。数据 CSV 如下所示:
(只是现在才注意到时间上有很大的差距,但无论如何)
import glob
import pandas as pd
import matplotlib.pyplot as plt
def plot_test():
files = glob.glob('./data/test/*.csv')
for file in files:
df = pd.read_csv(file, header=1, delimiter=',', index_col=1)
df['close'].plot()
plt.show()
plot_test()
我现在使用 glob 只是为了识别该文件夹中的任何 CSV 文件,但我也尝试指定一个特定的 CSV 文件名并得到相同的错误:
KeyError: 'close'
我也试过只指定一个特定的列号来只绘制一个特定的列,但我不知道发生了什么。
理想情况下,我想像真实的股票数据一样绘制它,其中所有内容都在同一个图表上,底部的成交量在它自己的轴上,在 y 轴上开高低收,在 x 轴上显示每一行的日期文件。我尝试了几种不同的解决方案,但似乎无法弄清楚。我知道这可能以前被问过,但我已经尝试了很多来自 SO 和其他人的不同解决方案,但我的似乎挂断了我。非常感谢新手的帮助!
解决方案
在pandas 文档中,您可以发现header
csv 的 kwarg 应该为 0,因为第一行包含列名。发生的事情是您正在构建的 DataFrame 没有 column close
,因为它从“第二”行获取标题。如果您使用header
kwarg 或将其更改为header=0
. 其他kwargs也是一样的,不需要定义。一个简单的df = pd.read_csv(file)
就可以了。
推荐阅读
- jsp - 升级到 tomcat 8 时出错严重:servlet jsp 的 Servlet.service() 抛出异常
- asp.net-mvc - Web API Request.Content 截断前 3 个字符
- c# - 在 C# 中将对象转换为字符串
- javascript - 如何将 angularJS 应用程序转换为 angular
- visual-studio - Outlook Addin MSI 安装程序将文件复制到 C:\
- python - 如何在已包含文本的行上将字典写入 CSV 文件?
- keras - NoneType' 对象没有属性 '_inbound_nodes
- r - 为什么R轮值超过200万的结果被分割?
- android - (Android Studio 3.2 Beta) - 导航架构组件配置
- c - 在 c 中使用 fgets 函数的分段错误错误