到目前为止,我已经阅读了2个CSV并根据公共元素合并它们。我获取合并后的CSV的输出并迭代它们已合并的唯一元素。当我将它们分开时,我想生成每日计数行和从当前日期开始的两周滚动平均值。我不能根据' Date Opened'现场,但我仍然需要我最近的第一个组织的输出。一旦这些按日期排序,我的每日计数绘图问题将得到纠正。我剩下的任务是计算一周内计数的两周滚动平均值。我已经查看了Pandas文档,我认为rolling_mean会起作用,但这个函数的参数对我来说真的没有用。我试过biwk_avg = pd.rolling_mean(open_dt, 28)
,但似乎没有用。我知道有一种更简单的方法可以做到这一点,但我认为我已经找到了可用文档的障碍。最终结果应该类似于graph。现在我的每日计数图表没有排序(即使我认为我已经指示了它)并且是unusable的行格式。
def data_sort():
data_merge = data_extract()
domains = data_merge.groupby('PWx Domain')
for domain in domains.groups.items():
dsort = (data_merge.loc[domain[1]])
print (dsort.head())
open_dt = pd.to_datetime(dsort['Date Opened']).dt.date
#open_dt.to_csv('output\''+str(domain)+'_out.csv', sep = ',')
open_ct = open_dt.value_counts(sort= False)
biwk_avg = pd.rolling_mean(open_ct, 28)
plt.plot(open_ct,'bo')
plt.show()
data_sort()
答案 0 :(得分:1)
在你的情况下单独滚动手段是不够的;你需要重新采样的组合(按天分组数据),然后是14天的滚动平均值(你为什么在代码中使用28?)。有点类似于:
for _,domain in data_merge.groupby('PWx Domain'):
# Convert date to the index
domain.index = pd.to_datetime(domain['Date Opened'])
# Sort dy dates
domain.sort_index(inplace=True)
# Do the averaging
rolling = pd.rolling_mean(domain.resample('1D').mean(), 14)
plt.plot(rolling,'bo')
plt.show()