使用pandas创建matplotlib多系列线图

时间:2018-03-05 12:42:05

标签: python pandas matplotlib line

我想创建一个多系列线图,显示数据框架元素的出现如何随时间变化:

我有两个列表,我已加入数据框:

df = pd.DataFrame(
{'Date': datelist,
 'Category': catlist
})

然后我将数据框分组以显示每次出现的计数:

df = df.groupby(['Date', 'Category']).size()
print df

这会返回如下所示的内容:

 Date        Category        
 13/02/2018  clean          2
             suspicious     1
 14/02/2018  clean          2
 19/02/2018  clean          2

我现在想为每个类别类型创建一个多系列线图,显示计数如何随日期而变化。

我真的不确定如何使用matplotlib

来做到这一点

2 个答案:

答案 0 :(得分:2)

您可以尝试:

plot_df = df.unstack('Category')
plot_df.index = pd.PeriodIndex(plot_df.index.tolist(), freq='D')
plot_df.plot()
plt.show()

subplot

plot_df.plot(subplots=True)

实施例: 对于数据框:

Date        Category
13/02/2018  clean
13/02/2018  clean
13/02/2018  suspicious
14/02/2018  clean
14/02/2018  clean
19/02/2018  clean
19/02/2018  clean
14/02/2018  suspicious
13/02/2018  suspicious
14/02/2018  clean

enter image description here

答案 1 :(得分:0)

categories = df.Category.unique()   #to find unique categories
f,plots = plt.subplots(1,categories.len())   #generate subplot grid (1xNo. of unique categories)
for i, category in enumerate(categories):
    temp = df['Category'==category]   #get data for each category
    plots[i].scatter(temp['Date'],temp['Count'])   #plot for that category
plt.show()   #show final generated plot

上面是python代码,可能有一些语法错误,但它会让你知道如何解决你的问题以及如何编码。