Python 使用日期时间索引打印数据帧
我想在上面的数据框中绘制Python 使用日期时间索引打印数据帧,python,pandas,plot,Python,Pandas,Plot,我想在上面的数据框中绘制valu列,在is\u avail为真或假时,为source\u a行和source\u b行绘制单独的线条图,并使用单独的颜色。目前,我正在这样做: is_avail valu data_source 2015-08-07 False 0.282 source_a 2015-08-23 False 0.296 source_a 2015-09-08 False 0.433 source_a 20
valu
列,在is\u avail
为真或假时,为source\u a
行和source\u b
行绘制单独的线条图,并使用单独的颜色。目前,我正在这样做:
is_avail valu data_source
2015-08-07 False 0.282 source_a
2015-08-23 False 0.296 source_a
2015-09-08 False 0.433 source_a
2015-10-01 True 0.169 source_a
2015-10-10 True 0.160 source_a
2015-11-02 False 0.179 source_a
2016-03-09 False 0.557 source_a
2016-04-26 False 0.770 source_a
2016-05-05 False 0.826 source_a
2016-05-12 False 0.826 source_a
2016-05-28 False 0.747 source_a
2016-06-06 False 0.796 source_a
2016-07-31 False 0.322 source_a
2016-08-25 True 0.136 source_a
2016-09-10 False 0.180 source_a
2016-11-13 False 0.492 source_a
2016-12-15 True 0.124 source_a
2016-12-31 False 0.533 source_a
2017-03-28 False 0.524 source_a
2015-06-27 True 0.038 source_b
2015-07-30 True 0.035 source_b
2015-08-06 False 0.205 source_b
2015-08-09 False 0.241 source_b
2015-08-16 True 0.025 source_b
2015-08-19 True 0.092 source_b
2015-08-26 False 0.264 source_b
2015-08-29 False 0.312 source_b
但是,这将所有内容显示为单线图。如何达到上述目标?解决方案并不是那么简单,但这很有效
df['valu'].plot()
结果:
这个怎么样?假设您的数据位于数据帧
df
:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df = df.sort_index()
fig, ax = plt.subplots()
for k,g in df.groupby(['is_avail','data_source'])['valu']:
ax.plot_date(pd.to_datetime(g.index),g,'v-',label="{}, {}".format(*k))
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=3))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
ax.legend()
plt.show()
import pandas as pd
df.is_avail = df.is_avail.astype('str')
grouped = df.groupby(['data_source','is_avail'])
fig, ax = plt.subplots()
for lab, gr in grouped:
gr.valu.plot(ax=ax, label = lab)
plt.legend()