Python 为什么分类数据列没有正确地与其关联值一起打印? 如果将列设置为“分类带”,则在使用plt.plot时,分类列不会正确地与关联值一起打印,如下所示 有人知道如何避免这种事情吗?这是一个错误,还是我的问题 将熊猫作为pd导入 将matplotlib.pyplot作为plt导入 标签=[“b”、“b”、“a”、“b”、“a”] 值=[10,11,1,12,2] df=pd.DataFrame([{“label”:label,“value”:v}表示标签,v表示zip(标签,值)]) df.label=pd.category(df.label)
数据帧如下所示:Python 为什么分类数据列没有正确地与其关联值一起打印? 如果将列设置为“分类带”,则在使用plt.plot时,分类列不会正确地与关联值一起打印,如下所示 有人知道如何避免这种事情吗?这是一个错误,还是我的问题 将熊猫作为pd导入 将matplotlib.pyplot作为plt导入 标签=[“b”、“b”、“a”、“b”、“a”] 值=[10,11,1,12,2] df=pd.DataFrame([{“label”:label,“value”:v}表示标签,v表示zip(标签,值)]) df.label=pd.category(df.label),python,pandas,matplotlib,Python,Pandas,Matplotlib,数据帧如下所示: >>> print(df) label value 0 b 10 1 b 11 2 a 1 3 b 12 4 a 2 但当我用绘制数据帧时,标签“a”和“b”混淆了: >>> plt.plot(df.label, df.value, "o") 比较plt.scatter(df.label,df.value)的(正确)输出: 交
>>> print(df)
label value
0 b 10
1 b 11
2 a 1
3 b 12
4 a 2
但当我用绘制数据帧时,标签“a”和“b”混淆了:
>>> plt.plot(df.label, df.value, "o")
比较plt.scatter(df.label,df.value)
的(正确)输出:
交换标签“a”和“b”时,问题消失了,因此看起来plt.plot在打印之前对标签进行排序。但为什么会这样呢?当标签是字符串时,它工作良好;出现问题的唯一原因是df.标签
是分类的。更新2020-08-04
- python 3.8.5
- 熊猫1.1.1
- matplotlib 3.3.1
- JupyterLab 2.2.6
- 报告为错误:
- 将
设置为label
dtype,并使用以下任一选项会导致问题。category
df.label=pd.category(df.label)
df.label=pd.Categorical(df.label,categories=[“a”,“b”],ordered=True)
- 对
列进行排序似乎是解决该问题的一种方法。标签
- 如注释中所述,
也将生成正确的绘图plt.plot(df.label.values,df.value.values,“o”)
- 如注释中所述,
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
标签=[“b”、“b”、“a”、“b”、“a”]
值=[10,11,1,12,2]
df=pd.DataFrame([{“label”:label,“value”:v}表示标签,v表示zip(标签,值)])
#分类的
df.label=pd.category(df.label,categories=[“a”,“b”],ordered=True)
#分类
df.sort_值('label',inplace=True)
#密谋
plt.plot('label'、'value'、'o',data=df)