Hello World!!!
プログラミング言語のPython を使用して、
csvファイルからデータを読み込む、Pythonのリストへ変換するプログラムについて解説します。
リビングの気温・湿度をSwitchBot温湿度計で表示、記録しています。
記録データをcsvファイルで出力(エクスポート)可能であるため、
Pythonを使っデータ整理をしたくプログラムを組みました。
そのプログラムの動作について解説していきます。
- Pythonによるcvsからのデータ読み込みについて解説
- 実際に作成したcsvファイルからデータ読み込むプログラムの動作について解説
当ブログに記載のPythonコードを実行する際は、自己責任でお願いします。
Pythonコードを利用したことにより発生した損害・損失等に関し、当サイト管理人は一切の責任を取りません。

精確な情報を書くように努めておりますが、
プログラミングについては素人です。
不正確な内容があるかもしれませんが、ご了承ください。
改良点などございましたら、コメントいただけると嬉しいです。
プログラム概要
SwitchBot温湿度計より、csvファイルで出力したデータを
Pythonで扱いやすいようにリストへ変換する。
【作成するリスト】
date_list: 計測した日時情報のリスト
temperature_list:計測した気温情報のリスト
SwitchBot温度計
SwithBot温湿度計は次のような機器です。
詳しくは、下の記事を参照ください。




次の表のように、計測したデータ(気温・湿度)をcsvファイルとして出力できます。
Timestamp | Temperature_Celsius | Relative_Humidity |
---|---|---|
YYYY(西暦)/MM(月)/DD(日) 〇〇:〇〇(計測日時) | 計測温度(℃) | 計測湿度(%) |
2021/02/21 13:40 | 19.1 | 46 |
2021/02/21 14:00 | 19.5 | 47 |
以降、計測データが続きます。 |
数分〜数十分おきにデータが記録されるため、数ヶ月のデータとなると、
数万行にもなります。



計測したデータは有効に使いたい。
でも、膨大すぎで出力されるcsvファイルでは文字の羅列。。。
csv
csvファイルについて簡単に解説します。
CSVは、Comma Separated Valuesの頭文字をとっています。
直訳すると、「コンマ(,)で区切られた値です」
csvファイルと言うとデフォルトではExcelなどの表計算ソフトで開かれることが多いため、Excelの類似データと認識されているかもしれません。
しかし、csvファイルは、「プレーンテキストファイル」です。
そのため、メモ帳などのテキストエディタでも開くことができます。


Pythonでのリスト
Pythonにはリストというデータ型があります。
リストは、複数の値を格納でき、
大量のデータを扱うプログラムを作る場合に便利です。
リストを使うことで、大量のデータの合計値を算出したり、リストの中から、最大値・最小値を探し出したりすることができます。
リストは変数、次のように格納しているデータを[ ]の中に入れて、
カンマ(,)区切りで分けて書きます。
[値0, 値1, 値2, 値3,…]
値に続いて記載している数字は、インデックスと呼ばれます。
Pythonでのリストにおいてインデックスは0から始まります。
リスト自体を変数に設定することもできます。
加えて、格納した値を取り出すことも可能です。1例をあげます。
list_1 = [1, 2, 3]
list_1は1〜3までの数字が入ったリストです。
リストの要素は、リスト名[リストのインデックス番号]で
取得できます。
例) list_1[0] = 1



数万行の人力でデータの整理をすると膨大な時間がかかりますね。
次から、Pythonで扱いやすいリストへ変換するプログラムについて
解説します。
プログ名は、read_csvとしました。
【プログラム概要】read_csv


【フロー図】read_csv


1行目(見出し行・ヘッダー行)はリストへは不要なデータのため、スキップしています。



フロー図がわかりやすいと思い作成してみました。
【コード】read_csv
- Python version:python 3.8
- 使用モジュール:
csv
(pythonでcsvファイルを扱うためのモジュール)
import csv #csvモジュールをインポートする。
##########
#csvファイルからしていの列のデータを抽出してリスト化。
#第1引数にcsvファイルのパスを指定して、実行するとリストが作成されるプログラム
#########
def read_csv(file_path):
csv_file = open(file_path) # csvファイルを開く
csv_reader = csv.reader(csv_file) # 開いたcsvファイルからreaderオブジェクトを生成
date_list = [] # 抽出するデータを格納する空のリストを作る。
temperature_list = []
for row in csv_reader: # readerオブジェクトをループしてデータ抽出。
if csv_reader.line_num == 1: # ヘッダー行はスキップする。
continue # Trueになる1行目はなにもしない。
date_list.append(row[0]) # row行目の日時データをdate_listに格納する。
temperature_list.append(row[1]) # row行目の気温データをdate_listに格納する。
csv_file.close() # csvファイルを閉じる。
return date_list, temperature_list # 作成した2つのリスト(date_list, temperature_listを返す。)
if __name__ == '__main__': #プログラム開始
file_path = '読み込みたいcsvファイルがあるフルパス' #csvファイルの保存先をフルパス指定
result = read_csv(file_path) #変数resultに結果のリスト保存する。
print(result) #実行結果の確認。生成したリストが出力される。
プログラムを実行すると、膨大な行から一瞬でデータが読み込まれてリストが
生成されます。下の図は、read_csvの実行イメージです。





csvファイルのデータをリスト化できました。
今後は、このデータをもとに室温を分析していきます。
まとめ
こんかいは、収集したデータをプログラミングを使って整理するために作成したコードについてまとめました。
プログラミングを勉強すると、できることが増え、楽しみが増える可能性ありです。
今後も、作ったプログラムを記事にしていきます。
気象庁の気温データとヘーベルハウスの室温データを比較をしてみたいと考えてます。
そのために次のようなプログラムを組んでいきます。
毎年のデータを比較して、断熱性能の劣化などの経過を追えたら良いデータに
なるのではないかと期待してます。
- csvファイルからデータをリストとして抽出(この記事)
- 一日の最高気温・最低気温を抽出してリスト化
- ②で作ったリストをcsvファイルに出力
- ②をグラフ化



最後まで読んでいただきありがとうございます。
改良点などありましたら、コメントいただけると嬉しいです。
コメント