Utilizzando Python 3.4, Pandas 0.15 e Statsmodels 0.6.0, provo a creare un mosaic plot da un dataframe come descritto nello Statsmodels documentation. Tuttavia, semplicemente non capisco come debba essere formattato l'input fornito alla funzione mosaic()
.Come creare un grafico a mosaico dal dataframe di Pandas con la libreria Statsmodels?
Dato un semplice dataframe:
In:
myDataframe = pd.DataFrame({'size' : ['small', 'large', 'large', 'small', 'large', 'small'], 'length' : ['long', 'short', 'short', 'long', 'long', 'short']})
Out:
length size
0 long small
1 short large
2 short large
3 long small
4 long large
5 short small
Quando si cerca di creare un grafico a mosaico di questi dati:
from statsmodels.graphics.mosaicplot import mosaic
mosaic(data=myDataframe, title='Mosaic Plot')
dà ValueError: cannot label index with a null key
Come grafico a mosaico sono una visualizzazione delle tabelle di contingenza, Ho provato a creare tale prima con
In:
myCrosstable = pd.crosstab(myDataframe['size'], myDataframe['length'])
Out:
length long short
size
large 1 2
small 2 1
Ancora, utilizzando myCrosstable
come argomento dati dà lo stesso errore.
Come deve essere formattato il dataframe per poter essere accettato dalla funzione mosaic()
? La documentazione dice come spiegazione per l'argomento di dati: Parametri:
dati: dict, pandas.Series, np.ndarray, pandas.DataFrame
The contingency table that contains the data. Each category should contain a non-negative number with a tuple as index.
Non è quello che il pd.crosstab
la funzione ritorna? In caso contrario, come posso convertire il dataframe di conseguenza?