Sad*_*ksk 3 python dataframe python-3.x pandas
我有一个像这样的DataFrame:
Kind Status
1 True
2 False
3 True
2 False
2 True
Run Code Online (Sandbox Code Playgroud)
我用它计算了种类,df.Kind.sort_values()
得到了这个:
1 1
2 3
3 1
Run Code Online (Sandbox Code Playgroud)
现在我想看看Kind 2中有多少是真或假的数字和百分比.像这样:
Art True False
2 1 2
2 0.33 0.66
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?最好的祝福
res = pd.crosstab(df['Kind'], df['Status'])
res[['Pct False', 'Pct True']] = res.div(res.sum(axis=1), axis=0)
print(res)
Status False True Pct False Pct True
Kind
1 0 1 0.000000 1.000000
2 2 1 0.666667 0.333333
3 0 1 0.000000 1.000000
Run Code Online (Sandbox Code Playgroud)
在我看来,这是显示数据的最自然的方式.不建议将计数与单个系列中的百分比相结合.
或者,您可以加入一些crosstab结果,一个标准化,另一个不标准化.
res = pd.crosstab(df['Kind'], df['Status'])\
.join(pd.crosstab(df['Kind'], df['Status'], normalize='index'), rsuffix='_pct')
print(res)
Status False True False_pct True_pct
Kind
1 0 1 0.000000 1.000000
2 2 1 0.666667 0.333333
3 0 1 0.000000 1.000000
Run Code Online (Sandbox Code Playgroud)
如果您只查看百分比,则可以使用以下normalize参数:
res = pd.crosstab(df['Kind'], df['Status'], normalize='index')
print(res)
Status False True
Kind
1 0.000000 1.000000
2 0.666667 0.333333
3 0.000000 1.000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |