gpt4 book ai didi

python - 获取百分比和计数 Python

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:51 26 4
gpt4 key购买 nike

假设 df.bun(df 是一个 Pandas 数据框)是一个多索引(日期和名称),变量是用字符串编写的类别值,

date      name             values
20170331 A122630 stock-a
A123320 stock-a
A152500 stock-b
A167860 bond
A196030 stock-a
A196220 stock-a
A204420 stock-a
A204450 curncy-US
A204480 raw-material
A219900 stock-a

我怎样才能让它代表同一日期的总计数及其百分比,以便制作如下表及其每个日期,

date           variable    counts     Percentage
20170331 stock 7 70%
bond 1 10%
raw-material 1 10%
curncy 1 10%

我已经完成了 print(df.groupby('bun').count()) 作为解决这个问题的手段,但它缺乏..

cf) 在获取 df.bun 之前,我使用以下代码将嵌套字典导入 Pandas 数据框。

import numpy as np
import pandas as pd

result = pd.DataFrame()
origDict = np.load("Hannah Lee.npy")
for item in range(len(origDict)):
newdict = {(k1, k2):v2 for k1,v1 in origDict[item].items() for k2,v2 in origDict[item][k1].items()}
df = pd.DataFrame([newdict[i] for i in sorted(newdict)],
index=pd.MultiIndex.from_tuples([i for i in sorted(newdict.keys())]))
print(df.bun)

最佳答案

我相信需要SeriesGroupBy.value_counts :

g = df.groupby('date')['values']
df = pd.concat([g.value_counts(),
g.value_counts(normalize=True).mul(100)],axis=1, keys=('counts','percentage'))
print (df)
counts percentage
date values
20170331 stock-a 6 60.0
bond 1 10.0
curncy-US 1 10.0
raw-material 1 10.0
stock-b 1 10.0

另一种解决方案 size用于计数,然后除以由 transform 创建的新 Series总和:

df2 = df.reset_index().groupby(['date', 'values']).size().to_frame('count')
df2['percentage'] = df2['count'].div(df2.groupby('date')['count'].transform('sum')).mul(100)
print (df2)
count percentage
date values
20170331 bond 1 10.0
curncy-US 1 10.0
raw-material 1 10.0
stock-a 6 60.0
stock-b 1 10.0

解决方案之间的区别在于,首先按每组的值排序,然后按 MultiIndex 排序。

关于python - 获取百分比和计数 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169311/

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