- 締切済み
エクセルでの時系列表示
エクセルの時系列データがあるのですが、その表示方法についてお尋ねします。 以下がそのデータをcsv形式に変換した一部です。 2019/07/31 24:00,237.81, , , , 2019/08/01 01:00, , , , 年・月・日・時間・分が1つかたまりで、その次にカンマで区切られたデータが来ています。このようなものが1万個ぐらいあります。1時間ごと(その意味では分は不要)のデータで年月日時間順に並んでいます。自動計測の気象データのようなものです。このようなデータがあったとき、それを時系列に表示する方法が難しいと思っています。また作図したときの図のメモリ数字の表示方法も問題です。系統的に間引く必要があります。元旦からの時間数で通しで表示すればよい(メモリ数字は10日=240時間ごととか)ように思いますが、季節の感じが欠落します(元旦からの時間数にはあまり意味がない)。月がわかるように表示するのがいいのかもしれません。時系列を作成して横軸の時間に1月、2月...と区切りをつける方法があるでしょうか。自分で考えてレジェンドを入れていくのも方法ですが、オートマチックにやりたいのですが。作図なので編集する必要があり、そのたびに細かいレジェンド設定は効率が悪いのです。よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
- HohoPapa
- ベストアンサー率65% (455/693)
元々のデータがどのように作成されたものなのか定かではありませんが、 >エクセルの時系列データがあるのですが、 >以下がそのデータをcsv形式に変換した一部です。 >2019/07/31 24:00,237.81, , , , >2019/08/01 01:00, , , , エクセルからcsvに切り出した場合、 2019/07/31 24:00 という結果にはならないと思います。 この部分をもう少し説明してほしいところです。 更に グラフを作成する作業もエクセル上で行うことを想定しているのであれば、 1つのグラフに指定できる要素数は実装メモリーに依存し 見かけ上、相当な数まで指定できますが 描画する時には、 グラフ領域の横方向のピクセル数以上を指定すると 間引かれます。 (一定範囲の平均かも) 手作業でレイアウトを色々試行錯誤し 最終的にどのようなレイアウトに加工すればいいのか 具体的に提示してもらえれば VBAを使わない解を提示できると思います。 逆に言えば、提示されない限り 提示できません。
- HohoPapa
- ベストアンサー率65% (455/693)
期待されている変換後のレイアウトがイメージできません。 >1年分すべて1列に入っている方が使いやすいです という発言と >1年間の8千数百時間の横軸を1月、2月、、、12月として自動で表示する方法です という発言が矛盾していませんでしょうか? もう一度、データが1年分だった場合を例に 横軸の項目並びと縦軸の項目並びを説明してほしいのです。 また、先のコメントでも聞いているんですが VBAを使った解を求めていますか?
お礼
回答ありがとうございます。お付き合いいただいています。発言が矛盾して見えるのは試行錯誤中なのでどうしたものか右往左往しているということです。VBAによる処理は時間がかかりそうです(これは少し訓練を要するので)。 やりたいことは時系列の作図であり、データは1年間間断なく1時間ごとのデータが得られているということです。365×24個です。年月日時とデータが個数分縦に並んでいると言う構成です。 これを横軸(時間方向)が分かりやすいようにグラフ(心電図のような折れ線)に示すということです。 私が饒舌にアレコレ試行錯誤の発言をすると誤解が生じそうなので説明はここまでにしておきます。 よろしくお願いします。
- HohoPapa
- ベストアンサー率65% (455/693)
2019/07/31 24:00,237.81 この24というのは、24時を意味しているのではなく 2019/07/31の24番目の時間帯 つまり、 2019/07/31 23:00 ~ 2019/08/01 00:00 ですか。 更に、期待している変換後のレイアウトは 縦軸がこの24個の時間帯 横軸が年月日ですか? 更に、年月日を全数並べてしまうと見やすさを失うので 添付画像のようにしたいということでいいでしょうか? ならば、出来合いの関数でも可能かもしれませんが 相当困難と思います。 つまり、VBAを仕込む必要がありそうですが、 VBAでの解を求めていますでしょうか?
お礼
回答ありがとうございます。時間は瞬時値、その時間での観測値です。時系列を表示するという意味では値が1年分すべて1列に入っている方が使いやすいです。1月と2月が別の列になると難しいです(上・中・下旬も)。 質問の主旨は作図時の表示です。シートに示されているように図面をきれいに表示することではなく、あくまでも時系列を作図する問題なのです。1年間の8千数百時間の横軸を1月、2月、、、12月として自動で表示する方法です。例えば1月は24x31=744個ですね。時系列のはじめの744個は1月です。それを1月として表示する方法なのです。2月は少し少ないですね。そういう場合、どういう処理になるのかなということですが。
- imogasi
- ベストアンサー率27% (4737/17069)
補足すべき質問表現状態かと思う。 ・データ例の充実 ・やりたいことの直接的説明 が不十分。 ーーー >をcsv形式に変換した一部です いまはCSVデータを、エクセルのシートに読みこめる。 こんなことを書く必要がない。エクセルのシートのデータとして質問すればよいだろう。 ーー 色々書いているが ・データを間引きたいのか これなど簡単なVBAで直ぐできる(For Step) ・時刻的にまとまったデータを、「代表値」(平均、最大など)で置き換えて データ数を少なくすることも可能だろう。 ・ピボットテーブルでグループ化という方法も使える場合がある。 日データを月区画にまとめるなど。 ピボットテーブルには、ピボットグラフという分野もあるよ。 == 模擬データ数をもう少し増やして、丁寧にやりたいことを、説明すべきだ。 文字数が多い割に何をすべきなのかわかりにくい。 ーー >作図なので編集する必要があり 何のこと。 >レジェンド設定 グラフの「凡例」のこと? 前半では、>時系列に表示したいとはいっているが、「グラフ化したい」とはいってないよね。この質問はエクセルでグラフ化の質問か? それなら、表題の「エクセルでの時系列表示 」は、まどろっこっしい表現だな。「エクセルデータのグラフ化に「ついて」などとすべきか。
お礼
すみません。この質問は図化だけの問題です。横軸(時間)の表記方法の質問です。”時系列”というのは”時系列データの図”と思って下さい。またデータの間引きはありませんが、横軸をどうやって表記するかということです。1月でも24×31=744個になっており、それを1年分表記したときの横軸の表記なのですが。
- mt2015
- ベストアンサー率49% (258/524)
そのCSVをそのまま使うのではなく、あくまでもデータとして扱い、集計用のシートを別に用意するべきでは? 例えば、Sheet1はそのCSV貼り付け用で、Sheet2で各月の上旬・中旬・下旬の平均を出し、グラフなどはSheet2の情報で作成する。 こんなブックを1つ作って置けばCSVを貼り付けるだけで集計までは自動になります。
お礼
回答ありがとうございます。時系列データそのものの表示であり平均値の処理(平均値という代表値を与えてそれだけ表示する≒表示上の間引き)はしません。生の値そのものをプロットします。1月間、約744(24x31)個のデータです。その1年分あるいは5年分のプロットです。 例えば、2月上旬の最初は2月1日午前1時、2月中旬の最初は2月10日の午前1時、下旬の最初は2月20日の午前1時なので、そこだけ"2月上旬"、"2月中旬"、"2月下旬"と表記してそれ以外は何も表記しないということだとどうでしょうか。2月上旬という期間はそこと、”2月中旬”の直前までという意味になります。そういうことをしないと240個ぐらい”2月上旬”という文字が割り当てらグラフに表記されるように思います(文字が重なって読み取れない)。その期間の横軸の表記は1つだけでいいのです。そういうのは手作業なしにできるものでしょうか。1月の長さがまちまちということもあるわけですが。
- msMike
- ベストアンサー率20% (364/1804)
確認させてください。 「2019/07/31 24:00」というデータは 「2019/08/01 00:00」に等しいンですが、貴方も同じ理解ですか? それから 24:00 なる時刻データがあるなら、25:00、123:00 なるものも存在するということですか?その最大値は如何ほどですか?
お礼
回答ありがとうございます。前日24時と翌日の深夜零時の重複はありません。どちらかに統一されています。例示したものは7月31日の24時の次は8月1日の1時となっています。つまり時間は1を最小として24を最大としてサイクルしています。そのようなデータが1年分あります。場合によっては10年分ぐらい。マックスでは50年ぐらいあるかもです。そういう時系列データを作図するときの横軸の表記方法の問題です。1998年の11月下旬がどの辺かとか一目でわかるのは無理ですね。そういう場合は”1998年秋”とかになるかもです(もっとざっくり”1998年後期”とか)。1年間だけ作図するときは"11月下旬"など10日区切りでいいように思います。11月20日の午前1時のデータに"11月下旬"と表記してあとは空白とかでしょうか。12月上旬も同様にすると11月下旬の期間は"11月下旬"と示されたところから"12月上旬"と示されたところまでということを示すことができます。そういう感じかなと思いますが。
- aokii
- ベストアンサー率23% (5210/22062)
エクセルで、年・月・日・時間・分が1つのかたまりのセルがA2だった場合の例として、以下の式を未使用の列に入れて、下にドラッグコピーして、年月のみのデータを取得してみてください。 =DATE(YEAR(A2),MONTH(A2),1)
お礼
回答ありがとうございます。たしかに年月のように簡略化して表示していくしかありませんね。ただし、全データでやってしまうと同じ年月のものが約744個(24x31)並ぶのでグラフに全部表記する必要はないですし、文字が重複して見えないですね。その調整方法なのですが。シートでの1月分(744個)の先頭だけ表示にしてあとはブランクにするとか(手作業?)。あるいはシート上で全部一気に処理するために全部のデータに年月を出してグラフ化するときの横軸に関する情報の目盛りとして間引くように処理するとかでしょうか。
お礼
回答頂きありがとうございます。この質問は私がやりたいことを明示できていないところが問題なのだと思っています。”自分でもどうしたらいいかわからないのだけれども、見映えのいい作図・描画をしたい”ということなのです。横軸があれほどまで(1年:365x24)に刻まれていたら横軸の表示をどうしたらいいかわからないのです。一番ざっくりしているのは季節で示すということになりますし、細かいと月ごとでしょうか。また、時刻の表示のフォーマットですが、これはどのようにでも変換できるものと思います。データを最初から連番で示したら元旦から1年間の経過時間となります。しかし、例えば元旦から3835時間目という情報にあまり意味がありません。経過時間ではなく、年月日時情報があるのでそれに基づいた横軸にしたいのです。こういうデータの作図方法について知りたいというのが主旨なのですが。見てくれよく作図する方法という質問です。見てくれがいい、ということの内容については私もよくわかりませんが。図に書いてお示ししたいところですが、それがかないませんね。横軸の情報を全く示さないで作図してそのあと横軸に手作業で春・夏・秋・冬(元旦からスタートすると冬春夏秋冬)と入れるとか、そういう非効率を避けたいと思っているのですが。このやり方がわかったら10年間の作図への参考にもなると思います。