我已經開始使用pandas
按日期進行聚合。我的目標是統計某一天發生的所有測量實例,然後在D3
中表示這一點。爲了說明我的工作流程,我有一個查詢集(從Django
),看起來像這樣:如何從熊貓數據框有效地移動到JSON
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
對象會爲t他最有用。使用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)