Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 随时间变化的绘图类别百分比_Python_Pandas_Matplotlib - Fatal编程技术网

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

Python 随时间变化的绘图类别百分比,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个带有日期时间索引和软件版本列的数据框: 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 我想画出我有多少独特的版本的时间(说每月)和这些版本是什么。我希

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

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
我想画出我有多少独特的版本的时间(说每月)和这些版本是什么。我希望随着时间的推移绘制一个填充区域。在采用过程中,这些领域不断扩大,而在新版本推出时,这些领域则不断减少

可能是这样,但时间是横向的,版本是分组的


您可以执行以下操作:

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


尝试此操作,假设数据文件的格式如下所示:

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()
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()