俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】CSV, Excelなどのデータ読み込み

いろいろなモジュールがあるので一度まとめ。

numpy.genfromtxt

メリット
  • numpyのメソッドなので他のモジュールをインポートする必要なし
  • 読み込んだデータ(戻り値)がndarrayなので使いやすい
  • csvモジュールみたいに一行ずつの読み込みではなく一度に処理可能.。
    • 読む込む行、列の指定も可能(読み込む行はnumpy1.16.0以降)
  • 書き出しのためのsavetxt()もあり便利。
    • savetxtで追記するにはファイルを追記モードで開いてハンドルをsavetxtへ渡すことで可能。
with open("text.txt", 'a') as f:
    np.savetxt(f, data)
デメリット
  • エクセル等のファイルには非対応
使い方
np.genfromtxt(data_path, delimiter="\t", skip_header=5, skip_footer=3, max_rows=5)

# delimiter : "," , "\t" など
# skip_header : エクセルで6行目から読み込ませたい場合は6
# skip_footer : 下から数えて何行分を読み込まないかを指定
# max_rows : 読む込む行数を指定,skip_footerと同時使用しないこと

csv

xlrd

pandas

メリット
  • データの加工や計算はメソッドがいくつか用意されていて便利
デメリット
  • インポートするモジュールの容量が大きく、配布には不向き(未検証につき推測)

導入と初期セットアップ

久々に使用したので覚え書き。

導入

  • imgのダウンロード

Raspbian Stretch with desktop
Kernel version:4.14
Download Raspbian for Raspberry Pi


  • SDカードのフォーマット

SD Memory Card Formatter

  • imgファイルの書き込み

Etcher

初期設定

  • Static IP

【Python】Python用Matlabエンジンのインストール

PythonからMatlabで作成したmファイル等を読み出したい場合に使用。
使用しているMatlabのバージョンによって使用可能なPythonのバージョンに制約があるので要注意。

Matlab2016a -> Python 3.4, 3.3, 2.7


普段はPython3.7を使用してるためvirtualenvを使用してpython3.4をセットアップ。

以下は仮想環境でPython3.4が準備できた後のmatlabエンジンのインストール方法

  • 環境変数でPython3.4が3.7よりも先に呼ばれるようにする
  • matlabエンジンのインストール用ファイル位置に移動
cd C:\Program Files\MATLAB\R2016a\extern\engines\python # matlabルートファイル下
  • python3.4でインストール.通常はC:\Python34\Lib下のsite-packageにインストールされるようだが

viatualenvを使用していてフォルダが異なるのでそのフォルダを指定

python setup install --prefix="C:\*****\Python_workspace\py34" # Lib\site-package\matlabが作成されるのでLibフォルダが存在する階層を指定

【Python】Anacondaよく使うコマンドと操作

  • 仮想環境の一覧
conda info --envs
  • 仮想環境のactivate
conda activate conda_addpackage1
  • ローカルにダウンロードしたcondaパッケージのインストール
conda install C:\Users\*****\AppData\Local\conda\conda\pkgs\***.tar.gz2
  • インストールされたパッケージの確認
conda list

【Python】複数のndarray行列からよく使うm×n配列のndarrayを作成する(縦軸:時系列データ, 横軸:データ種類)

時系列データと時間を格納した行列があるとして
それから1つの配列を作成する方法
f:id:hukkuramamemoti:20181227122538p:plain

# データ準備
Time = np.array([0, 1, 2, 3....])
a = np.array([0, 1.1, 2.5, 3....])
b = np.array([0.5068, 0.840, 0.4075, 0.8574....])

# m×nの配列作成
matrix = np.concatenate((time.reshape(len(time), 1),
                                         a.reshape(len(a), 1),
                                         b.reshape(len(b), 1)),
                                         axis=1)

>>array([[ 0.    ,  0.    ,  0.5068],
       [ 1.    ,  1.1   ,  0.84  ],
       [ 2.    ,  2.5   ,  0.4075],
       [ 3.    ,  3.    ,  0.8574]])

ポイントは

  • reshapeを使ってn×1配列に変換すること(n×1配列とn行列はnumpyでは振る舞いが異なるので注意)と
  • concatenateでaxis=1にすること。
  • concatenateのデータはタプルでまとめること(カッコを忘れずに)