barilog

エンジニアリング見習い雑記

python処理を早くするために

1.単純なfor文の代わりにmapまたはリスト内包表記で代用しよう

2.SQLクエリを何度も実行するのはやめよう

3.オブジェクトへの参照回数はなるべく減らそう

4.データフレームの読み書きにはcsvではなくpickleを使おう

 

まず1について.

utgwkk.hateblo.jp

 

これによると関数を呼び出す際はひとまずmapをつかっとくのが無難っぽい.

 

次に4について

yutori-datascience.hatenablog.com

 

これによるとこれはcsvの読み込みの早さはdask ≒ pickle >>read_csv

daskは使っと事ないからわからんので私のような雑魚はpickleをつかおう.

ただし,pickleだとメモリに全部一気に展開がされてしまうので,大きなデータサイズのcsvを読む場合だと他の処理如何でメモリリークが起こりそう.一行ずつ処理したり,並列で処理できるようにするのが理想だよね.. 

 

arXiv ACL2018に参加した

最初の論文

Probabilistic FastText for Multi-Sense Word Embeddings

 

pffmswe.png

Sentence-State LSTM for Text Representation

 

センテンスのベクトル表現を獲得する手法

Takanori Nakai, Data scientist at D2c | SlideShare

のスライドが参考になる

 

知識ベースの情報を組み込んだ

Effective Pythonのまとめ

pythonコードを綺麗に書く方法を学ぶために、こちらの本を借りました。

Effective pythonです。

 

項目1: 使っているPythonのバージョンを知っておく

項目2: PEP8スタイルガイドに従う

項目3: bytes, str, unicodeの違いを知っておく

項目4: 複雑な式の代わりにヘルパー関数を書く

こちらを参照

Effective Pyhton メモ 項目4 複雑な式の代わりにヘルパー関数を書く

 

項目5: シーケンスをどのようにスライスするか知っておく

項目6: 一つのスライスでは,start, end, strideを使わない

項目7: 

ubuntuへのmysqlのインストール

こちらでできる

ksino.hatenablog.com

 

以上!!!!!

 

このあとpythonからmysqlに接続する

その際に参照すべきはこちらのぺーじかな

Python3 データをMySQLに挿入する|Review of My Life

 

mysqlというモジュールがみつからん!というお叱りを頂いた場合、pathの設定がうまくいってないです。

blog.nikuniku.me

こちらを参照にpipのsite-packagesのパスを把握し、

import sys

sys.path.append("パス")

でパスを追加しましょう

 

 

 

上記で環境構築は終了です

次に実際にpythonmysqlを連携させてテーブルの中身をデータフレームに入れるコードを掲示します!

 

#ライブラリのインポート
import mysql.connector

import pandas as pd


conn = mysql.connector.connect(
user ='root',
passwd = 'パスワード',
host = 'localhost',
db = 'データベース名')

df = pd.read_sql("SELECT * FROM テsample_table",con=conn)

 

これでおっけー!

 

参考

https://stackoverflow.com/questions/37730243/importing-data-from-a-mysql-database-into-a-pandas-data-frame-including-column-n