编程实践(Pandas)综合练习1

心得:花了一天时间做出来了三道题,但是办法实在太笨了,后面希望可以看一下优秀笔记的写法,多学习多练习。时间已经过去了半个多月,从不会写代码到现在已经可以独立做出综合练习(虽然办法很笨,感觉有很多地方想复杂了),自己感觉还是很开心的,继续努力!

1. 企业收入的多样性

一个企业的产业收入多样性可以仿照信息熵的概念来定义收入熵指标: I = − ∑ i p ( x i ) log ⁡ ( p ( x i ) ) \rm I=-\sum_{i}p(x_i)\log(p(x_i)) I=ip(xi)log(p(xi)),其中 p ( x i ) \rm p(x_i) p(xi)是企业该年某产业收入额占该年所有产业总收入的比重。在company.csv中存有需要计算的企业和年份,在company_data.csv中存有企业、各类收入额和收入年份的信息。现请利用后一张表中的数据,在前一张表中增加一列表示该公司该年份的收入熵指标 I \rm I I

# df1_2添加一列年份
df1_2['年份'] = pd.to_datetime(df1_2['日期']).dt.year
# 算出每个企业每个产业每一年的收入额
s1 = df1_2.groupby(['证券代码','收入类型','年份'])['收入额'].sum()
len(s1)
>>> 964022

经过计算发现s2即收入额,数据为1年1条数据,可以直接算p(xi)

# 直接算p(xi)
s2 =  df1_2.groupby(['证券代码','年份'])['收入额'].transform(lambda x: x/x.sum())
# 将占比加入到df1_2中
df1_2.insert(df1_2.shape[1], '占比', s2)
# 算出每个证券代码的收入熵指标 I
df1_2['对数占比'] = df1_2['占比']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值