gpt4 book ai didi

python - 如何转换 pandas 数据框,使索引是唯一的一组值,数据是每个值的计数?

转载 作者:太空狗 更新时间:2023-10-30 00:24:29 25 4
gpt4 key购买 nike

我有一个来自多项选择题的 dataframe,它的格式如下:

      Sex Qu1  Qu2  Qu3
Name
Bob M 1 2 1
John M 3 3 5
Alex M 4 1 2
Jen F 3 2 4
Mary F 4 3 4

数据是 3 个多项选择题的 1 到 5 评分。我想重新排列数据,以便索引为 range(1,6),其中 1='bad', 2='poor', 3='ok', 4='good', 5='excellent',列是相同,数据是值出现次数的计数(不包括性别列)。这基本上是固定 bin 大小和标有字符串的 x 轴的直方图。我喜欢 df.plot() 的输出比 df.hist() 好得多,但我不知道如何重新排列表格给我一个数据直方图。另外,如何将 x-labels 更改为字符串?

最佳答案

Series.value_counts 为您提供所需的直方图:

In [9]: df['Qu1'].value_counts()
Out[9]:
4 2
3 2
1 1

因此,将此函数应用于这 3 列中的每一列:

In [13]: table = df[['Qu1', 'Qu2', 'Qu3']].apply(lambda x: x.value_counts())

In [14]: table
Out[14]:
Qu1 Qu2 Qu3
1 1 1 1
2 NaN 2 1
3 2 2 NaN
4 2 NaN 2
5 NaN NaN 1

In [15]: table = table.fillna(0)

In [16]: table
Out[16]:
Qu1 Qu2 Qu3
1 1 1 1
2 0 2 1
3 2 2 0
4 2 0 2
5 0 0 1

使用 table.reindextable.ix[some_array] 您可以重新排列数据。

要转换为字符串,请使用 table.rename:

In [17]: table.rename(index=str)
Out[17]:
Qu1 Qu2 Qu3
1 1 1 1
2 0 2 1
3 2 2 0
4 2 0 2
5 0 0 1

In [18]: table.rename(index=str).index[0]
Out[18]: '1'

关于python - 如何转换 pandas 数据框,使索引是唯一的一组值,数据是每个值的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10908295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com