【第30回PYTHON講座】一年間の気温をプロット その①pandasで読み込めるようにフォーマット

PYTHON

PYTHONを使って、東京の一年間の気温をプロットするプログラムを作ってみたいと思います。

一年間でどの時期が一番暑いか、寒いかをグラフに表すと分かりやすいですからね。

2回に渡ってプログラム作成の手順を説明します。今回はダウンロードしたデータをpandasが読み込めるフォーマットする段階までのプログラムを作成します。

気温データのダウンロード

東京の気温データは気象庁のホームページで取得することが出来ます。

下記の通り、『地域』に東京を選び、『日平均気温』、『日最高気温』、『日最低気温』を選択して下さい。

今回、『期間』は2011年1月10日から2021年1月10日を選びました。すべて選択すれば、『CSVファイルをダウンロード』のボタンをクリックしてください。CSVファイルがダウンロードされます。

ライブラリについて『matplotlib』、『pandas』、『datetime』

使用するライブラリは、『matplotlib』、『pandas』、『datetime』の3つになります。

matplotlib』は、グラフを描画する為に使用します。

pandas』は、CSVのデータ操作の為に使用します。

datetime』は、日付の操作の為に使用します。

ライブラリがインストールされていなければ、下記のコマンドでインストールをして下さい。

#ライブラリをインストール
pip install matplotlib
pip install pandas
pip install datetime

ダウンロードしたCVSデータを読み込む

ダウンロードしたデータをLibreOffice Calcで開く際は、文字のエンコーディングを『日本語(Shift+JIS)』を選択して下さい。それ以外のエンコーディングを選ぶと文字化けしてしまいます。

文字のエンコーディング

ファイルを開くと下記の通りになります。ご覧の通り、空欄の行、不要な行があります。このような不規則なデータだと、『pandas』でCSVファイルを正しく読み込めません。よって、『pandas』でデータ操作できるようにしやすいように1、2、3、5,6行目を削除するプログラムを作成します。

編集前のデータ

プログラム

import matplotlib.pyplot as plt
import pandas as pd
import datetime as dt

a_file = 'C:/Labo/trial/data.csv'
b_file = 'C:/Labo/trial/data2.csv'
i = 0

f1 = open(a_file, mode='r')
f2 = open(b_file, mode='w')

for fline in f1:
    i += 1
    if i == 4 or i > 6 :
        f2.write(fline)

f1.close()
f2.close() 

1から3行目:ライブラリを定義します。

4,5行目a_fileはオリジナルのデータです。b_fileは指定の行を削除したデータになります。編集間違いの為に、オリジナルのデータを残します。

7行目:行数をカウントするために変数iを定義します。

9、10行目:ファイルを開きます。読む込むファイルmode=’r’にし、書き込むファイルmode=’w’にします。

12から15行目:1、2、3、5,6行目を削除するプロセスになります。プログラムとしては、1、2、3、5,6行目以外のデータ、つまり、4行目と7行目以降をb_fileに移動することになります。複数の条件の場合は、orで連結させます。

17から18行目:ファイルを閉じます。ファイルを開けた場合は、閉じる事を忘れないようにしましょう。

プログラムを実行すると、下記の通りのファイルが出来ました。

編集後のデータ

次回はデータをプロット

いかがだったでしょうか。

CSVでフォーマットされているからといって、pandasが操作できるとは限りません。上記のようにフォーマットしなおす必要があります。

次回は、このフォーマットされたデータを元に、データのプロットをしてきます。


コメント

タイトルとURLをコピーしました