ValueError: Neither the `x` nor `y` variable appears to be numeric.

seaborn绘图时输入x,y值非实数,值可能为字符串,需要进行处理

解决:

  1. 绘图时记得去掉字符串类型比如名称的一列
  2. 将数字字符串转化为float类型

对于第二点:

foo = pd.DataFrame(columns =['Names','Values'])

pandas版本大于0.25
pandas.DataFrame.explode() 将列表列转为独立的单元格,能将值转换为实数而不是字符串

foo = foo.explode('Values')
foo['Values'] = foo['Values'].astype('float')
sns.violinplot(data=foo, x='Names', y='Values')

pandas版本小于0.25

result = foo.explode('Values').reset_index(drop=True)
result = result.assign(Names=result['Names'].astype('category'), 
                       Values=result['Values'].astype(np.float32))

sns_plot = sns.violinplot(x='Names', y='Values', data=result)

你可能感兴趣的:(Python)