Comment créer un diagramme en mosaïque à partir d'une trame de données Pandas avec la bibliothèque Statsmodels?

Poignard

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 myCrosstablecomme 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.crosstabfonction renvoie? Sinon, comment puis-je convertir le dataframe en conséquence?

Apprêt

J'ai utilisé vos données et ce code:

mosaic(myDataframe, ['size', 'length'])

et j'ai obtenu le graphique comme ceci:

graphique en mosaïque

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Filtrer le dataframe basé sur plusieurs colonnes d'un autre dataframe

  2. 2

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  3. 3

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  4. 4

    Comment envoyer plusieurs variables de la lame au contrôleur

  5. 5

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  6. 6

    Microsoft.WebApplication.targets

  7. 7

    Échec de l'exécution de 'insertBefore' sur 'Node': le paramètre 1 n'est pas de type 'Node'

  8. 8

    System.Data.SqlClient.SqlException: 'Nom de colonne non valide' ApplicationRoleId '.'

  9. 9

    Comment définir du texte dans un QLabel et afficher les caractères '<>'?

  10. 10

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

  11. 11

    Concaténer des variables dans ansible

  12. 12

    Comment centrer un div tout en utilisant la transition et transformer avec l'échelle

  13. 13

    Filtrer les données en fonction des conditions d'une trame de données

  14. 14

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  15. 15

    ESP8266 HADRWARE MINUTERIE, USA pour cocher une macro étrange

  16. 16

    comment afficher un bouton au-dessus d'un autre élément ?

  17. 17

    php ajouter et fusionner des données de deux tables

  18. 18

    Stop jQuery execution after one time execution

  19. 19

    Pourquoi Phantomjs ne fonctionne pas avec ce site ?

  20. 20

    obtenir le nombre de marqueur affiché sur la carte

  21. 21

    Redirection HTTP vers HTTPS dans Java à l'aide de HTTPURLConnection

chaudétiquette

Archive