MatplotlibでPandasを使ってみる

KURO
jupyter notebook でグラフを描く際にCSVの読み込みのため、Pandasを使ってみたよ。

NIKE
CSVを読み込んでからですが、PandasのPlot機能もありますが、慣れてるMatplotlibで直接描画するため、行列を
csv_data = csv_data.Tで入れ替えてから、データフレームをdata=list(csv_data.values)でリストにしているのが、ポイントだよ。
KURO
データフレームを使うことでJupyter notebook でデータの確認ができるので、便利ですね。

csv読み込みの部分

written by gatamix

written by gatamix

まとめ Pythonでテキストファイルを取り扱う

python でのcsvなどテキストファイルの取り扱い方をまとめました。

written by gatamix

Python Matplotlibでグラフの範囲を自動的に設定 & scipy でピークの検出

Gatamixです。
Matplotlib でグラフを範囲を自動で設定するようにプログラムしてみました。
通常でも自動で範囲が設定されますが、プログラムで設定してみました。
具体的には、以下のようなことをしています。
①最小と最大の値を算出する。
②最大と最小の差をとる。(温度の場合は下限値の設定は0℃で固定とするため、最大値とした。)
③差の20%をマージンとして設定する。
④範囲を設定する。(範囲の最大値と最小値にマージン分の余裕をとる。)
また、おまけで以下のこともしています。
scipyを使ってピークの算出を行って、ラベルをプロット。
y1、y2軸の小数の有効桁の指定。

KURO
scipyのメソッドの signal.argrelmax()で上側のピーク,signal.argrelmin()で下側のピークを検出できるよ

written by gatamix

ラズパイ(36) センサーで測定した値をメールで送る

Gatamixです。
センサーを使っての一つの目標だったデータの送信を行ってみました。
使ったセンサーはいつものLPS25Hです。
処理の流れは以下です。
①データの取得(温度、気圧)
②CSVに記録
③プログラムで自動でグラフ作成
④メールでCSVファイルとPNGファイルを送信する
記録:添付ファイルのヘッダーを追加するところでスペルミスをしました。
メールの添付ファイルがファイル名が表示されないという結果があらわれて、
ミスをしてもメールは送信されたので原因が究明に時間がかかりました。
*MIMEについてMultipurpose Internet Mail Extensionsの略である。
電子書式で色々なフォーマットを取り扱うための規格。
ここが間違えると上手く表示されない。


以下コード(長いですが参考までに記載します。)

written by gatamix

ラズパイ(32) センサーで測定したデータをグラフに自動描画する

Gatamixです。
Raspberry piの調子がイマイチですが、LPS25Hを使って以下のことをやってみました。
①データの取得(温度、気圧)
②CSVに記録
③プログラムで自動でグラフ作成
スケールを自動にするとオフセットでグラフが表示されるのでオフセットをなしに設定しました。
以下プログラム。
Raspberry pi でascii コードのエラーで℃が表示できなかったのを解決しました。
(python 2.7だからか?Mac python 3.6では表示できた。)
温度の単位をTex 形式で表示できるので、
変更。deg. → $^\circ$C

written by gatamix

Python Matplotlibでグラフを画像に出力する

Gatamixです。
前回のグラフを体裁を整えて、画像に出力してみます。
今回はy軸を2軸にしてみようと思います。
概略
①マーカー、線の色、ラベルをデータセット時に設定する
②次に軸のラベル、タイトルなどを設定する
③軸の範囲や目盛りやグリットなども設定する
④凡例を設定する
軸が一つの場合は
plt.legend()
でも表記されるのですが、
2軸だと下記のコードのように一工夫が必要なようです。(リンク先を参考にしました。)


⑤グラフの出力をする
pngとsvgに出力してみました。
このほかまだまだ、細かい設定はできるようです。

HAI
保存は png, pdf, ps, eps, svgの画像形式に対応しているみたい。
MIKE
保存の際にdpiを指定すると解像度が変更できます。

written by gatamix

Python csvファイルをグラフ描画用にnumpyで読み込む

Gatamixです。
センサーで取り込んだデータをグラフ描画用にpythonで取り込んでみます。
使用するのは、Numpyのライブラリーです。
(ただ描画するだけですが、Matplotlibも使ってみます。)
Anacondaをインストールしていれば、パッケージはインストールされています。
追記
MacではMatplotlib で描画の際にうまくいかない可能性があります。
私も表示の際にbackend エラーが表示されました。
下記リンクのようにbackendの設定を変更するとうまくいく可能があります。
*変更前に設定ファイルのバックアップは推奨です。


やってること
①Numpyでヘッダーの2行分読み込まないでデータを読み込ませます。
②データの行列を入れ替える。
③一応グラフに出力する。
↓コードです。

jupter notebookで確認した結果も貼り付けておきます。

csvをリンク先に置いたら、ブログのアクセスが微妙になったので、
下に内容を貼り付けます。
20170609_205740_test_lps25h.csv

2017-06-09 20:57:40
time(sec),Pressure(hpa),Temperature(°C)
0,1000.635498046875,26.0125
1,1000.624267578125,26.01875
2,1000.673095703125,26.014583333333334
3,1000.735107421875,26.027083333333334
4,1000.57568359375,26.041666666666668

written by gatamix

ラズパイ(27) センサー(LPS25H)で測定したデータをcsvファイルに保存する

Gatamixです。
最近の記事で、CSVの取り扱いをやってきました。
今回は、センサー(LPS25H)で測定したデータをCSVに保存します。
簡単に説明すると、
 ①センサーの初期設定
 ②データの読み込み
 ③CSVの書き込み
 ④インターバル
 ⑤、②〜④を繰り返す
 ⑥データ名の変更
となります。
これまでの記事の内容でできました。
プログラムです。

written by gatamix

Pythonを使ってcsvファイルをメールする 後半

Gatamix です。
csvファイルをメールするの後半です。
csvデータを取得してその結果をメールするプログラムを作ろうと考えています。
そのために前に作ったプログラムを改造します。
具体的には、
csvを作って、日時の入れたファイルを作成する→メールで送信する。
をやって見ようと思います。
python 2.7で実行できるように書いています。

written by gatamix

Pythonを使ってcsvファイルをメールする 前半

MIKE
Python 3.6でのやり方だよ。Python 2.7とは、モジュールが違うので注意だよ。

pythonから今度は添付ファイルとしてCSVをメールで送信をやってみました。
python2.7では下記リンクを参考にしてやってみました。


ほとんど、違いのないコードなので今回は省略します。
そこでpython 3.6 で同様のことをしてみました。
2.7系のプログラムと下記リンクを参考にして作ってみました。

maintypeとsubtypeを指定するとエラーとなるため、省略しています。
プログラムの修正完了しました。ファイルをopenする際に’rb’が抜けていたためのエラーでした。

KURO
バイナリーで開かないとファイルの形式を指定してもエラーになります。

ライブラリーが一部違うため、結構苦労しました。
あと前回と同様にGメールから送信ができるようにしています。

NIKE
コード内の以下4箇所は適切に設定下さい。
hoge:アカウント名
fuga:送信先
piyo:ファイル添付
pw:ログインパスワード

  プログラムコード

追記
  画像送付するプログラムの場合
imghdrimport imghdrで呼び出します。
attach_file={‘name’:’test.csv’,’path’:’./test.csv’}
のファイル名とパス変更して、
msg.add_attachment(file_read, maintype=“text”,
subtype=‘comma-separated-values’,filename=attach_file[‘name’])
から
msg.add_attachment(file_read, maintype=‘image’,
subtype=imghdr.what(None, file_read),filename=attach_file[‘name’])
に変更します。
subtypeを関数メソッドで自動判定するように変更しています。

  関連記事
関連記事をまとめました。

written by gatamix