2014-05-14 11 views
11

Sono nuovo di Python e ho lavorato su alcuni libri su di esso. Tutto è grande, tranne le visualizzazioni. Non mi piace molto Matplotlib e Bokeh richiede troppo pesante di una pila.Come spostare il mio dataframe panda in d3?

Il flusso di lavoro che voglio è:

dati analisi munging utilizzando panda in notebook ipython -> visualizzazione utilizzando d3 in sublimetext2

Tuttavia, essendo nuovo ad entrambi Python e d3, non so il migliore modo per esportare il mio dataframe panda in d3. Dovrei averlo solo come CSV? JSON? O c'è un modo più diretto?

Domanda laterale: Esiste un modo (ragionevole) di fare tutto in un notebook ipython anziché passare a sublimetext?

Qualsiasi aiuto sarebbe apprezzato.

+1

C'è 'df.to_json' o' df.to_csv' per spostare i dati in giro. C'è [vincent] (https://github.com/wrobstory/vincent) per un python -> traduttore vega (supporta bene DataFrames). E un altro progetto di Rob's, [sticky] (https://github.com/wrobstory/sticky), è in alpha, ma suona come quello che vuoi per non lasciare il notebook IPython. – TomAugspurger

+0

So che hai detto che non ti piace matplotlib, ma hai guardato [mpld3] (http://mpld3.github.io)? È abbastanza bello, ho avuto un successo recente usandolo per creare una trama interattiva online. – elias

risposta

4

Fondamentalmente non esiste un formato migliore che soddisfi tutte le esigenze di visualizzazione.

Dipende molto dalle visualizzazioni che si desidera ottenere.

Ad esempio, un Stacked Bar Chart accetta come input un file CSV e un adjacency matrix vizualisation accetta un formato JSON.

Dalla mia esperienza:

  • per visualizzare le relazioni beetween elementi, come adjacency matrix o chord diagram, uno sarà preferire un formato JSON che permetterà di descrivere le relazioni esistenti solo. I dati sono memorizzati come in una matrice sparsa e diversi dati possono essere annidati usando il dizionario. Inoltre questo formato può essere analizzato direttamente in Python.
  • per visualizzare le proprietà di una matrice di elementi, un formato CSV può andare bene. Un esempio perfetto può essere trovato here con un display grafico parallelo.
  • per visualizzare dati gerarchici, come un albero, JSON è più adatto.

La cosa migliore da fare per aiutare a capire che cosa migliore formato che vi serve, è quello di avere uno sguardo a questo d3js gallery

+1

Quindi, fondamentalmente il take-away è che non esiste un modo "migliore" per spostare i dati tra di loro? – Anton