Pandas数据分析-Task7

Pandas数据分析-Task7

记录DataWhale的Pandas数据分析的学习过程,本次是期中测试,测试前面6章学的怎么样(划水的菜鸡瑟瑟发抖)。本篇文章中的测试题及源数据可以从此链接中下载,需要的童鞋可以点击链接自取。

【任务一】企业收入的多样性

在这里插入图片描述
在这里插入图片描述
思路:有两个表company和company_data,最后的结果应该是两个表连接成一个表,需要在company_data这个表中统计出熵,基本方法是先根据证券代码和日期分组求和,然后使用变换transform()方法将 p ( x i ) ∗ l o g ( p ( x i ) ) p(x_i)*log(p(x_i)) p(xi)log(p(xi))入到company_data表中,然后再根据先根据证券代码和日期分组求和,即可求出熵。

import pandas as pd
import numpy as np

df1 = pd.read_csv('company.csv')
df2 = pd.read_csv('company_data.csv')

df2=df2.loc[df2['收入额']>0,:]#df2中有负值,无法计算熵,所以先把负值所在的列删掉。
gb=df2.groupby(['证券代码','日期'])['收入额']#根据证券代码和日期分组
s1=df2['收入额']/gb.transform('sum')#使用变换transform()方法,求每一行收入与当年总收入的比例。
df2['temp']=-s1*np.log(s1)
df3=df2.groupby(['证券代码','日期'])['temp'].agg([('熵','sum')]).reset_index()#使用聚合函数求熵,生成新的表df3

df3['日期']=df3['日期'].apply(lambda x:int(x.split('/')[0]))#将表df3的日期一列改为和df1类型一样的方式,方便后面与df1连接
df1['证券代码']=df1[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值