ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

PandasのデータをSQLite3で保存する

スクレイピングしたデータをどうすればいいかわからない問題発生

株価データ等をYa〇〇〇ファ〇〇〇〇などからスクレイピングして、今まではCSVファイルでローカルのディレクトリに置いていました。

言ってしまえば、スクレイピングして放置状態でした。

データを使用するときはCSV形式なので、今まではそれが都合良かったのですが...

毎回毎回スクレイピングするのは相手方のサーバーに申し訳ないので、そろそろデータベースで管理したほうがいいかなぁ、と思うようになりまして。

データベースで管理すれば、サイトが更新されたデータ分だけを拾って、データベースを更新するだけで済むので、かなり時間も節約できますし。

そこでSQLite3を勉強していたのですが、はてさてpandasのDataFrame形式はいかにしてDBに放り込むのか。


少し調べるとpandasでできるらしいぞ、と。

SQLiteに放り込むCSVファイルはこんな形式。

f:id:doz13189:20170322005408p:plain


コードを以下に貼ります。

import sqlite3
import pandas as pd


#pandasでcsvファイルを読み込む
df = pd.read_csv("code_1332.csv")
df.columns= ["Date", "Open", "High", "Low", "Close", "Volume", "Adj Close", "Number"]

#db作成
dbname = "code.db"

#dbコネクト
conn = sqlite3.connect(dbname)
c = conn.cursor()

#dbのnameをcode_1332とし、読み込んだcsvファイルをsqlに書き込む
#if_existsでもしすでにcode_1332が存在していても、置き換えるように指示
df.to_sql("code_1332", conn, if_exists="replace")

#作成したdbを見てみる
select_sql = 'select * from code_1332'
for row in c.execute(select_sql):
    print(row)

conn.close()

出力を見てみる。

f:id:doz13189:20170322004401p:plain

SQLite3に書き込まれ、DBが作成されています。

pandasって万能やなぁと今日も感じた次第であります。

以上報告終わり!なのですが...


他のシストレやる方たちはどのようにデータを集めて保存しているのですか?

もっと効率良い方法があるなら教えて欲しいです。

もしよければコメント下さい、お願いしますm(_ _)m