【问题标题】:Barplot for a range of numbers appearing in column - python列中出现的一系列数字的条形图 - python
【发布时间】:2021-10-29 09:29:41
【问题描述】:

我有一列的值要么是 NOT_TESTED、NOT_COMPLETED、TOO_LOW,要么是介于 150 和 190 之间的值,以 5 分隔,因此是 150、155、160 等。

num_range = range(150,190, 5)
OUTCOMES = ['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW', num_range]
df["outcomes_col"] = df["TP1"].astype ("category")
df["outcomes_col"].cat.set_categories(OUTCOMES , inplace = True )
sns.countplot(x= "outcomes_col", data=df, palette='Magma')
plt.xticks(rotation = 90)
plt.ylabel('Amount')
plt.xlabel('Outcomes')
plt.title("Outcomes per testing")
plt.show()  

这是我创建的代码,它可以正常工作,除非我需要获取 150 和 190 之间的数值。对于 num_range,我尝试了不同的方法,例如 xrange()tuple(range(150,190, 5),但这些方法都不起作用。 我需要每个值(150、155 等)在条形图中都有自己的棒,表示它出现在该列“TP1”中的次数

有什么指导吗?

使用python2.7

【问题讨论】:

    标签: python pandas dataframe python-2.7 seaborn


    【解决方案1】:

    你可以这样做:

    num_range = range(150,190, 5)
    OUTCOMES = ['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW']
    OUTCOMES.extend(list(num_range))
    
    
    Output:
    ['NOT_TESTED',
     'NOT_COMPLETED',
     'TOO_LOW',
     150,
     155,
     160,
     165,
     170,
     175,
     180,
     185]
    

    也许你可以分类并继续其余的。

    【讨论】:

    • 所以这让我更接近解决方案,它在 x 轴上输出具有正确结果和值的条形图,但不显示数字 150-190 的任何值(所以没有坚持) ,就好像这些值从未出现在列中一样。你知道为什么会这样吗?
    【解决方案2】:

    试试这个:

    num_range = list(range(150,190, 5)) #as list
    
    OUTCOMES = ['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW']
    OUTCOMES.extend(num_range) #extend it with the list of numbers
    
    #add numbers to the TP1 column
    df = df.append(pd.DataFrame(num_range, 
                   columns=['TP1']),
                   ignore_index = True)
    
    df["outcomes_col"] = df["TP1"].astype("category")
    df["outcomes_col"].cat.set_categories(OUTCOMES , inplace = True )
    sns.countplot(x= "outcomes_col", data=df, palette='Magma')
    plt.xticks(rotation = 90)
    plt.ylabel('Amount')
    plt.xlabel('Outcomes')
    plt.title("Outcomes per testing")
    plt.show()  
    

    【讨论】:

    • 乍一看,这很好用,但从您的输出中可以看出,数字的所有值都是 1。在我的数据集中,例如 165 出现了 3 次,所以棒应该上升到3、为什么它们的值都一样?
    • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
    • 150-190 之间的变量应该有不同的杆高度,对应于一个值在 TP1 列中出现的次数。例如,165 出现 3 次,因此该条形图的棒高应该是 3。185 出现 5 次,棒高应该是 5。使用上面的代码时,所有数字 150-190 输出的棒高都是 1。为什么会这样?我希望这可以解决问题,如果没有,我会再次尝试澄清。
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多