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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

Q&A

解決済

1回答

1176閲覧

年度の異なるデータを結合し、グラフを作成したい。

taihei_._

総合スコア15

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

0グッド

0クリップ

投稿2021/09/22 15:32

前提・実現したいこと

2010年から2019年の10年間、30分おきに観測している波高データがあり、
そこから10年分の月ごとの平均値を出し、以下のようなグラフを作成したいのですが、異なる年度をどのように平均計算するのかがわからないため質問させていただきます。
![イメージ説明

該当のソースコード

import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as dt from matplotlib.dates import date2num #有義波高の平均 pd.set_option('display.max_rows',20) df1=pd.read_csv('liverpool2010-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df2=pd.read_csv('liverpool2011-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df3=pd.read_csv('liverpool2012-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df4=pd.read_csv('liverpool2013-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df5=pd.read_csv('liverpool2014-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df6=pd.read_csv('liverpool2015-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df7=pd.read_csv('liverpool2016-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df8=pd.read_csv('liverpool2017-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df9=pd.read_csv('liverpool2018-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df10=pd.read_csv('liverpool/liverpool2019-bay-wavenet-site.csv',header=None, skiprows=1,)[[0,2]] df = pd.concat([df1, df2,df3,df4,df5,df6,df7,df8,df9,df10]) df.columns=["Time (GMT)", "Significant wave height (Hm0) (m)"] df['Time (GMT)']=pd.to_datetime(df['Time (GMT)']) df=df.set_index("Time (GMT)") df_a=df.resample('M').mean() df_a

試したこと

上記のようなプログラムを試し、各年ごと、月ごとの平均値を示す以下のようなdfまでは表示させられたのですが、その先どのように2010,2011,...2019の各月データの平均を取り、結合したらよいのかがわかりません。

Significant wave height (Hm0) (m)

Time (GMT)
2010-01-31 0.806613
2010-02-28 0.534516
2010-03-31 0.585578
2010-04-30 0.503285
2010-05-31 0.534234
... ...
2019-08-31 0.824227
2019-09-30 0.873375
2019-10-31 0.889899
2019-11-30 0.831382
2019-12-31 1.168272

[120 rows x 1 columns]

補足情報(FW/ツールのバージョンなど)

python3
jupyternotebook

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

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

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

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

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

guest

回答1

0

ベストアンサー

データは乱数で作ったものですが、以下のようにして月ごとの平均が求まります。

python

1>>> print(df) 2 wave hight 32010-01-31 1.023684 42010-02-28 0.574301 52010-03-31 0.634187 62010-04-30 1.491040 72010-05-31 0.516669 8... ... 92019-08-31 0.622982 102019-09-30 0.958544 112019-10-31 1.070728 122019-11-30 1.111832 132019-12-31 0.790572 14 15[120 rows x 1 columns] 16>>> df.reset_index(inplace=True) 17>>> df.columns = ['Time (GMT)', 'Significant wave height (Hm0) (m)'] 18>>> 19>>> df['month'] = df['Time (GMT)'].dt.month 20>>> df_mean = df.groupby('month')[['Significant wave height (Hm0) (m)']].mean() 21>>> print(df_mean) 22 Significant wave height (Hm0) (m) 23month 241 0.938171 252 0.995532 263 1.157956 274 1.279465 285 0.964688 296 1.136476 307 0.978370 318 0.936350 329 1.046416 3310 1.028055 3411 1.122128 3512 0.977307

投稿2021/09/22 15:59

ppaul

総合スコア24666

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

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

taihei_._

2021/09/23 05:14

ご回答ありがとうございます。 求めていた通りに表示することができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問