我有一个系列,其中的日期采用日期时间格式,如下所示:
2015-05-10 00:00:00
我想在同一时间段内在数据框中绘制两个不同的值,我已经尝试过:
plt.subplot(211)
plt.plot(df['Date'].dt.year, df['Avg'], color='r')
plt.show()
plt.subplot(212)
plt.plot(df['Date'].dt.year, df['MW'], color='b')
plt.show()
但这给了我一种奇怪的格式,即使在绘图之外更改['Date']列也无法解决。
它绘制为:
2015.0 2015.5 2016.0 2016.5.....etc
尝试也更改为浮动形式,但无济于事。
我想要的是从2015年到2018年整个系列的年度滴答,但是当我转换为字符串或整数时,得到的内容类似于:
答案 0 :(得分:0)
.set_xticks
是设置x轴上的值的最易读的方法。
import pandas as pd
import matplotlib.pyplot as plt
data =[ {"Date":"2015-05-10", "Avg":34}, {"Date":"2016-05-10", "Avg":32},
{"Date":"2017-05-10", "Avg":31}, {"Date":"2015-05-10", "Avg":31},
{"Date":"2015-05-10", "Avg":26}, {"Date":"2015-05-10", "Avg":29}]
df = pd.DataFrame(data)
ax = plt.subplot(111)
ax.plot(df['Date'].dt.year, df['Avg'], color='r')
ax.set_xticks([2015, 2016, 2017])
plt.show()
由于您每年都有多个值,因此您似乎也遇到了问题,因此它绘制了您看到的垂直线。使用熊猫.groupby
函数的合计值似乎是您想要的。
df["Year"] = df["Date"].dt.year
df = df.groupby("Year").mean().reset_index()
ax = plt.subplot(211)
ax.plot(df.Year, df['Avg'], color='r')
ax.set_xticks([2015, 2016, 2017])
plt.show()