Help us understand the problem. What is going on with this article?

[pandas] read_csv のオプションだけで、時系列データとして扱いやすいデータフレームを作成する

More than 1 year has passed since last update.

この記事では、pandas の read_csv のオプションだけで、時系列データとして扱いやすいデータフレームを作成する方法を示します。Jupyter Notebook 上で作業していることを前提にします。

結論

気象庁が公開している csv を、以下のオプション指定で読み込みます。

df = pd.read_csv('data.csv',
            encoding='SHIFT-JIS',                      # 文字コードを指定
            skiprows=6,                                # 読み飛ばす先頭行数を指定
            usecols=[0, 1, 4, 7],                      # どの列を読み込むかを指定
            names=['date', 'average', 'high', 'low'],  # カラム名を設定
            parse_dates=['date'],                      # datetime で読み込むカラムを指定
            index_col=['date'])                        # インデックスにするカラムを指定

すると、以下のようにインデックスが DatetimeIndex となったデータフレームが作られます。

データフレーム

以下は解説です。

データソースの CSV

気象庁が公開している気象データを使用します。
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

地点を東京、項目を日平均気温、日最高気温、日最低気温、期間は過去 5 年分としてダウンロードします。

気象庁ダウンロードページ

オプション指定なして read_csv を使用した場合

まず、パッケージをインポートします。

import pandas as pd

文字コードの指定だけした状態で read_csv で CSV ファイルを読み込みます。

df = pd.read_csv('data.csv', encoding='SHIFT-JIS')

すると以下のようなデータフレームが作られました。ここから加工することもできますが、read_csv 時に綺麗な状態で取り込めるといいですよね。

データフレーム

オプションを指定して read_csv を使用する

上記の結論に書いた内容と重複しますが、read_csv のオプションを活用して、時系列データを扱いやすくするようにデータフレームを読み込みます。

df = pd.read_csv('data.csv',
            encoding='SHIFT-JIS',                      # 文字コードを指定
            skiprows=6,                                # 読み飛ばす先頭行数を指定
            usecols=[0, 1, 4, 7],                      # どの列を読み込むかを指定
            names=['date', 'average', 'high', 'low'],  # カラム名を設定
            parse_dates=['date'],                      # datetime で読み込むカラムを指定
            index_col=['date'])                        # インデックスにするカラムを指定

すると、次のようなデータフレームが作られます。

データフレーム

この状態だとインデックスが DatetimeIndex になっていますので、日時を指定した操作がしやすいです。例として、2017 年の日平均気温の折れ線グラフを描画する場合は、以下のように書きます。

%matplotlib inline
df.loc['2017'].plot(y='average', figsize=(15, 5))

折れ線グラフ

参考

pandas: read_csv
気象庁: 過去の気象データ・ダウンロード

ao_log
インフラ周りに興味があるエンジニア。ピアノを習い始めました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした