質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

5356閲覧

pandasのgroupbyメソッドで7日間のデータの平均を求めたい。

pinocookie

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

2クリップ

投稿2018/07/10 06:25

編集2018/07/10 06:28

現在以下のようなデータの解析を行っています。

日付(DatetimeIndex)曜日商品名売上数量
2017-01-01日曜日...12
2017-01-02月曜日...94
2017-01-03火曜日...32
2017-01-04水曜日...12
2017-01-05木曜日...18
2017-01-06金曜日...25
2017-01-07土曜日...19
2017-01-08日曜日...21
............

行いたい事はこのデータに対して、2017年1月1日からの7日間の平均と標準偏差を取る事です。

そこで以下のようなコードで分析を行いました。

python

1df = pd.read_csv('data.csv', encoding='shift-jis') 2 3# indexはDatetimeIndexに変換済みです 4year_group = df.index.year.rename('year') 5month_group = df.index.month.rename('month') 6week__group = df.index.week.rename('week') 7df['週平均'] = df.groupby([year_group, month_group, week_group])['売上数量'].transform('mean') 8df['週標準偏差'] = df.groupby([year_group, month_group, week_group])['売上数量'].transform('std')

すると以下のような結果が返ってきました。

| 週平均 週標準偏差
日付
2017-01-01 12.000000 NaN
2017-01-02 33.333333 27.83080
2017-01-03 33.333333 27.83080
2017-01-04 33.333333 27.83080
2017-01-05 33.333333 27.83080
2017-01-06 33.333333 27.83080
2017-01-07 33.333333 27.83080
2017-01-08 24.834198 12.91382

私は、2017年1月1日からの7日間ごとの平均と標準偏差がほしいのですが、pandasのgroupbuメソッドで行うと、曜日区切りで計算してしまい、2017年1月1日は日曜日始まりなため、私が行いたい事が正しく計算できません。

どのような操作を行えば、曜日ではなく7日間の平均や標準偏差を取得できるのか、知見をいただければと思います。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

resample()メソッドを使うと簡単です。

python

1Mean_weekly=df.resample('W').mean() 2Std_weekly=df.resample('W').std()

resampleの引数はまとめたい単位です。W(週)以外にMやDもあります。これでまとめられたオブジェクトができたので、やりたい処理をメソッドとして追加すれば完成です

投稿2018/07/10 07:09

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinocookie

2018/07/10 07:12

回答ありがとうございます! 以前の自分の質問内容を元に、自力解決できました! ほとんど同じ手法になりました。 ありがとうございました。
guest

0

自己解決

resampleメソッドを使用して、7日間の情報を得る事ができました。

python

1df['週平均'] = df['売上数量'].resample('7D').transform('mean') 2df['週標準偏差'] = df['売上数量'].resample('7D').transform('std')

| 週平均 週標準偏差
日付
2017-01-01 30.287450 25.82696
2017-01-02 30.287450 25.82696
2017-01-03 30.287450 25.82696
2017-01-04 30.287450 25.82696
2017-01-05 30.287450 25.82696
2017-01-06 30.287450 25.82696
2017-01-07 30.287450 25.82696
2017-01-08 24.834198 12.91382

投稿2018/07/10 07:04

pinocookie

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問