如何使用总和和平均值对面板数据从每日到每月进行重采样?
How to do Resampling of panel data from daily to monthly with sums and averages?
我正在使用如下所示的 COVID-19 数据集:
Date
City
City ID
State
Estimated Population
Estimated Population_2019
Confirmed Rate
Death Rate
New Confirmed
New Deaths
2020-03-17
Rio Branco
10002
AC
413418
407319
0.72566
0.01
3
0
2020-03-17
Manaus
12330
AM
555550
555964
0.65433
0.005
5
3
日期是我的索引。如所见,我有多个日期相同的城市。
鉴于我有每天的数据点,我正在尝试对我的数据重新采样,以便我有每月的数据点。我尝试过使用 resample 命令,但我遇到了麻烦,因为我希望我的一些列是相同的和总和,而一些是平均值。更具体地说:
- 城市、城市 ID、州:将与 ID 保持不变
- 估计人口和Estimated_population:我想对每一列取平均值,这些将是新的月度值
- 确认率和死亡率:我想取这些值的月平均值,并将这些值作为我的月值,我想创建新列 给出每月我的确诊率和死亡率的标准差。
- 对于新确诊和新死亡:我想添加这些值,并将我的月度点作为新病例和死亡的总和,在两个单独的列中。
我怎样才能编写代码来区分要添加哪些列,哪些列取平均值,以及如何为确诊率和死亡率的标准差创建两个新列?
您应该探索 groupby 与 .agg 的组合。
这样的东西应该可以工作
df_grouped=df.groupby([df.index.month,'City ID']).agg({'Estimated Population':'mean','Estimated Population_2019':'mean','Confirmed Rate':['mean','std'],'Death Rate':['mean','std'],'New Confirmed':'sum','New Deaths':'sum'})
df_grouped.index.rename(['Month','City ID'],inplace=True)
我正在使用如下所示的 COVID-19 数据集:
Date | City | City ID | State | Estimated Population | Estimated Population_2019 | Confirmed Rate | Death Rate | New Confirmed | New Deaths |
---|---|---|---|---|---|---|---|---|---|
2020-03-17 | Rio Branco | 10002 | AC | 413418 | 407319 | 0.72566 | 0.01 | 3 | 0 |
2020-03-17 | Manaus | 12330 | AM | 555550 | 555964 | 0.65433 | 0.005 | 5 | 3 |
日期是我的索引。如所见,我有多个日期相同的城市。
鉴于我有每天的数据点,我正在尝试对我的数据重新采样,以便我有每月的数据点。我尝试过使用 resample 命令,但我遇到了麻烦,因为我希望我的一些列是相同的和总和,而一些是平均值。更具体地说:
- 城市、城市 ID、州:将与 ID 保持不变
- 估计人口和Estimated_population:我想对每一列取平均值,这些将是新的月度值
- 确认率和死亡率:我想取这些值的月平均值,并将这些值作为我的月值,我想创建新列 给出每月我的确诊率和死亡率的标准差。
- 对于新确诊和新死亡:我想添加这些值,并将我的月度点作为新病例和死亡的总和,在两个单独的列中。
我怎样才能编写代码来区分要添加哪些列,哪些列取平均值,以及如何为确诊率和死亡率的标准差创建两个新列?
您应该探索 groupby 与 .agg 的组合。 这样的东西应该可以工作
df_grouped=df.groupby([df.index.month,'City ID']).agg({'Estimated Population':'mean','Estimated Population_2019':'mean','Confirmed Rate':['mean','std'],'Death Rate':['mean','std'],'New Confirmed':'sum','New Deaths':'sum'})
df_grouped.index.rename(['Month','City ID'],inplace=True)