工作日的熊猫石斑鱼?

时间:2017-06-13 11:44:38

标签: python pandas dataframe group-by time-series

我有一个pandas数据框,其中索引是从2007年到2017年的日期。

我想计算每个工作日的平均值。我能够按年分组:

groups = df.groupby(TimeGrouper('A'))
years = DataFrame()
for name, group in groups:
   years[name.year] = group.values

这是我创建新数据框(年)的方式,在每个列中我获取每年的时间序列。 如果我想查看每年的统计数据(例如,平均值):

print(years.mean())

但是现在我想将每周的每一天分开,以便获得所有当天的每个工作日的平均值。

我唯一知道的是:

year=df[(df.index.year==2007)]

day_week=df[(df.index.weekday==2)]

问题在于我必须每周更换7次,然后重复11次(我的时间序列从2007年开始到2017年结束),所以我必须做77次! / p>

有没有办法按年和工作日分组时间,以便加快速度?

1 个答案:

答案 0 :(得分:3)

DatetimeIndex.year DatetimeIndex.weekday groupby rng = pd.date_range('2017-04-03', periods=10, freq='10M') df = pd.DataFrame({'a': range(10)}, index=rng) print (df) a 2017-04-30 0 2018-02-28 1 2018-12-31 2 2019-10-31 3 2020-08-31 4 2021-06-30 5 2022-04-30 6 2023-02-28 7 2023-12-31 8 2024-10-31 9 df1 = df.groupby([df.index.year, df.index.weekday]).mean() print (df1) a 2017 6 0 2018 0 2 2 1 2019 3 3 2020 0 4 2021 2 5 2022 5 6 2023 1 7 6 8 2024 3 9 似乎需要df1 = df.groupby([df.index.year, df.index.weekday]).mean().reset_index() df1 = df1.rename(columns={'level_0':'years','level_1':'weekdays'}) print (df1) years weekdays a 0 2017 6 0 1 2018 0 2 2 2018 2 1 3 2019 3 3 4 2020 0 4 5 2021 2 5 6 2022 5 6 7 2023 1 7 8 2023 6 8 9 2024 3 9

JMX Publisher
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.Example;


...

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object mbean = new Example();
ObjectName name = new ObjectName("org.example.MyApplication:name=Example");
mbs.registerMBean(mbean, name);