Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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
    设置为
    category
    dtype,并使用以下任一选项会导致问题。
    • 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)