大佬教程收集整理的这篇文章主要介绍了如何计算groupby()之后的曲线下面积(积分)?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个循环运行的机器的数据集。我想从机器运行每个周期期间发生的时间序列中提取特征。
然后我使用 groupby() 来收集每个周期的数据。现在我想使用 np.trapz() 来获取曲线下的区域,但我得到了堆栈。
如果你知道其他更简单的方法,对我来说也很好。
数据如下:
data = {'date_time':['2017-03-22 10:07','2017-03-23 10:08','2017-03-24 10:09','2017-03-25 10:10','2017-03-26 10:11','2017-03-27 10:12','2017-03-28 10:13','2017-03-29 10:14','2017-03-22 10:15','2017-03-22 10:16','2017-03-22 10:17','2017-03-22 10:18','2017-03-22 10:19','2017-03-22 10:20','2017-03-22 10:21','2017-03-22 10:22','2017-03-22 10:23','2017-03-22 10:24','2017-03-22 10:25','2017-03-22 10:26','2017-03-22 10:27','2017-03-22 10:28','2017-03-22 10:29','2017-03-22 10:30'],'production_line_no':[1,1,2,1],'var1':[20,21,4,18,20,10,6,9,8,3,7,21],'var2':[20,19,11,'running':[0,1]
}
df=pd.DataFrame(data)
现在我像这样为每个周期计算几个聚合,并且效果很好:
# Convert date time String to datetiR_534_11845@e type
df['date_time']= pd.to_datetiR_534_11845@e(df['date_time'],format='%Y-%m-%d %H:%M')
# Create cycle_ID to differenciate the different cycles and prepare the use of groupby() + agg()
df['cycle_ID']=df['running'].diff().abs().cumsum()*df['running']
# define agg type Pandas built-in
aggregations = {
'var1':['std','min'],'var2':['std','date_time':[lambda x:(max(X) - min(X)).days,'min','max']
}
# Create the gouped object
grouped=df.groupby(by=['cycle_ID','production_line_no'],as_index=falsE).agg(aggregations)
grouped
这是输出: df of aggregations
现在我想为每个变量添加一个新特征,即曲线下的面积。我尝试使用 groupby() + np.trapz() 但我卡住了。
grouped_area=df.groupby(by=['cycle_ID',as_index=falsE).apply(lambda x: np.trapz(x,dx=1.0))
我收到了那个错误:ValueError: CAnnot add integral value to timestamp without freq.
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何计算groupby()之后的曲线下面积(积分)?全部内容,希望文章能够帮你解决如何计算groupby()之后的曲线下面积(积分)?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。