Kishan Lal
Kishan Lal

Reputation: 523

Assign Column name to the column in a DataFrame

Here is my code,

avg_data = dataset.groupby('Gender').mean()
print(avg_data)

Output:

            Height      Weight     Index
Gender                                  
Female  170.227451  105.698039  3.709804
Male    169.648980  106.314286  3.787755

I want to plot these data using countplot.

sns.countplot(x='Gender',hue='Height',data=avg_data)

Error!

ValueError                                Traceback (most recent call 
last)
<ipython-input-54-59e9d525d88d> in <module>
----> 1 sns.countplot(x='Gender',hue='Height',data=avg_data)

/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py in 
countplot(x, y, hue, data, order, hue_order, orient, color, palette, 
saturation, dodge, ax, **kwargs)
3551                           estimator, ci, n_boot, units,
3552                           orient, color, palette, saturation,
-> 3553                           errcolor, errwidth, capsize, dodge)
3554 
3555     plotter.value_label = "count"

/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py in 
__init__(self, x, y, hue, data, order, hue_order, estimator, ci, 
n_boot, units, orient, color, palette, saturation, errcolor, errwidth, 
capsize, dodge)
1605         """Initialize the plotter."""
1606         self.establish_variables(x, y, hue, data, orient,
-> 1607                                  order, hue_order, units)
1608         self.establish_colors(color, palette, saturation)
1609         self.estimate_statistic(estimator, ci, n_boot)

/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py in 
establish_variables(self, x, y, hue, data, orient, order, hue_order, 
units)
153                 if isinstance(input, string_types):
154                     err = "Could not interpret input 
'{}'".format(input)
--> 155                     raise ValueError(err)
156 
157             # Figure out the plotting orientation

ValueError: Could not interpret input 'Gender'

It detects that there is no column "Gender". How to solve this?

Upvotes: 0

Views: 177

Answers (1)

Mayank Porwal
Mayank Porwal

Reputation: 34086

Right now, Gender is the index of the resultant dataframe. Just do a reset_index() on this command:

avg_data = dataset.groupby('Gender').mean().reset_index()

OR

avg_data = dataset.groupby('Gender', as_index=False).mean()

This will create Gender as a column of the dataframe on which you can plot.

Upvotes: 1

Related Questions