Ich habe angefangen, pandas
zu verwenden, um eine Aggregation nach Datum durchzuführen. Mein Ziel ist es, alle Instanzen einer Messung an einem bestimmten Tag zu zählen und diese dann in D3
darzustellen. Um meinen Workflow zu illustrieren, habe ich eine queryset (von Django
), die wie folgt aussieht:Wie kann ich effizient von einem Pandas-Datenframe zu JSON wechseln
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}]
Ich mache einen Datenrahmen in pandas
und aggregieren die Maßnahme ‚Zähler‘ von Tag zu Tag erstellt:
import pandas as pd
queryset_df = pd.DataFrame.from_records(queryset).set_index('id')
aggregated_df = queryset_df.groupby('created').sum()
Das gibt mir ein Datenrahmen wie folgt aus:
counter
created
05-16-13 3
05-17-13 1
05-18-13 1
wie ich D3
verwende ich gedacht, dass ein JSON
Objekt wäre t er ist am nützlichsten. Mit Hilfe der Pandas
to_json()
Funktion konvertiere ich meine Datenrahmen wie folgt aus:
aggregated_df.to_json()
mir das JSON
Objekt folgende Angabe
{"counter":{"05-16-13":3,"05-17-13":1,"05-18-13":1}}
Dies ist nicht genau das, was ich will, wie ich in der Lage sein möchte, sowohl für den Zugriff auf das Datum und die Messung. Gibt es eine Möglichkeit, die Daten so zu exportieren, dass ich so etwas erhalte?
data = {"c1":{"date":"05-16-13", "counter":3},"c2":{"date":"05-17-13", "counter":1}, "c3":{"date":"05-18-13", "counter":1}}
Ich dachte, wenn ich dies anders auf der Seite Python
strukturieren könnte, wäre es, die Menge an Datenformatierung reduziert ich brauchen würde, auf der JS
Seite zu tun, wie ich die Daten zu tun, so etwas zu laden geplant:
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.counter; }));
ich bin sehr offen für Vorschläge von besseren Arbeitsabläufe insgesamt als dies etwas, das ich oft tun müssen, wird aber bin nicht sicher, der beste Weg, um die Verbindung zwischen D3
und pandas
der Handhabung. (Ich habe mehrere Pakete betrachtet, die beide python
und D3
direkt kombinieren, aber das ist nicht etwas, das ich suche, da sie auf statische Diagrammgenerierung zu konzentrieren scheinen und keine Svg machen)