Pandasからsqlite3を使いたい(to_sql,read_sql_query)

一つのデータ活用プロジェクトに従事する場合はあまり問題になりませんが、
複数のデータを探索したり、モニタリングするロールの場合、大量のデータセットにすぐアクセスしたり、扱うデータの管理が重要になります。

ただし、SQLを主体にすると、どうしても可読性が下がったり、再利用性が低下します。
Lookerなどを入れている場合は、こちらに頼ればよいですが、現場にデータ分析官が自分しかいない場合、はこの辺りを仕組みかしておく必要があります。

自分の場合は、sqlでの複雑なクエリ管理を諦め、ローカルのsqlite3に大雑把なデータをロードし、加工を定型化することで対応しています。

Pandasからのsqlite3の扱い方

import sqlite3
import pandas

df = #いい感じのデータフレーム

#書き込み
#テーブル名を日付にして、作業したら記録する癖をつけると便利
with open sqlite3.connect('./db') as con:
    #テーブル名が存在している場合:‘fail’, ‘replace’, ‘append’
    df.to_sql('テーブル名',con,if_exists='replace')


#sqlの実行
#例えばテーブル一覧を取得したい場合
with open sqlite3.connect('./db') as con:
    query = "select name from sqlite_master where type='table'"
    q_df = pd.read_sql_query(query,con)

ただし、joinなどを複数使う場合は、sqlalchemyなどをさらにかますようにしています。

ロードしたりしたあと

sqliteの中をみたり

esu-ko.hatenablog.com

ひとまず基本的な情報を集めたりします

esu-ko.hatenablog.com