pandas学习task11综合任务

这是在datawhale学习小组学习pandas的最后综合练习,以下是学习笔记,仅供参考,不喜勿喷,笔者比较菜还在肝第二题,先把题目放出来,大家一块学习。
DataWhale

Task Special & Task 11 综合练习

import pandas as pd
import numpy as np

任务一企业收入的多样性

【题目描述】一个企业的产业收入多样性可以仿照信息熵的概念来定义收入熵指标:其中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9p44b0yS-1610553233978)(attachment:1610549385%281%29.jpg)]
p(xi)是企业该年某产业收入额占该年所有产业总收入的比重。在company.csv中存有需要计算的企业和年份,在company_data.csv中存有企业、各类收入额和收入年份的信息。现请利用后一张表中的数据,在前一张表中增加一列表示该公司该年份的收入熵指标
I。

A = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\Company.csv')
A.head()
证券代码日期
0#0000072014
1#0004032015
2#0004082016
3#0004082017
4#0004262015
B = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\Company_data.csv')
B.head()
证券代码日期收入类型收入额
012008/12/3111.084218e+10
112008/12/3121.259789e+10
212008/12/3131.451312e+10
312008/12/3141.063843e+09
412008/12/3158.513880e+08
B['证券代码'] = B['证券代码'].apply(lambda x:'#%06d'%x)
B = B[B['证券代码'].isin(A['证券代码'])]
B['日期'] = B['日期'].apply(lambda x: int(x[:4]))
res = B.groupby(['证券代码', '日期'])['收入额'].apply(lambda x: -((x/x.sum()*np.log(x/x.sum()))).sum()).reset_index()
res = A.merge(res, how='left', on=['证券代码', '日期']).rename(columns={'收入额': '收入熵'})
res

【任务二】组队学习信息表的变换

【题目描述】请把组队学习的队伍信息表变换为如下形态,其中“是否队长”一列取1表示队长,否则为0
是否队长 队伍名称 昵称 编号
0 1 你说的都对队 山枫叶纷飞 5
1 0 你说的都对队 蔡 6
2 0 你说的都对队 安慕希 7
3 0 你说的都对队 信仰 8
4 0 你说的都对队 biubiu🙈🙈 20
… … … … …
141 0 七星联盟 Daisy 63
142 0 七星联盟 One Better 131
143 0 七星联盟 rain 112
144 1 应如是 思无邪 54
145 0 应如是 Justzer0 58

df = pd.read_excel(r'C:\Users\zhoukaiwei\Desktop\data\组队信息汇总表(Pandas).xlsx')
df.head()
所在群队伍名称队长编号队长_群昵称队员1 编号队员_群昵称队员2 编号队员_群昵称.1队员3 编号队员_群昵称.2...队员6 编号队员_群昵称.5队员7 编号队员_群昵称.6队员8 编号队员_群昵称.7队员9 编号队员_群昵称.8队员10编号队员_群昵称.9
0Pandas数据分析你说的都对队5山枫叶纷飞67.0安慕希8.0信仰...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1Pandas数据分析熊猫人175鱼呲呲44Heaven37.0吕青50.0余柳成荫...25.0Never say never55.0K120.0Y.28.0X.Y.Q151.0swrong
2Pandas数据分析中国移不动107Y's124🥕75.0Vito146.0张小五...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
3Pandas数据分析panda11太下真君35柚子108.0My42.0星星点灯...157.0Zys158.0不器102.0嘉平佑染NaNNaNNaNNaN
4Pandas数据分析一路向北13黄元帅1516.0未期18.0太陽光下...23.0🚀169.0听风189.0CappuccinoNaNNaNNaNNaN

5 rows × 24 columns

【任务三】美国大选投票情况

【题目描述】两张数据表中分别给出了美国各县(county)的人口数以及大选的投票情况,请解决以下问题:

1.有多少县满足总投票数超过县人口数的一半
2.把州(state)作为行索引,把投票候选人作为列名,列名的顺序按照候选人在全美的总票数由高到低排序,行列对应的元素为该候选人在该州获得的总票数
3.每一个州下设若干县,定义拜登在该县的得票率减去川普在该县的得票率为该县的BT指标,若某个州所有县BT指标的中位数大于0,则称该州为Biden State,请找出所有的Biden State

此处是一个样例,实际的州或人名用原表的英语代替

        拜登   川普

威斯康星州 2 1
德克萨斯州 3 4

df = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\president_county_candidate.csv')
df.head()
statecountycandidatepartytotal_voteswon
0DelawareKent CountyJoe BidenDEM44552True
1DelawareKent CountyDonald TrumpREP41009False
2DelawareKent CountyJo JorgensenLIB1044False
3DelawareKent CountyHowie HawkinsGRN420False
4DelawareNew Castle CountyJoe BidenDEM195034True

【任务四】显卡日志

下面给出了3090显卡的性能测评日志结果,每一条日志有如下结构:
Benchmarking #2# #4# precision type #1#
#1# model average #2# time : #3# ms
其中#1#代表的是模型名称,#2#的值为train(ing)或inference,表示训练状态或推断状态,#3#表示耗时,#4#表示精度,其中包含了float, half, double三种类型,下面是一个具体的例子:
Benchmarking Inference float precision type resnet50
resnet50 model average inference time : 13.426570892333984 ms
请把日志结果进行整理,变换成如下状态,model_i用相应模型名称填充,按照字母顺序排序,数值保留三位小数:
Train_half Train_float Train_double Inference_half Inference_float Inference_double
model_1 0.954 0.901 0.357 0.281 0.978 1.130
model_2 0.360 0.794 0.011 1.083 1.137 0.394

【任务五】水压站点的特征工程

df1和df2中分别给出了18年和19年各个站点的数据,其中列中的H0至H23分别代表当天0点至23点;df3中记录了18-19年的每日该地区的天气情况,请完成如下的任务:
1.通过df1和df2构造df,把时间设为索引,第一列为站点编号,第二列为对应时刻的压力大小,排列方式如下(压力数值请用正确的值替换):
站点 压力
2018-01-01 00:00:00 1 1.0
2018-01-01 00:00:00 2 1.0
… … …
2018-01-01 00:00:00 30 1.0
2018-01-01 01:00:00 1 1.0
2018-01-01 01:00:00 2 1.0
… … …
2019-12-31 23:00:00 30 1.02.在上一问构造的df基础上,构造下面的特征序列或DataFrame,并把它们逐个拼接到df的右侧

当天最高温、最低温和它们的温差
当天是否有沙暴、是否有雾、是否有雨、是否有雪、是否为晴天
选择一种合适的方法度量雨量/下雪量的大小(构造两个序列分别表示二者大小)
限制只用4列,对风向进行0-1编码(只考虑风向,不考虑大小)3.对df的水压一列构造如下时序特征:

当前时刻该站点水压与本月的相同整点时间该站点水压均值的差,例如当前时刻为2018-05-20 17:00:00,那么对应需要减去的值为当前月所有17:00:00时间点水压值的均值
当前时刻所在周的周末该站点水压均值与工作日水压均值之差
当前时刻向前7日内,该站点水压的均值、标准差、0.95分位数、下雨天数与下雪天数的总和
当前时刻向前7日内,该站点同一整点时间水压的均值、标准差、0.95分位数
当前时刻所在日的该站点水压最高值与最低值出现时刻的时间差

df1 = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\yali18.csv')
df1.head()
TimeMeasNameH0H1H2H3H4H5H6H7...H14H15H16H17H18H19H20H21H22H23
02018-01-01站点40.4027500.4076250.4181250.4252500.4260000.4252500.4173750.426375...0.3487500.3592500.3555000.3442500.3521250.3562500.3472500.3438750.3566250.418875
12018-01-01站点70.2143750.2267500.2323750.2331250.2350000.2327500.2308750.220000...0.1873750.1967500.1997500.1922500.1862500.1832500.1772500.1633750.1652500.199375
22018-01-01站点220.2470000.2481250.2713750.2511250.2721250.2563750.2571250.242500...0.2455000.2428750.2383750.2308750.2372500.2368750.2365000.2365000.2410000.254500
32018-01-01站点210.2842500.2898750.2835000.2812500.2883750.2887500.2857500.255750...0.2276250.2381250.2385000.2186250.2070000.2126250.2092500.1890000.2178750.270000
42018-01-01站点200.2928750.2958750.3052500.2988750.3101250.3007500.2883750.262500...0.2475000.2411250.2433750.2325000.2336250.2242500.2193750.2021250.2193750.286500

5 rows × 26 columns

df2 = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\yali19.csv')
df2.head()
TimeMeasNameH0H1H2H3H4H5H6H7...H14H15H16H17H18H19H20H21H22H23
02019-01-01站点40.3420000.4293750.4290000.4402500.4458750.4447500.4177500.387000...0.3198750.3262500.3236250.3225000.3090000.3071250.3071250.3071250.3071250.307125
12019-01-01站点70.2151250.2395000.2575000.2462500.2751250.2646250.2293750.205375...0.1806250.1765000.1813750.1551250.1596250.1461250.1446250.1352500.1588750.184750
22019-01-01站点220.2447500.2488750.2466250.2473750.2473750.2455000.2440000.239500...0.2380000.2361250.2353750.2380000.2312500.2323750.2267500.2278750.2361250.242125
32019-01-01站点210.2287500.2482500.2587500.2527500.2643750.2658750.2377500.208125...0.2006250.2021250.1980000.1867500.1852500.1800000.1747500.1773750.1927500.212625
42019-01-01站点200.2391250.2605000.2691250.2635000.2781250.2796250.2503750.216625...0.2125000.2143750.2020000.1990000.1952500.1885000.1877500.1866250.2050000.225250

5 rows × 26 columns

df3 = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\qx1819.csv')
df3.head()
日期天气气温风向
02018-01-01多云1C~-4C东南风 微风
12018-01-02阴转多云8C~0C东北风 3-4级
22018-01-03阴转小雪1C~-1C东北风 4-5级转4-5级
32018-01-040C~-4C东北风转北风 3-4级转3-4级
42018-01-05阴转多云3C~-4C西风转北风 3-4级转3-4级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值