Reputation: 165
I'm using the Kepler exoplanet dataset.
After loading it, and running a simple transpose() on it, in order to get the rows as columns, I try a seaborn boxplot, as follows:
sns.boxplot(data=df_train.tail(3197), x='0')
This returns:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [45], in <module>
----> 1 sns.boxplot(data=df_train.tail(3197), x='0')
File c:\users\marti\appdata\local\programs\python\python39\lib\site-packages\seaborn\_decorators.py:46, in _deprecate_positional_args.<locals>.inner_f(*args, **kwargs)
36 warnings.warn(
37 "Pass the following variable{} as {}keyword arg{}: {}. "
38 "From version 0.12, the only valid positional argument "
(...)
43 FutureWarning
44 )
45 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 46 return f(**kwargs)
File c:\users\marti\appdata\local\programs\python\python39\lib\site-packages\seaborn\categorical.py:2243, in boxplot(x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth, whis, ax, **kwargs)
2231 @_deprecate_positional_args
2232 def boxplot(
2233 *,
(...)
2240 **kwargs
2241 ):
-> 2243 plotter = _BoxPlotter(x, y, hue, data, order, hue_order,
2244 orient, color, palette, saturation,
2245 width, dodge, fliersize, linewidth)
2247 if ax is None:
2248 ax = plt.gca()
File c:\users\marti\appdata\local\programs\python\python39\lib\site-packages\seaborn\categorical.py:406, in _BoxPlotter.__init__(self, x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth)
402 def __init__(self, x, y, hue, data, order, hue_order,
403 orient, color, palette, saturation,
404 width, dodge, fliersize, linewidth):
--> 406 self.establish_variables(x, y, hue, data, orient, order, hue_order)
407 self.establish_colors(color, palette, saturation)
409 self.dodge = dodge
File c:\users\marti\appdata\local\programs\python\python39\lib\site-packages\seaborn\categorical.py:153, in _CategoricalPlotter.establish_variables(self, x, y, hue, data, orient, order, hue_order, units)
151 if isinstance(var, str):
152 err = "Could not interpret input '{}'".format(var)
--> 153 raise ValueError(err)
155 # Figure out the plotting orientation
156 orient = infer_orient(
157 x, y, orient, require_numeric=self.require_numeric
158 )
ValueError: Could not interpret input '0'
I also attempted this:
sns.boxplot(df_train.tail(3197)['0'])
and got a KeyError: '0'
instead. What am I doing wrong? As far as I can tell, I'm doing the exact same thing as the first example on the official Seaborn website, here.
Upvotes: 0
Views: 683
Reputation: 369
A workable example:
filepath = "exoTrain.csv"
df_train = pd.read_csv(filepath)
df_train = df_train.transpose()
print(df_train.columns)
This outputs: RangeIndex(start=0, stop=5087, step=1)
which shows us that the indices are actually integers, rather than strings e.g. '0', '1', '2'
Changing the code to sns.boxplot(data=df_train.tail(3197), x=0)
fixes the issue.
Upvotes: 1