首页 > 解决方案 > 使用 pandas 和 matplotlib 来自 csv 文件的图表

问题描述

我在列表中有字典形式的数据,从 csv 文件生成。

df = [{'Line Number': 11, 'Report Hour': 6, 'Kits Completed': 34}, {'Line Number': 11, 'Report Hour': 7, 'Kits Completed': 55}, {'Line Number': 12, 'Report Hour': 6, 'Kits Completed': 67}, {'Line Number': 12, 'Report Hour': 7, 'Kits Completed': 56}, {'Line Number': 14, 'Report Hour': 6, 'Kits Completed': 0}, {'Line Number': 14, 'Report Hour': 7, 'Kits Completed': 0}, {'Line Number': 15, 'Report Hour': 6, 'Kits Completed': 123}, {'Line Number': 15, 'Report Hour': 7, 'Kits Completed': 97

为了达到上面显示的结果,我使用了以下代码:

df = df.to_dict('records')

我感兴趣的是得到结果:第 11 行:x (axis) o'clock, y (axis) of boxes。第 15 行:做了 x(轴)点,y(轴)的盒子。

然后在同一张图上,放置第 14、15 行的结果,以此类推。效果应该类似于下图:

图表示例

我会很感激帮助:)

标签: pythonpandasmatplotlibcharts

解决方案


您可能不应该将 pandas 数据框转换为字典,使用 pandas 进行绘图要容易得多:

df = [{'Line Number': 11, 'Report Hour': 6, 'Kits Completed': 34}, {'Line Number': 11, 'Report Hour': 7, 'Kits Completed': 55}, {'Line Number': 12, 'Report Hour': 6, 'Kits Completed': 67}, {'Line Number': 12, 'Report Hour': 7, 'Kits Completed': 56}, {'Line Number': 14, 'Report Hour': 6, 'Kits Completed': 0}, {'Line Number': 14, 'Report Hour': 7, 'Kits Completed': 0}, {'Line Number': 15, 'Report Hour': 6, 'Kits Completed': 123}, {'Line Number': 15, 'Report Hour': 7, 'Kits Completed': 97}]
df = pd.DataFrame(df)

table = df.pivot(index='Report Hour', columns='Line Number', values = 'Kits Completed')
table.plot.bar()

给出:

条形图


推荐阅读