En utilisant Python 3.4, Pandas 0.15 et Statsmodels 0.6.0, j'essaie de créer un diagramme en mosaïque à partir d'un dataframe comme décrit dans la documentation Statsmodels . Cependant, je ne comprends tout simplement pas comment l'entrée doit être formatée qui est fournie à la mosaic()
fonction.
Étant donné une base de données simple:
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
Lorsque vous essayez de créer un diagramme en mosaïque de ces données:
from statsmodels.graphics.mosaicplot import mosaic
mosaic(data=myDataframe, title='Mosaic Plot')
donne ValueError: cannot label index with a null key
Comme les graphiques en mosaïque sont une visualisation de tableaux de contingence, j'ai essayé de créer un tel premier avec
In:
myCrosstable = pd.crosstab(myDataframe['size'], myDataframe['length'])
Out:
length long short
size
large 1 2
small 2 1
Pourtant, utiliser myCrosstable
comme argument de données donne la même erreur.
Comment le dataframe doit-il être formaté pour être accepté par la mosaic()
fonction? La documentation dit comme explication de l'argument data: Paramètres:
données: 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.
N'est-ce pas ce que la pd.crosstab
fonction renvoie? Sinon, comment puis-je convertir le dataframe en conséquence?
J'ai utilisé vos données et ce code:
mosaic(myDataframe, ['size', 'length'])
et j'ai obtenu le graphique comme ceci:
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots