绘制类别随时间变化的百分比

时间:2018-07-16 21:19:28

标签: python pandas matplotlib

我有一个带有日期时间索引和软件版本列的DataFrame:

Date                   Version
2018-07-10 15:42:16    1.0
2018-07-10 16:38:18    1.0
2018-07-10 20:21:54    2.0
2018-07-11 08:28:56    1.0
2018-07-11 13:16:48    2.0
2018-07-13 15:25:56    2.0

我想按时间(例如每月)绘制多少个独特版本以及这些版本是什么。我希望将其绘制成一段时间后的填充区域图。随着采用过程中面积的增加和新版本推出时面积的减少。

可能是这样,但水平方向带有时间,而版本作为分组。

https://python-graph-gallery.com/253-control-the-color-in-stacked-area-chart/

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

df.groupby('Version').resample('M').nunique()

或:

df.resample('d')['Version'].unique()

答案 1 :(得分:0)

尝试此操作,假设您的数据文件格式如上:

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S') 
data = pd.read_table(filename, parse_dates=['Date'], date_parser=dateparse)  # your file name 
data['month']  = data['Date'].dt.month.values; # can be year, etc. 
Months = data.groupby('month')['Version'].nunique().index.values 
nVersion = data.groupby('month')['Version'].nunique().values  
plt.fill_between(Months,0,nVersion)
plt.show()