Python で日時と流量のデータを扱う
目次
- 1. エグゼクティブサマリー
- 2. Python 3.12 のインストール
- 3. Python の開発環境 Visual Studio Code のインストールと Python 用の設定
- 4. Python プログラム実行手順
- 5. 必要なライブラリのインストール
- 6. 実行のための準備とその確認手順(Windows 前提)
- 7. 概要・使い方・実行上の注意
- 8. ソースコード
- 9. 演習1 CSV の列名と読み込み結果の対応を確認する
- 10. 演習2 日時列の型を確認する
- 11. 演習3 軸ラベルと描画されるグラフの対応を確認する
- 12. まとめ
1. エグゼクティブサマリー
Kaggle で公開されている交通量データ(CSV ファイル)を Python で読み込み,日時列の型変換,データの表示,折れ線グラフによる可視化を行う。
https://www.kaggle.com/coplin/traffic/data
2. Python 3.12 のインストール
3. Python の開発環境 Visual Studio Code のインストールと Python 用の設定
4. Python プログラム実行手順
5. 必要なライブラリのインストール
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
起動後,以下を実行する。
pip install -U --no-user pandas matplotlib
6. 実行のための準備とその確認手順(Windows 前提)
プログラムファイルの準備
「ソースコード」のコードをテキストエディタ(Visual Studio Codeやメモ帳など)に貼り付けて保存する(文字コード:UTF-8)。
実行コマンド
コマンドプロンプトでファイルの保存先ディレクトリに移動し,保存したファイルを指定して実行する。
python a.py
動作確認チェックリスト
| 確認項目 | 期待される結果 |
|---|---|
| CSV ファイルの読み込み | エラーが発生せず H:/a.csv が読み込まれる |
| 日時列の型変換 | datetime 列が datetime64 型に変換される |
| データの表示 | datetime 列と traffic_count 列を持つ DataFrame が表示される |
| 折れ線グラフの表示 | 横軸が日時,縦軸が流量の折れ線グラフが表示される |
7. 概要・使い方・実行上の注意
CSV ファイルは datetime(日時)と traffic_count(流量)の 2 列で構成される。各行の形式は以下のとおりである。
2019/3/14 4:00, 12
2019/3/14 5:00, 18
2019/3/14 6:00, 45
2019/3/14 7:00, 80
2019/3/14 8:00, 120
プログラムは以下の順に処理を実行する。pd.read_csv で CSV ファイルを読み込み,列名 datetime と traffic_count を付与する。skipinitialspace=True により,カンマ後の先頭スペースを除去する。次に pd.to_datetime で日時列を datetime 型(日時を表す専用のデータ型)に変換する。変換後のデータを print で表示し,matplotlib で折れ線グラフを描画する。
CSV ファイルのパスはプログラム中で H:/a.csv と指定されている。実行環境に応じてこのパスを変更する必要がある。
8. ソースコード
import pandas as pd
import matplotlib.pyplot as plt
d = pd.read_csv("H:/a.csv", header=None, names=["datetime", "traffic_count"], skipinitialspace=True)
d["datetime"] = pd.to_datetime(d["datetime"], format="%Y/%m/%d %H:%M")
print(d)
plt.plot(d["datetime"], d["traffic_count"])
plt.xlabel("datetime")
plt.ylabel("traffic_count")
plt.show()
9. 演習1 CSV の列名と読み込み結果の対応を確認する
テーマ名:列名の指定と DataFrame の表示
手順:「ソースコード」のプログラムについて,CSV ファイルのパスを実行環境に合わせて書き換えてから実行する(メモ帳を用いる場合は a.py のようなファイル名で保存して実行)。print(d) の出力を確認する。
ヒント:names で指定した列名は datetime と traffic_count の順で各列に対応する。header=None は CSV の 1 行目をデータとして扱う指定である。
考察ポイント:表示された DataFrame の列名と先頭のデータが,CSV ファイルの各行の値と対応しているかを読み取る。
import pandas as pd
import matplotlib.pyplot as plt
d = pd.read_csv("H:/a.csv", header=None, names=["datetime", "traffic_count"], skipinitialspace=True)
d["datetime"] = pd.to_datetime(d["datetime"], format="%Y/%m/%d %H:%M")
print(d)
plt.plot(d["datetime"], d["traffic_count"])
plt.xlabel("datetime")
plt.ylabel("traffic_count")
plt.show()
10. 演習2 日時列の型を確認する
テーマ名:datetime 型への変換
手順:「ソースコード」のプログラムに対し,print(d) の行の前後で print(d["datetime"].dtype) を実行し,型の表示を確認する(メモ帳を用いる場合は a.py のようなファイル名で保存して実行)。pd.to_datetime の行をコメントアウトした場合の表示とも見比べる。
ヒント:pd.to_datetime は format で指定した書式の文字列を datetime 型に変換する。書式 %Y/%m/%d %H:%M は,CSV の各行の日時の形式に対応する。
考察ポイント:変換の前後で dtype の表示がどう変わるかを読み取る。
import pandas as pd
import matplotlib.pyplot as plt
d = pd.read_csv("H:/a.csv", header=None, names=["datetime", "traffic_count"], skipinitialspace=True)
print(d["datetime"].dtype)
d["datetime"] = pd.to_datetime(d["datetime"], format="%Y/%m/%d %H:%M")
print(d["datetime"].dtype)
print(d)
plt.plot(d["datetime"], d["traffic_count"])
plt.xlabel("datetime")
plt.ylabel("traffic_count")
plt.show()
11. 演習3 軸ラベルと描画されるグラフの対応を確認する
テーマ名:折れ線グラフの軸の対応
手順:「ソースコード」のプログラムを実行し,表示された折れ線グラフの横軸と縦軸を確認する(メモ帳を用いる場合は a.py のようなファイル名で保存して実行)。plt.xlabel と plt.ylabel に渡した文字列を別の文字列に書き換えて再実行し,表示の違いを確認する。
ヒント:plt.plot の第 1 引数が横軸,第 2 引数が縦軸に対応する。plt.xlabel と plt.ylabel は,それぞれ横軸と縦軸のラベルを設定する。
考察ポイント:横軸の日時の並びと縦軸の流量の変化が,CSV ファイルのデータの並びと対応しているかを読み取る。
import pandas as pd
import matplotlib.pyplot as plt
d = pd.read_csv("H:/a.csv", header=None, names=["datetime", "traffic_count"], skipinitialspace=True)
d["datetime"] = pd.to_datetime(d["datetime"], format="%Y/%m/%d %H:%M")
print(d)
plt.plot(d["datetime"], d["traffic_count"])
plt.xlabel("datetime")
plt.ylabel("traffic_count")
plt.show()
12. まとめ
CSV ファイルの読み込み
pd.read_csv で CSV ファイルを DataFrame として読み込む。names で列名を指定し,skipinitialspace=True で空白を除去する。
日時データの型変換
pd.to_datetime で文字列を datetime 型に変換する。format で日時の書式を指定する。
データの表示
print で DataFrame の内容を表示し,読み込みと型変換の結果を確認する。
折れ線グラフによる可視化
plt.plot で横軸を日時,縦軸を流量とした折れ線グラフを描画する。