pandas日付による集計を行うために使い始めました。私の目標は、特定の日に発生する測定のすべてのインスタンスをカウントし、これを で表すことですD3。私のワークフローを説明するために、Django次のようなクエリセット (から) があります。
queryset = [{'created':"05-16-13", 'counter':1, 'id':13}, {'created':"05-16-13", 'counter':1, 'id':34}, {'created':"05-17-13", 'counter':1, 'id':12}, {'created':"05-16-13", 'counter':1, 'id':7}, {'created':"05-18-13", 'counter':1, 'id':6}]
データフレームを作成し、作成された日ごとにpandasメジャー「カウンター」を集計します。
import pandas as pd
queryset_df = pd.DataFrame.from_records(queryset).set_index('id')
aggregated_df = queryset_df.groupby('created').sum()
これにより、次のようなデータフレームが得られます。
counter
created
05-16-13 3
05-17-13 1
05-18-13 1
私が使用しているので、オブジェクトが最も役立つとD3思いました。JSON関数を使用してPandas to_json()、データフレームを次のように変換します。
aggregated_df.to_json()
私に次のJSONオブジェクトを与える
{"counter":{"05-16-13":3,"05-17-13":1,"05-18-13":1}}
日付と測定値の両方にアクセスできるようにしたいので、これは私が望むものではありません。このような結果になるようにデータをエクスポートする方法はありますか?
data = {"c1":{"date":"05-16-13", "counter":3},"c2":{"date":"05-17-13", "counter":1}, "c3":{"date":"05-18-13", "counter":1}}
側でこれを別の方法で構造化できれば、次のような方法でデータをロードすることを計画してPythonいたので、側で行う必要があるデータのフォーマットの量を減らすことができると考えました。JS
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.counter; }));
これは私が頻繁に行う必要があることですが、 と の間の接続を処理する最善の方法がわからないため、全体的により良いワークフローの提案を歓迎しD3ますpandas。(両方pythonをD3直接組み合わせたいくつかのパッケージを見てきましたが、静的チャートの生成に焦点を当てており、svg を作成していないように見えるため、探しているものではありません)