【Python】エクセル用ライブラリの特徴まとめ
Pythonでエクセルを扱う際,いろいろなライブラリがあって
更にどれも一長一短があるので簡単にまとめ。
これだけで全部賄えるが無いのが残念。
- xlwt,xlrd
良い所 :もっともメジャー?
ダメな所:xlwtが新規作成のみで上書きに対応していない。
→xlutilsで上書きが可能。どうせなら一つのライブラリにして!
各ライブラリで微妙に操作感が違う。
→ シートのオブジェクトを指定する場合
xlrd->wb.sheet_by_name(シート名)
xlwt->wb.get_sheet(シート名)
xlsxの読み込みは対応だが書き込み未対応。
- openpyxl
良い所:xlrd,xlwt連合のだめな点はほぼ出来る。
操作も分かり易い
ダメな所:xlsの読み書きに対応していない
こちらの方がもっと分かり易かったのでリンクを貼らせていただく。
感謝!
myfuturesightforpast.blogspot.jp
【Pycharm】アップデート後にPythonクラッシュ多発2
遅まきながらPycharmを2017.3.2をアップデートしたところ,
Runは問題ないのにdebugで
Process finished with exit code -1073741819 (0xC0000005)
と出て強制終了するエラーが発生。
print文だけの超シンプルなスクリプトでもエラーが出てdebug出来なかったため,
前回とは異なる模様↓oregengo.hatenablog.com
文字は読めないけどPyQtがどうのこうのというサイトを発見。
そういえばPyQtは4のままで5は入れていないような気が。
もともとはAutoになっていたところをPyQt4に変更したところ治った!
まー原因はよくわかんねけどいいか。
【Android】Pythonのnp.zeros相当な書き方
np.zeros(10) >array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
と書ける物は以下のようにするといいみたい。
Integer [] arr = new Integer[10]; ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(arr)); Collections.fill(myList, 0);//fills all 10 entries with 0
【Android】Pythonのlinspace(range)相当の書き方
val = np.linspace(0, 1, 10) > array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
と書ける物はfor文で作るか自分でクラスを作るしかないみたい。
List list = new ArrayList(); for (int i=0; i<10; i++){ List.add(i); }
【cmd】コマンドプロンプトからイベントログ出力と削除
一連の処理を.bat化して1クリックのみで処理できるようにした。
まずはイベントログの画面出力。
コマンドはwmic
ログの中身全てを出力すると画面上では見づらいので
ここでは作成時間とメッセージのみ出力
wmic ntevent where "(LogFile = 'system') get TimeGenerated, Message -> Message TimeGenerated System ログ ファイルが消去されました。 20170824005734.400493-000
次にログの削除。これは管理者権限が必要。
コマンドはwevtutil
wevtutil cl system
これのみで削除完了。
こちらを参考にさせてもらった。感謝!
イベント ログを消去する
[Windows] wmic コマンドを使ってイベントログを表示する | インフラSEの運用・構築メモ
【Python】numpy ndarrayとmatrixの特徴 覚書き
MATLABからの移行組にはとっつき辛いところが多々あるnumpyの配列,
ndarrayの気付いた点まとめ。
numpyは基本、横ベクトル
xx.shape -> (n, ) はベクトル,
x.shape -> (n,m) は配列
array([1, 2, 3])やarange(10)で作成されるのはベクトル
ベクトルは標記こそ横ベクトルだが向きは無い。
よってベクトル(1×N)を転置をしてもMATLABの様にN×1ベクトルにはならない。
ベクトルをイテレータとして使うと数値が一つずつ取り出せる。
e.q. np.range(3) -> 最初:1, 次:2, 次:3
配列をイテレータとして使うと 1×Nのベクトルが取り出される
e.q. np.range([[1, 2, 3], [4, 5, 6]]) -> 最初:[1, 2, 3], 次:[4, 5, 6]
よって配列をスライスする際はベクトルでスライスするか配列(1*N)でスライスするかで
挙動が変わるので注意
data = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]]) index1 = np.array([[0, 1, 2]]) data[index1, 0]) -> array([[1, 4, 7]]) # 1*3配列 index2 = np.array([0, 1, 2]) data[index2, 0]) -> array([1, 4, 7]) # ベクトル