PandasのデータをSQLite3で保存する
スクレイピングしたデータをどうすればいいかわからない問題発生
株価データ等をYa〇〇〇ファ〇〇〇〇などからスクレイピングして、今まではCSVファイルでローカルのディレクトリに置いていました。
言ってしまえば、スクレイピングして放置状態でした。
データを使用するときはCSV形式なので、今まではそれが都合良かったのですが...
毎回毎回スクレイピングするのは相手方のサーバーに申し訳ないので、そろそろデータベースで管理したほうがいいかなぁ、と思うようになりまして。
データベースで管理すれば、サイトが更新されたデータ分だけを拾って、データベースを更新するだけで済むので、かなり時間も節約できますし。
そこでSQLite3を勉強していたのですが、はてさてpandasのDataFrame形式はいかにしてDBに放り込むのか。
少し調べるとpandasでできるらしいぞ、と。
コードを以下に貼ります。
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()
出力を見てみる。
SQLite3に書き込まれ、DBが作成されています。
pandasって万能やなぁと今日も感じた次第であります。
以上報告終わり!なのですが...
他のシストレやる方たちはどのようにデータを集めて保存しているのですか?
もっと効率良い方法があるなら教えて欲しいです。
もしよければコメント下さい、お願いしますm(_ _)m