【问题标题】:How to make the columns values to indexes and then count the frequency in multiple other columns如何使列值成为索引,然后计算多个其他列中的频率
【发布时间】:2021-02-18 10:47:08
【问题描述】:

所以我有以下数据:

data = pd.DataFrame({'First' : ['a', 'b', 'b', 'c','a','d','d','d','c'], 'Second' : ['a','c','c','c','c','d','d','b','b'],'Third' : ['a','a','d','d','d','d','d','b','b']})

我想将“First”列的值(与“Second”和“Third”列相同)作为索引并计算每列中这些值的频率,以便制作堆积条形图.我还想将堆积条形图中的频率显示为百分比,但这是另一个问题。

我试图以某种方式对数据进行分组,然后计算值或大小,但我似乎没有弄清楚。 这是我尝试过的:

#some how grouby
choices=dfg['First']
dfg['Choices']=choices
dfg.head()
dfg=dfg.groupby(['Choices'])['First','Second Choice','Third Choice']

#value counts
dfg['First'].value_counts()

#size value
dfg= dfg.groupby(['First', 'Second Choice']).size()
dfg

如果有人有任何建议,我将不胜感激!

【问题讨论】:

    标签: python pandas group-by


    【解决方案1】:

    我认为您需要计算每列的值:

    df = data.apply(pd.value_counts)
    print (df)
       First  Second  Third
    a      2       1    2.0
    b      2       2    2.0
    c      2       4    NaN
    d      3       2    5.0
    

    然后由DataFrame.plot.bar绘制:

    df.plot.bar()
    

    【讨论】:

      猜你喜欢
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2020-01-18
      相关资源
      最近更新 更多