【Python】csvからデータ読み込みリスト化するプログラム

Hello World!!!
プログラミング言語のPython を使用して、
csvファイルからデータを読み込む、Pythonのリストへ変換するプログラムについて解説します。

リビングの気温・湿度をSwitchBot温湿度計で表示、記録しています。
記録データをcsvファイルで出力(エクスポート)可能であるため、
Pythonを使っデータ整理をしたくプログラムを組みました。
そのプログラムの動作について解説していきます。

この記事の内容
  • Pythonによるcvsからのデータ読み込みについて解説
  • 実際に作成したcsvファイルからデータ読み込むプログラムの動作について解説

当ブログに記載のPythonコードを実行する際は、自己責任でお願いします。
Pythonコードを利用したことにより発生した損害・損失等に関し、当サイト管理人は一切の責任を取りません。

ふくゆー

精確な情報を書くように努めておりますが、
プログラミングについては素人です。
不正確な内容があるかもしれませんが、ご了承ください。
改良点などございましたら、コメントいただけると嬉しいです。

目次

プログラム概要

SwitchBot温湿度計より、csvファイルで出力したデータを
Pythonで扱いやすいようにリストへ変換する。
【作成するリスト】
date_list: 計測した日時情報のリスト
temperature_list:計測した気温情報のリスト

SwitchBot温度計

SwithBot温湿度計は次のような機器です。
詳しくは、下の記事を参照ください。

SwithcBot温湿度計

次の表のように、計測したデータ(気温・湿度)をcsvファイルとして出力できます。

スクロールできます
TimestampTemperature_CelsiusRelative_Humidity
YYYY(西暦)/MM(月)/DD(日) 〇〇:〇〇(計測日時)計測温度(℃)計測湿度(%)
2021/02/21 13:4019.146
2021/02/21 14:0019.547
以降、計測データが続きます。
SwitchBot温湿度計計測データ出力例(csvファイル)

数分〜数十分おきにデータが記録されるため、数ヶ月のデータとなると、
数万行にもなります。

ふくゆー

計測したデータは有効に使いたい。
でも、膨大すぎで出力されるcsvファイルでは文字の羅列。。。

csv

csvファイルについて簡単に解説します。

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

CSVファイル(左:EXCEL 右:テキストエディタ)

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

STEP
データを読み込むcsvファイルを開く
STEP
Pythonでデータを読み込む
STEP
読み込んだデータをリストへ格納する。
プログラムの概要イメージ

【フロー図】read_csv

read_csvフロー図

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

ふくゆー

フロー図がわかりやすいと思い作成してみました。

【コード】read_csv

Python version, 使用モジュールなど
  • 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ファイルのデータをリスト化できました。
今後は、このデータをもとに室温を分析していきます。

まとめ

こんかいは、収集したデータをプログラミングを使って整理するために作成したコードについてまとめました。
プログラミングを勉強すると、できることが増え、楽しみが増える可能性ありです。
今後も、作ったプログラムを記事にしていきます。

気象庁の気温データとヘーベルハウスの室温データを比較をしてみたいと考えてます。
そのために次のようなプログラムを組んでいきます。
毎年のデータを比較して、断熱性能の劣化などの経過を追えたら良いデータに
なるのではないかと期待してます。

  1. csvファイルからデータをリストとして抽出(この記事)
  2. 一日の最高気温・最低気温を抽出してリスト化
  3. ②で作ったリストをcsvファイルに出力
  4. ②をグラフ化
ふくゆー

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる