我有一个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
Run Code Online (Sandbox Code Playgroud)
对于3个选择题,数据是1到5的等级.我想重新排列数据,使得索引是范围(1,6),其中1 ='坏',2 ='差',3 ='好',4 ='好',5 ='优秀',列是相同,数据是值出现次数的计数(不包括性别列).这基本上是固定箱尺寸的直方图和用字符串标记的x轴.我喜欢df.plot()比df.hist()这更好 的输出,但我无法弄清楚如何重新排列表格给我一个数据的直方图.另外,如何将x标签更改为字符串?
Wes*_*ney 17
Series.value_counts 为您提供您正在寻找的直方图:
In [9]: df['Qu1'].value_counts()
Out[9]:
4 2
3 2
1 1
Run Code Online (Sandbox Code Playgroud)
因此,将此函数应用于这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
Run Code Online (Sandbox Code Playgroud)
使用table.reindex或table.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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3294 次 |
| 最近记录: |