python - 使用重采样计算 2 周的平均计数

标签 python pandas resampling

我正在尝试使用 df.resample 计算特定 CSV 文件的 2 周平均传入量,因此每 2 周跨度的绘图应该是一条平坦的线。到目前为止,每日计数工作正常,我认为我正在获取 DatetimeIndex 并尝试从最近的日期到数据集末尾以 2 周的间隔重新采样。当我尝试时

open_dt = pd.to_datetime(dsort['打开日期']).dt.date open_dt = open_dt.reset_index().sort_values('打开日期').set_index('打开日期').groupby('打开日期').nunique() roll_avg = open_dt.resample('2W').mean() 我收到以下错误:

Only valid with DatetimeIndex, TimeDeltaIndex or PeriodIndex, but got instance of 'Index' 

我认为通过重置索引并将其设置为日期时间字段可以解决问题,但事实似乎并非如此。我还尝试初始化另一个仅提取原始文件的变量,但遇到了同样的问题。这是我的脚本的工作副本,其中包含损坏的 roll_avg

def data_process():#sorts by domain and team
data_merge = data_extract()
domains  = data_merge.groupby('PWx Domain')
for domain in domains.groups.items():
    dsort = (data_merge.loc[domain[1]])
    dsort.to_csv('output\\'+str(domain[0])+'.csv')
    open_dt = pd.to_datetime(dsort['Date Opened']).dt.date
    open_dt = open_dt.reset_index().sort_values('Date Opened').set_index('Date Opened').groupby('Date Opened').nunique()
    d_avg = open_dt.mean().round(0).item()
    roll_avg = open_dt.resample('2W').mean()
    print(roll_avg)
    fig = plt.figure()
    fig.suptitle(domain[0]+' Avg='+str(d_avg), fontsize=14)
    ax = plt.plot(open_dt,color='b', marker='o', linestyle='-') 
    ax = plt.plot(roll_avg, color = 'r', linestyle = '--') 
    fig.savefig('output\\'+domain[0]+'_Overall.png')
    plt.close()

这里是正在读入的文件头(data_merge)

       Client #                       Solution     Solution Family  \
0     81983  Ambulatory EHR ASP  Physician Practice
1     17235  Ambulatory EHR ASP  Physician Practice
2     17235  Ambulatory EHR ASP  Physician Practice
3     17235     Practice Management  Physician Practice
4     17235     Practice Management  Physician Practice

                      Team       SR #      Date Opened PWx Domain
0    PWx Mill Response ASP  416700000  6/20/2017 19:27   CPHYB_PR
1              Core T1 PWx  416700000  6/20/2017 18:33        NaN
2              Core T1 PWx  416700000  6/20/2017 18:33   CPHYB_PR
3  Claim Generation T3 PWx  416680000  6/19/2017 15:09        NaN
4  Claim Generation T3 PWx  416680000  6/19/2017 15:09   CPHYB_PR

最佳答案

dt.date 对象的索引不被识别为日期索引类型。它有dtype('O')。 如果您删除 .dt.date 中的 roll_avg 应该可以工作

open_dt = pd.to_datetime(dsort['Date Opened']).dt.date

关于python - 使用重采样计算 2 周的平均计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791204/

相关文章:

python - 使用 resample 为 pandas 数据框中的不同列聚合具有不同规则的数据

python - 警告 :tensorflow:Compiled the loaded model, 但尚未构建已编译指标

python - 使用 pygame 显示高分辨率 .png 图像

r - R 中的 Monte Carlo 模拟、Bootstrap 和回归

python - 无法控制 df.plot() 上第二个 y 轴的比例

python - 当使用 pandas 连续出现多个组时,如何按组添加数字

通过簇替换重新采样

python - 将数据框列文本包装为具有不同长度约束的多个列

python - 动态规划背包 K-精确项目

python - 根据 pandas 中的列值导出到 csv