ValueError: Loches pour <quelque chose> pas de dimension 1
Je suis le code suivant crée un tableau et un barplot via seaborn.
#Building a dataframe grouped by the # of Engagement Types
sales_type = sales.groupby('# of Engagement Types').sum()
#Calculating the % of people who bought the course by # engagement types
sales_type['% Sales per Participants'] = round(100*(sales_type['Sales'] / sales_type['Had an Engagement']), 2)
#Calculating the # of people who didn't have any engagements
sales_type.set_value(index=0, col='Had an Engagement', value=sales[sales['Had an Engagement']==0].count()['Sales'])
#Calculating the % of sales for those who didn't have any engagements
sales_type.set_value(index=0, col='% Sales per Participants',
value=round(100 * (sales_type.ix[0, 'Sales'] /
sales[sales['Had an Engagement']==0].count()['Sales']),2))
#Setting the graph image
fig, (ax1) = plt.subplots(nrows=1, ncols=1, figsize=(12,4))
sns.set_style("whitegrid")
# Ploting the histagram for the % of total prospects
ax1 = sns.barplot(x=sales_type.index,y='% Sales per Participants', data=sales_type ,ax=ax1)
ax1.set(ylabel = '%')
ax1.set_title('% Sales per Participants By # of Engagement Types')
#present the table
sales_type.xs(['Had an Engagement', 'Sales','% Sales per Participants'],axis=1).transpose()
#sales_type
Je suis en utilisant le même code de concept pour d'autres paramètres que j'ai sans problème. Cependant, pour un paramètre, j'obtiens une erreur: "ValueError: Loches pour " pas de dimension 1" pour la ligne de code:
ax1 = sns.barplot(x=sales_type.index,y='% Sales per Participants', data=sales_type ,ax=ax1)
Cette erreur se produit même si le dataframe n'a pas plus d'une dimension.
C'est la tête de la table:
Sales Pre-Ordered / Ordered Book \
# of Engagement Types
0 1.0 0.0
1 20.0 496.0
2 51.0 434.0
3 82.0 248.0
4 71.0 153.0
5 49.0 97.0
6 5.0 24.0
Opted In For / Clicked to Kindle Viewed PLC \
# of Engagement Types
0 0.0 0
1 27034.0 5920
2 6953.0 6022
3 1990.0 1958
4 714.0 746
5 196.0 204
6 24.0 24
# of PLC Engagement Viewed Webinar \
# of Engagement Types
0 0.0 0
1 6434.0 1484
2 7469.0 1521
3 2940.0 1450
4 1381.0 724
5 463.0 198
6 54.0 24
# of Webinars (Live/Replay) \
# of Engagement Types
0 0.0
1 1613.0
2 1730.0
3 1768.0
4 1018.0
5 355.0
6 45.0
OCCC Facebook Group Member Engaged in Cart-Open \
# of Engagement Types
0 0.0 0
1 148.0 160
2 498.0 1206
3 443.0 967
4 356.0 511
5 168.0 177
6 24.0 24
# of Engagement at Cart Open Had an Engagement \
# of Engagement Types
0 0.0 3387
1 189.0 35242
2 1398.0 8317
3 1192.0 2352
4 735.0 801
5 269.0 208
6 40.0 24
Total # of Engagements % Sales per Participants
# of Engagement Types
0 0.0 0.03
1 35914.0 0.06
2 18482.0 0.61
3 8581.0 3.49
4 4357.0 8.86
5 1548.0 23.56
6 211.0 20.83
C'est le message d'erreur:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-211-f0185fe64c1a> in <module>()
12 sns.set_style("whitegrid")
13 # Ploting the histagram for the % of total prospects
---> 14 ax1 = sns.barplot(x=sales_type.index,y='% Sales per Participants', data=sales_type ,ax=ax1)
15 ax1.set(ylabel = '%')
16 ax1.set_title('% Sales per Participants By # of Engagement Types')
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
J'ai essayé de chercher sur internet et de Dépassement de Pile pour cette erreur, mais n'a obtenu aucun résultat. Est-ce quelqu'un a une idée de ce qui se passe?
- Coller la tête de la saisie des données.
- J'ai ajouté le chef de l'entrée de données. Désolé pour le format, c'est la meilleure façon que j'ai pu trouver (je n'ai pas de houle assez de points pour ajouter une image).
Vous devez vous connecter pour publier un commentaire.
Simplifié problème
J'ai aussi rencontré ce problème et trouvé la cause et la solution évidente
Pour recréer ce:
Tout comme beaucoup de cryptic pandas erreurs, trop de tiges de deux colonnes avec le même nom.
Lequel vous souhaitez utiliser, renommer ou supprimer la colonne autre et refaire l'opération.
Solution
Renommer les colonnes comme ceci
Qui m'est arrivé lorsque j'ai accidentellement créé MultiIndex colonnes:
Quelque chose à ajouter à @w-m réponse.
Si vous souhaitez ajouter plusieurs colonnes d'un dataframe à l'autre:
il va créer un index multi-colonne, et si vous essayez de groupe par quoi que ce soit sur
df1
, il vous donnera cette erreur.Pour résoudre ce problème, se débarrasser de la multi-index à l'aide de