滞在人数や時刻をテキストファイルに書き出す方法

質問

カメラで認識した人数や時刻をpickleでバイナリファイルとして書き出す代わりに、テキストファイルとして書き出すことはできますか?

回答

テキストファイルに出力する場合、組み込み関数 open や、csvモジュール、jsonモジュールなどが代替手段として考えられます。それぞれを使ったファイルの読み書きをぜひ試してみてください。

「AI見守りカメラ」第三章まで行い、検出精度を確認しようとしています。
人の滞在時間の集計の元となる「data.pickle」を、テキストファイルに出力したいと思っていますが、調べても良くわかりませんでした。質問は、
①第四章以降を閲覧すればさらに情報が得られそうですか?
②もしそういった情報がなければ、テキスト出力するコードなど教えていただけませんでしょうか。
やりたいことは現場のひとの滞在時間を可視化して、工数などを集計したいと思っています。すみませんが宜しくお願いいたします。

@sako さん
現場の滞在時間の集計、とても良いですね。

今のところ、テキストファイルへの出力は4章以降でも扱っていません。
本格的に作る場合はデータベース等に検知結果を保存していくのが良いかと思いますが、はじめに試すとしたらcsvあたりで出力するのが手軽かと思います。

AI見守りカメラのプログラムとは別に、data.pickleを読み込み、データをCSVファイルとして出力するプログラムを作成するのはいかがでしょうか。

前回から少し時間が空いてしまいましたが、データCSV化やってみました。
data.pickle(バイナリファイル)⇒Pandas(データフレーム)⇒
to_CSV の流れが、
まったく正しい確信はないのですが、mimamoriフォルダ内に時系列ログのCSVファイルを出力するプログラムができました(5行程度ですが…)。
※なお事前にPandasをインストールしておく必要があります。
次は実際に現場で動かしてみようと思います。
また宜しくお願いします。

CSV化お疲れ様です。

Pandasを経由するかたちにしたのですね。もしコードを共有していただけたら、アドバイスできる点があるかもしれません。

引き続きよろしくお願いします。

ご返信ありがとうございます。
素人なので自信はなく、アドバイスなどいただけるならお願いします。
import pandas as pd
import pickle
data_from_pkl = pd.read_pickle(‘data.pickle’)
df = pd.DataFrame(data_from_pkl)
df.to_csv(’/home/pi/mimamori/pkl_obj.csv’)
このHPなど参照しました。

コード内容良さそうです。最終的に出力したとき、最新のデータが1行目と最終行のどちらに来るか確認しておくと、後ほどCSVデータを活用するとき混乱が少なく済むかと思います。

参考までに、少しコード量が多いですが、追加のライブラリなしで変換する方法を記載します。

import csv
import pickle

header = ['count', 'created_at']
items = []

with open('data.pickle', 'rb') as f:
    items = pickle.load(f)

with open('data.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    for item in items:
        writer.writerow([item['count'], item['created_at']])

追加のライブラリ(Pandas)なしのコードありがとうございます。
早速ラズパイで動かしてみたら、ちゃんとCSV出力できました(失礼!すみません)
違いとしては、一番左のカラム(0から始まる通し番号)が表示されず、
最終行にアイテムを定義されているためだとわかりました(ややすっきり)。
⇒ writer.writerow([item[‘count’], item[‘created_at’]])
あと with open 構文の使い方が参考になりました。
また何かあれば教えてください、宜しくお願いします。

「いいね!」 1