作者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/m.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