web-dev-qa-db-fra.com

Créer une boîte à moustaches avec Matplotlib

J'utilise python 3 et jupyter notebook. J'ai un cadre de données de pandas qui est structuré comme ceci: 

          location  price
Apr 25   ASHEVILLE   15.0
Apr 25   ASHEVILLE   45.0
Apr 25   ASHEVILLE   50.0
Apr 25   ASHEVILLE  120.0
Apr 25   ASHEVILLE  300.0
<class 'pandas.core.frame.DataFrame'>

J'essaie simplement de créer une boîte à moustaches pour chaque emplacement afin de montrer la fourchette de prix entre les articles de chaque emplacement. 

Quand j'ai couru le code suivant:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline


plt.boxplot(postings)
plt.show()

Il a renvoyé TypeError: unhashable type: 'slice'

3

Je suppose que vous avez besoin d'une boîte à moustaches pour chaque emplacement du même graphique. J'ai modifié dataframe pour ajouter des exemples de données pour un autre emplacement qui ressemble à-

   date   location month  price
0    25  ASHEVILLE   Apr   15.0
1    25  ASHEVILLE   Apr   45.0
2    25  ASHEVILLE   Apr   50.0
3    25  ASHEVILLE   Apr  120.0
4    25  ASHEVILLE   Apr  300.0
5    25  NASHVILLE   Apr   34.0
6    25  NASHVILLE   Apr   55.0
7    25  NASHVILLE   Apr   70.0
8    25  NASHVILLE   Apr  105.0
9    25  NASHVILLE   Apr   85.0

Maintenant, appelez simplement boxplot sur ce cadre et fournissez les paramètres column et by

postings.boxplot(column='price', by='location')

 enter image description here

4
Amey Dahale

Je suppose que "prix" est la colonne de données que vous voulez avoir boxplotted. Vous devez donc d'abord sélectionner cette colonne et ne fournir que cette colonne à plt.boxplot.

u = u"""index,location,price
    Apr 25,ASHEVILLE,15.0
    Apr 25,ASHEVILLE,45.0
    Apr 25,ASHEVILLE,50.0
    Apr 25,ASHEVILLE,120.0
    Apr 25,ASHEVILLE,300.0"""

import io
import pandas as pd
import matplotlib.pyplot as plt

data = io.StringIO(u)

df = pd.read_csv(data, sep=",", index_col=0)

plt.boxplot(df["price"])
plt.show()

 enter image description here

À en juger par les données, vous voulez avoir une boîte à moustaches avec une seule boîte parmi les 5 valeurs de prix que vous avez. Vous devez transmettre les données réelles à partir desquelles vous voulez créer la boîte à moustaches.

plt.boxplot(postings["price"])

Découvrez les exemples ici .

0
fbence