旅好きエンジニアのメモ

旅のこと映画、統計、会計、プログラミングなど、気の向くままに語ります

djangoでpandas使うのは簡単だった

pandas使ってデータ分析しているサイトがよくあって、 私も参考にしているのですが大体csv使ってませんか?

少ないデータだったらcsvで良いと思うんですけど、 apiスクレイピングデータ取るときってdbに突っ込みませんか?

djangoのormでデータをdbにつっこんで、そのまま分析するほうが効率的な気がします。 そもそも、csvからデータ抜くの整形の処理やタイトルつけたりめんどくさいです。

そんなときは、"django-pandas"で楽をしちゃいましょう。

https://github.com/chrisdev/django-pandas

インストール
pip install django-pandas

サンプルは自分で作っているビットコインの足(日足とか分足とか)みたいなものです。

model

モデルはこんな感じです

class BitcoinTicker(models.Model):
    bc_id = models.IntegerField('bc_id', unique =True)
    high = models.DecimalField('high', max_digits=25, decimal_places=10, blank=True, null=True)
    low = models.DecimalField('low', max_digits=25, decimal_places=10, blank=True, null=True)
    volume = models.DecimalField('volume', max_digits=25, decimal_places=10, blank=True, null=True)
    timestamp = models.DateTimeField('timestamp')
pandasデータフレームへの変換
from app.models import BitcoinTicker
from django_pandas.io import read_frame
bitcoin_ticker = BitcoinTicker.objects.all()
df_bitcoin_ticker = read_frame(bitcoin_ticker)

カラムhighのデータが有るか確かめてみましょう。

df_bitcoin_ticker.high

こんな感じで簡単にできます。

最近はデータ分析にdjangoベースでやったほうがだいぶ楽なんじゃと思ったりしています。