Hello World!!!
この記事では、Pythonを使って条件を満たした場合の値をリストへ追加するプログラムについて書いていきます。
このプログラムは、SwitchBot温湿度計で記録した室温データを整理分析するプログラムの第3段階目です。この記事のプログラムにより、各日付ごとの気温データのリストを作成します。最終的には、計測した温度データをから日別の最高・最低気温を抽出をする予定です。抽出したデータと気象庁データの外気温との比較する予定です。
第1、第2段階のプログラムは次の記事を参照ください。
- Pythonで条件指定、指定条件を満たす場合にリストへ追加するプログラムの作成&解説
作成するプログラム
(作成するプログラム)日付ごとの気温データのリスト作成
この記事のプログラムで、各日付ごとに気温データのリストを作成します。
これまでの段階では、SwithBot温湿度計で計測したデータから次のリストを作成しました。
- 計測した全ての計測日時のリスト
detect_timeandday_list = [‘2020-02-24 12:50:22’ , ‘2020-02-24 13:00:32’… , ‘2020-02-25 18:23:45’, …] - 計測した全ての気温データのリスト
temperature_list = [‘20.7’, ‘19.0’, …, ‘21.1’…]
これらのリストの順番はcsvファイルの順番を保持しています。そのため、上の①、②リストの1番めのデータから、2020-02-24 12:50:22のときの計測気温は20.7℃となります。
- 計測した日付データのリスト
dete_list = [‘2020-02-24’, ‘2020-02-25’, ‘2020-02-26’, …]
この記事のプログラムにより次のような多次元リストを作成します。
プログラム名をmake_datetemp_listとします。
date_temp_list = [[2020-02-24の気温のリスト], [2020-02-25の気温のリスト], [2020-02-26の気温のリスト]…]
SwitchBot温湿度エクスポートデータ
SwitchBot温湿度計からエクスポートされるデータは次のようなcsvデータとなります。下の画像はその一部を抜粋したものでです。設置期間が長くなるとデータ数も膨大となります。僕の計測データ桁数は数万行となっています。
プログラム動作概要
各日付における気温データをまとめて多次元リストとする空リスト:date_temp_listset
日付ごとの気温のリスト:date_temp
の2つの空リストを作ります。
比較する値は具体的には次の値となります。
・計測日データはn番目そのままの値
・計測日時データはn番目の値のはじめから10文字目まで値(日付)
STEP1 ~ 5を計測日データのリストの各日付分繰り返し、日付ごとのリストを作成します。
フロー図(make_datetemp_list)
コード
#プログラム概要
#switchbotよりエクスポートしたデータの整理
#各日付ごとの気温のリスト作成する。
#出力結果は、[[日付1, 計測気温1, 計測気温2, ...],[日付2, 計測気温1, 計測気温2, ...] ]ように出力する。
def make_datetemplist(detect_timeanddate_list, temperature_list, date_list):
date_temp_listset = []
date_temp = []
for date in date_list:
date_temp.append(date)
for n in range(len(detect_timeanddate_list)):
date_check = detect_timeanddate_list[n]
if date_check[0:10] == date:
date_temp.append(temperature_list[n])
date_temp_listset.append(date_temp)
date_temp = []
return date_temp_listset
if __name__ == '__main__':
detect_timeanddate_list = ['2020-02-24 12:50', '2020-02-24 12:54', '2020-02-24 12:56', '2020-02-25 0:06', '2020-02-25 0:36', '2020-02-25 1:05', '2020-02-26 0:10', '2020-02-26 0:26', '2020-02-26 0:36']
temperature_list = ['16.5', '20.7', '21.3', '19.9', '19.4', '19', '21.5', '21.1', '20.6']
date_list = ['2020-02-24', '2020-02-25', '2020-02-26']
result_list = make_datetemplist(detect_timeanddate_list, temperature_list, date_list)
print(result_list)
### 実行結果 ###
#このプログラムを実行すると次のように出力されます。
#[['2020-02-24', '16.5', '20.7', '21.3'], ['2020-02-25', '19.9', '19.4', '19'], ['2020-02-26', '21.5', '21.1', '20.6']]
この記事のコードのポイントは、リストを作成して次のループに入る前にリストを一度空にすることにあると思います。これに気づかず、なぜか2つめの日付移行データが増えいってしまってました。
まとめ
今回は、pythonで条件を満たした場合の値をリストに追加するプログラムについて書きました。
この記事のプログラムでSwitchBot温湿度計で計測したデータを扱いやすいようにかなり整理されてきました。次は、今回作成したリストから各日付ごとの最高気温、最低気温を抽出して[[日付1, 最高気温1, 最低気温1], [日付2, 最高気温2, 最低気温2]…]のような多次元リストを作っていこうと考えてます。
ブログ記事にまとめることで、コードを何度も読み返すため、僕自身の理解も深まったような気がします。
最後まで読んでいただきありがとうございます。
コメント