Data Whale第20期组队学习 Pandas学习—第一次综合练习
Data Whale第20期组队学习 Pandas学习—Task Special & 综合练习
- 一、企业收入的多样性
- 二、组队学习信息表的变换
- 三、美国大选投票情况
- 参考文献
一、企业收入的多样性
【题目描述】一个企业的产业收入多样性可以仿照信息熵的概念来定义收入熵指标: I=−∑ip(xi)log(p(xi))I=-\sum_{i} p(x_i)log(p(x_i))I=−i∑p(xi)log(p(xi))
其中p(xi)p(x_i)p(xi)是企业该年某产业收入额占该年所有产业总收入的比重。在company.csv中存有需要计算的企业和年份,在company_data.csv中存有企业、各类收入额和收入年份的信息。现请利用后一张表中的数据,在前一张表中增加一列表示该公司该年份的收入熵指标 I。
【数据下载】链接:https://pan.baidu.com/s/1leZZctxMUSW55kZY5WwgIw 20 密码:u6fd
解题思路:
1、获取表格中的企业证劵代码,并进行筛选删除重复行
2、根据获取的证劵代码筛选出每个企业相关数据
3、按照年份筛选企业每一年收入数据,然后求和与计算p(xi)p(x_i)p(xi),接着计算III
4、将计算结果进行汇总,并添加到第一张表。
代码:
import pandas as pd
import numpy as np
df1 = pd.read_csv('D:/binchen/txzq/datatask/company.csv')
df2 = pd.read_csv('D:/binchen/txzq/datatask/company_data.csv')
print("df1.head(9)=\n",df1.head(9))
# df1.head(9)=
# 证券代码 日期
# 0 #000007 2014
# 1 #000403 2015
# 2 #000408 2016
# 3 #000408 2017
# 4 #000426 2015
# 5 #000426 2016
# 6 #000426 2017
# 7 #000511 2012
# 8 #000511 2013
print("df2.head(9)=\n",df2.head(9))
# df2.head(9)=
# 证券代码 日期 收入类型 收入额
# 0 1 2008/12/31 1 1.084218e+10
# 1 1 2008/12/31 2 1.259789e+10
# 2 1 2008/12/31 3 1.451312e+10
# 3 1 2008/12/31 4 1.063843e+09
# 4 1 2008/12/31 5 8.513880e+08
# 5 1 2008/12/31 6 2.062714e+09
# 6 1 2008/12/31 7 -3.070010e+08
# 7 1 2008/12/31 8 9.605849e+09
# 8 1 2008/12/31 9 -8.697750e+08
df2['证券代码']=df2['证券代码'].map(lambda x:('#'+'0'*(6-len(str(x)))+str(x)))
df2['日期'] = df2['日期'].str[:4].astype('int64')
print("df2.head(10)=\n",df2.head(10))
# df2.head(10)=
# 证券代码 日期 收入类型 收入额
# 0 #000001 2008 1 1.084218e+10
# 1 #000001 2008 2 1.259789e+10
# 2 #000001 2008 3 1.451312e+10
# 3 #000001 2008 4 1.063843e+09
# 4 #000001 2008 5 8.513880e+08
# 5 #000001 2008 6 2.062714e+09
# 6 #000001 2008 7 -3.070010e+08
# 7 #000001 2008 8 9.605849e+09
# 8 #000001 2008 9 -8.697750e+08
# 9 #000001 2008 10 9.174519e+09
df_merge = df1.merge(df2, on=['证券代码','日期'], how='left')
print("df_merge=\n",df_merge)
# df_merge=
# 证券代码 日期 收入类型 收入额
# 0 #000007 2014 1.0 6.146172e+07
# 1 #000007 2014 2.0 0.000000e+00
# 2 #000007 2014 3.0 6.146172e+07
# 3 #000007 2014 4.0 9.863111e+07
# 4 #000007 2014 5.0 8.000000e+07
# ... ... ... ... ...
# 51541 #600978 2016 33.0 4.591668e+09
# 51542 #600978 2016 34.0 3.554853e+09
# 51543 #600978 2016 35.0 1.728503e+08
# 51544 #600978 2016 36.0 3.727704e+09
# 51545 #600978 2017 NaN NaN
#
# [51546 rows x 4 columns]
def entropy(x):if x.any(): # any函数指当序列至少 存在一个 True 或非零元素时返回 True ,否则返回 Falsep = x/x.sum()return -(p*np.log2(p)).sum()return np.nan
df_m = df_merge.groupby(['证券代码','日期'])['收入额'].apply(entropy).reset_index()
print("df_m=\n",df_m)
# df_m=
# 证券代码 日期 收入额
# 0 #000007 2014 4.429740
# 1 #000403 2015 4.025963
# 2 #000408 2016 4.066295
# 3 #000408 2017 NaN
# 4 #000426 2015 4.449655
# ... ... ... ...
# 1043 #600978 2011 4.788391
# 1044 #600978 2014 4.022378
# 1045 #600978 2015 4.346303
# 1046 #600978 2016 4.358608
# 1047 #600978 2017 NaN
#
# [1048 rows x 3 columns]
df_m.rename(columns={'收入额':'收入熵指标'},inplace=True)
print("df_m=\n",df_m)
# df_m=
# 证券代码 日期 收入熵指标
# 0 #000007 2014 4.429740
# 1 #000403 2015 4.025963
# 2 #000408 2016 4.066295
# 3 #000408 2017 NaN
# 4 #000426 2015 4.449655
# ... ... ... ...
# 1043 #600978 2011 4.788391
# 1044 #600978 2014 4.022378
# 1045 #600978 2015 4.346303
# 1046 #600978 2016 4.358608
# 1047 #600978 2017 NaN
#
# [1048 rows x 3 columns]
二、组队学习信息表的变换
【题目描述】请把组队学习的队伍信息表变换为如下形态,其中“是否队长”一列取1表示队长,否则为0
是否队长 队伍名称 昵称 编号
0 1 你说的都对队 山枫叶纷飞 5
1 0 你说的都对队 蔡 6
2 0 你说的都对队 安慕希 7
3 0 你说的都对队 信仰 8
4 0 你说的都对队 biubiu
Data Whale第20期组队学习 Pandas学习—第一次综合练习相关推荐
- Data Whale第20期组队学习 Pandas学习—缺失数据
Data Whale第20期组队学习 Pandas学习-缺失数据 一.缺失值的统计和删除 1.1 统计缺失信息 1.2 删除缺失信息 二.缺失值的填充和插值 2.1 利用fillna进行填充 2.2 ...
- Data Whale第20期组队学习 Pandas学习—时序数据
Data Whale第20期组队学习 Pandas学习-时序数据 一.时序中的基本对象 二.时间戳 2.1 Timestamp的构造与属性 2.2 Datetime序列的生成 2.3 dt对象 2.4 ...
- 【第20期】实践深度学习?先接住这三板斧再说
作者:木羊同学 来源:华章计算机(hzbook_jsj) 深度学习发展到现在,已经不是红不红的问题,真的是那种谈项目做课题不扯两句深度学习,别人就要来怀疑你用的技术是不是落后于时代.可是,深度学习的书 ...
- pandas学习(二) Filtering and Sorting Data
pandas学习(二) Filtering and Sorting Data drop_duplicates() 删除数据集中的重复项 .loc() 只能使用标签索引,不能使用整数索引 .iloc() ...
- Datawhale第五期组队学习团队成员
第五期组队学习团队成员 组队学习 负责人 评优助教 星球星主 初级算法梳理 Danny 梁乾明 黑桃 高级算法梳理 居居 路建飞 黑桃 编程 LeoLRH 鲁力 黑桃 统计学 谷勇杰 ben 黑桃 L ...
- Datawhale第四期组队学习团队成员
第四期组队学习团队成员 集训 负责人 评优助教 基础算法梳理 Sm1les 钱令武 高级算法梳理 于鸿飞 小雪 ML项目实践 杨冰楠 孙涛 编程 孙超 小熊 统计学 李奇锋 蓝昔 Leetcode 老 ...
- 《HelloGitHub》第 20 期
前言 HelloGitHub 项目已经累积到 3k+ Stars.本项能够走到今天,帮助到越来越多的人.少不了热爱开源.不断为本项目贡献项目的小伙伴们. 贡献者列表 很多人都有想法,付诸于行动在少数, ...
- Pandas学习(二)——双色球开奖数据分析
学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据的归一化 pandas学习(五)–pa ...
- 用 Scikit-Learn 和 Pandas 学习线性回归
对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了. from https://www.cnblogs.com ...
最新文章
- mysql 配置32g内存_MySQL性能测试 : 新的InnoDB Double Write Buffer
- ArcGIS JavaScript API 添加点
- lhgdialog 4.2.0 正式版发布
- 数据库中char varchar nchar nvarchar的区别
- elasticjob已下线_elastic-job详解(二):作业的调度
- how to use webpart container in kentico
- Win10/Server2016镜像集成离线补丁
- python3.7安装步骤-python安装步骤_python 3.7.2安装教程
- linux 解压 7z 乱码,7z-linux下解决中文名乱码的终极办法
- django(三):配置文件settings.py、初始化数据库
- HP 瘦客户机 - 使用 ie4uinit.exe 应用时,Citrix HDX Flash 出现故障和错误
- vue清除地址栏参数
- BUUCTF misc 专题(82)[WUSTCTF2020]alison_likes_jojo
- XTU,C语言,平衡三进制2
- 数据结构大作业-DBLP科学文献管理系统(三)聚团分析(并查集,最大团问题)
- 基于Springboot+Vue开发前后端端分离农产品进销存系统
- 论文投稿指南——中国(中文EI)期刊推荐(第6期)
- ARM LDR汇编指令
- 获取员工其当前的薪水比其manager的薪资还高的相关信息
- 鸿蒙系统网络连接设置ip,G1 IP话机网络配置和话机设置