首页 > 解决方案 > 我如何绘制这个?

问题描述

我正在尝试构建一些软件来可视化每小时的电价。到目前为止我有这个:

import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pytz
import matplotlib.pyplot as plt
import pandas as pd
import dateutil
import csv 

with open('Hourly_Prices2.csv', newline='') as f:
reader = csv.reader(f)
data = list(reader)
df = pd.DataFrame(data)
df.columns=['Hour of Day', 'Spot Price']
df.drop(0, inplace=True)
df.set_index('Hour of Day', inplace=True)
print (df)

plt.xlabel("Hour of Day")
plt.ylabel("Spot Price (MWH)")
plt.title("Daily Price of Electricity")
plt.plot(df)

所有数据框的东西似乎都工作正常,我的意思是 csv 文件打开正常,我可以输出两列,一列显示小时,另一列显示该小时的现货价格。我的问题是,当我尝试使用 绘制它时,会plt.plot(df)收到一条消息

TypeError:不可散列的类型:'numpy.ndarray'

我能做些什么来解决这个问题?我是一个相当新的程序员,所以我觉得我错过了一些明显的东西。非常感谢您的帮助!

标签: pythonpython-3.xpandasmatplotlib

解决方案


您不仅可以直接从 DataFrame 绘图,还可以将 csv 直接读入 DataFrame,如下所示:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('Hourly_Prices2.csv')
df.columns = ['Hour of Day', 'Spot Price']
df.set_index('Hour of Day', inplace=True)
print(df)

df.plot()
plt.xlabel("Hour of Day")
plt.ylabel("Spot Price (MWH)")
plt.title("Daily Price of Electricity")
plt.show()

在此处输入图像描述


推荐阅读