【问题标题】:Order pandas barplot alphabetically ignoring upper and lower case按字母顺序排列熊猫条形图,忽略大小写
【发布时间】:2020-02-05 19:58:47
【问题描述】:

我正在尝试从 pandas.value_counts 创建一个条形图

 df[variable].value_counts(dropna=False, sort=False).sort_index(ascending=True).plot(kind='barh')

但是这种排序考虑了类别是大写还是小写:

此列表:[Plant, Animal, bacteria]

变成:[Animal, Plant, bacteria]

而不是:[Animal, bacteria, Plant]

有没有办法在订购时忽略大小写而不改变情节中的格式?我仍然想保持细菌小写。

谢谢

【问题讨论】:

    标签: python python-3.x pandas matplotlib


    【解决方案1】:

    使用Series.str.lower 的小写索引值Index.argsort 进行排序并通过Series.iloc 重新排序:

    df = pd.DataFrame({'variable':['Plant','Animal','Animal','bacteria','bacteria', np.nan]})
    s = df['variable'].value_counts(dropna=False, sort=False)
    print (s)
    NaN         1
    Plant       1
    bacteria    2
    Animal      2
    Name: variable, dtype: int64
    
    s = s.iloc[s.index.str.lower().fillna('').argsort()]
    print (s)
    NaN         1
    Animal      2
    bacteria    2
    Plant       1
    Name: variable, dtype: int64
    

    【讨论】:

    • 不太确定如何使用这个,我应该设置 s = df[variable].value_counts(dropna=False, sort=False).sort_index(ascending=True)?
    • 这给出了一个错误:第 4688 行,在 argsort 返回 result.argsort(*args, **kwargs) TypeError: '
    • @Agustin - 我认为有缺失值,您需要删除它吗?还是数?答案已编辑。
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2015-09-04
    • 2021-03-16
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多