我已上传6个月的数据7月-12月
这是我的字典数据
print(UPI_TransferIn)
输出:
[{'UPI TransferIn amt': 3000.0, 'date': '11-10-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 560.0, 'date': '25-09-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 3000.0, 'date': '14-09-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 6984.0, 'date': '09-07-2018', 'No of UPI Transaction': 1}]
我的代码
Avg_per_month = df.groupby(pd.Grouper(key='date', freq='1M')).mean()
Avg_of_3_Month = df.groupby(pd.Grouper(key='date', freq='1M')).mean().last("3M")
total_Avg_of_3_Months = Avg_of_3_Month['UPI TransferIn amt'].mean()
print("\nAverage UPI Transaction-In per month :\n ", Avg_per_month)
print("Total Average UPI Transaction-In in last 3 months : ", total_Avg_of_3_Months)
我得到的结果是:
--------------
Average UPI Transaction-In per month :
No of UPI Transaction UPI TransferIn amt
Date
Jul-18 1 6984.0
Aug-18 0 NaN
Sep-18 2 1780.0
Oct-18 1 3000.0
--------------
Total Average UPI Transaction-In in last 3 months : 2390.0
--------------
我希望计算当前的7月,9月,10月之间的平均值。即使我写了last("3M")
,也要计算9月和10月的平均值。
预期结果:
--------------
Total Average UPI Transaction-In in last 3 months : 3921.33333
--------------
答案 0 :(得分:2)
Avg_of_3_Month = (df.groupby(pd.Grouper(key='date', freq='1M'))
.mean()
.dropna(subset=['UPI TransferIn amt'])
.tail(3))
total_Avg_of_3_Months = Avg_of_3_Month['UPI TransferIn amt'].mean()
答案 1 :(得分:0)
耶斯列尔的答案很好。如果您想向后进行多个周期的分析,可以通过计算rolling的平均值来实现:
your_data = [{'UPI TransferIn amt': 3000.0, 'date': '11-10-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 560.0, 'date': '25-09-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 3000.0, 'date': '14-09-2018', 'No of UPI Transaction': 1}, {'UPI TransferIn amt': 6984.0, 'date': '09-07-2018', 'No of UPI Transaction': 1}]
df = pd.DataFrame(your_data)
df['period'] = pd.to_datetime(df['date'], dayfirst=True).dt.to_period('M')
group = df.groupby('period')['UPI TransferIn amt'].mean()
average_3months = group.rolling(window=3, center=False).mean()