首页 > 解决方案 > 来自 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 和其他人的不同解决方案,但我的似乎挂断了我。非常感谢新手的帮助!

标签: pythonpython-3.xpandascsvmatplotlib

解决方案


pandas 文档中,您可以发现headercsv 的 kwarg 应该为 0,因为第一行包含列名。发生的事情是您正在构建的 DataFrame 没有 column close,因为它从“第二”行获取标题。如果您使用headerkwarg 或将其更改为header=0. 其他kwargs也是一样的,不需要定义。一个简单的df = pd.read_csv(file)就可以了。


推荐阅读