作者sutekidesune (喵的~~喵咪)
看板Python
标题[问题] DataFrame 可以指定资料平均吗?
时间Tue Jul 7 12:17:53 2020
例如我有以下资料
日期 地区 销售额
2019-9 台北 100
2019-10 台北 101
2019-11 台北 102
2019-9 台中 111
2019-10 台中 112
2019-11 台中 113
2019-12 台中 114
我知道可以用data.groupby(by='地区').mean().reset_index()
这样取地区的平均
但是我希望抓取季的平均的话
可以指定的月份进行平均吗
例如抓取2019-9 到 2019-11月三个月平均
目前我是用while进行月份判断再抓取资料来平均
但是希望看能不能用dataframe的方法就可以解决了
请问有比较好的方式处理吗?
感谢各位帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.65.108 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1594095475.A.66E.html
1F:推 jiyu520: 先依照你要的规则做一个col, 然後使用该col做group 07/07 13:11
3F:推 mthsieh: 将 date 设为 datetime index, 再用 groupyby([pd.Groupe 07/07 19:57
4F:→ mthsieh: r(), '地区']) 处理 07/07 19:57
感谢三位的帮忙解答,
另外想请问,由於有可能有些资料是不够一季的话
有办法剔除吗
日期 地区 销售额
2019-9 台北 100
2019-10 台北 101
2019-9 台中 111
2019-10 台中 112
2019-11 台中 113
2019-12 台中 114
例如我想抓取2019-9到2019-11的每地区三个月平均
但是台北只有两个月的资料,那这样有办法剔除台北,
只保留有够三个月资料的地区用来抓取平均值吗?
我是试着抓取count来尝试,但是就不晓得如何用count的结果来剔除不需要的地区
df_count = df.groupby(['city']).size().reset_index(name='count')
※ 编辑: sutekidesune (180.217.197.185 台湾), 07/07/2020 21:12:37
5F:推 mthsieh: df.groupby('地区').filter(lambda x: x['销售额'].count 07/07 21:57
6F:→ mthsieh: > 2).groupby('地区')['销售额'].mean() 07/07 21:57
感谢m大帮忙, 立刻来尝试看看 谢谢
※ 编辑: sutekidesune (180.217.197.185 台湾), 07/07/2020 22:08:04
※ 编辑: sutekidesune (180.217.197.185 台湾), 07/07/2020 22:09:48
解决了 感谢m大
不过有个小地方有错误
filter(lambda x: x['销售额'].count > 2)
^^^^^
要改成size才能使用
※ 编辑: sutekidesune (180.217.197.185 台湾), 07/07/2020 22:49:04