Skip to content

Latest commit

 

History

History
926 lines (839 loc) · 20.7 KB

Untitled14.md

File metadata and controls

926 lines (839 loc) · 20.7 KB

Task Special & Task 11 综合练习

import pandas as pd
import numpy as np

任务一企业收入的多样性

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

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()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
证券代码 日期
0 #000007 2014
1 #000403 2015
2 #000408 2016
3 #000408 2017
4 #000426 2015
B = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\Company_data.csv')
B.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
证券代码 日期 收入类型 收入额
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
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()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
所在群 队伍名称 队长编号 队长_群昵称 队员1 编号 队员_群昵称 队员2 编号 队员_群昵称.1 队员3 编号 队员_群昵称.2 ... 队员6 编号 队员_群昵称.5 队员7 编号 队员_群昵称.6 队员8 编号 队员_群昵称.7 队员9 编号 队员_群昵称.8 队员10编号 队员_群昵称.9
0 Pandas数据分析 你说的都对队 5 山枫叶纷飞 6 7.0 安慕希 8.0 信仰 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 Pandas数据分析 熊猫人 175 鱼呲呲 44 Heaven 37.0 吕青 50.0 余柳成荫 ... 25.0 Never say never 55.0 K 120.0 Y. 28.0 X.Y.Q 151.0 swrong
2 Pandas数据分析 中国移不动 107 Y's 124 🥕 75.0 Vito 146.0 张小五 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 Pandas数据分析 panda 11 太下真君 35 柚子 108.0 My 42.0 星星点灯 ... 157.0 Zys 158.0 不器 102.0 嘉平佑染 NaN NaN NaN NaN
4 Pandas数据分析 一路向北 13 黄元帅 15 16.0 未期 18.0 太陽光下 ... 23.0 🚀 169.0 听风 189.0 Cappuccino NaN NaN NaN NaN

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()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
state county candidate party total_votes won
0 Delaware Kent County Joe Biden DEM 44552 True
1 Delaware Kent County Donald Trump REP 41009 False
2 Delaware Kent County Jo Jorgensen LIB 1044 False
3 Delaware Kent County Howie Hawkins GRN 420 False
4 Delaware New Castle County Joe Biden DEM 195034 True

【任务四】显卡日志

下面给出了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()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time MeasName H0 H1 H2 H3 H4 H5 H6 H7 ... H14 H15 H16 H17 H18 H19 H20 H21 H22 H23
0 2018-01-01 站点4 0.402750 0.407625 0.418125 0.425250 0.426000 0.425250 0.417375 0.426375 ... 0.348750 0.359250 0.355500 0.344250 0.352125 0.356250 0.347250 0.343875 0.356625 0.418875
1 2018-01-01 站点7 0.214375 0.226750 0.232375 0.233125 0.235000 0.232750 0.230875 0.220000 ... 0.187375 0.196750 0.199750 0.192250 0.186250 0.183250 0.177250 0.163375 0.165250 0.199375
2 2018-01-01 站点22 0.247000 0.248125 0.271375 0.251125 0.272125 0.256375 0.257125 0.242500 ... 0.245500 0.242875 0.238375 0.230875 0.237250 0.236875 0.236500 0.236500 0.241000 0.254500
3 2018-01-01 站点21 0.284250 0.289875 0.283500 0.281250 0.288375 0.288750 0.285750 0.255750 ... 0.227625 0.238125 0.238500 0.218625 0.207000 0.212625 0.209250 0.189000 0.217875 0.270000
4 2018-01-01 站点20 0.292875 0.295875 0.305250 0.298875 0.310125 0.300750 0.288375 0.262500 ... 0.247500 0.241125 0.243375 0.232500 0.233625 0.224250 0.219375 0.202125 0.219375 0.286500

5 rows × 26 columns

df2 = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\yali19.csv')
df2.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
Time MeasName H0 H1 H2 H3 H4 H5 H6 H7 ... H14 H15 H16 H17 H18 H19 H20 H21 H22 H23
0 2019-01-01 站点4 0.342000 0.429375 0.429000 0.440250 0.445875 0.444750 0.417750 0.387000 ... 0.319875 0.326250 0.323625 0.322500 0.309000 0.307125 0.307125 0.307125 0.307125 0.307125
1 2019-01-01 站点7 0.215125 0.239500 0.257500 0.246250 0.275125 0.264625 0.229375 0.205375 ... 0.180625 0.176500 0.181375 0.155125 0.159625 0.146125 0.144625 0.135250 0.158875 0.184750
2 2019-01-01 站点22 0.244750 0.248875 0.246625 0.247375 0.247375 0.245500 0.244000 0.239500 ... 0.238000 0.236125 0.235375 0.238000 0.231250 0.232375 0.226750 0.227875 0.236125 0.242125
3 2019-01-01 站点21 0.228750 0.248250 0.258750 0.252750 0.264375 0.265875 0.237750 0.208125 ... 0.200625 0.202125 0.198000 0.186750 0.185250 0.180000 0.174750 0.177375 0.192750 0.212625
4 2019-01-01 站点20 0.239125 0.260500 0.269125 0.263500 0.278125 0.279625 0.250375 0.216625 ... 0.212500 0.214375 0.202000 0.199000 0.195250 0.188500 0.187750 0.186625 0.205000 0.225250

5 rows × 26 columns

df3 = pd.read_csv(r'C:\Users\zhoukaiwei\Desktop\data\qx1819.csv')
df3.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
日期 天气 气温 风向
0 2018-01-01 多云 1C~-4C 东南风 微风
1 2018-01-02 阴转多云 8C~0C 东北风 3-4级
2 2018-01-03 阴转小雪 1C~-1C 东北风 4-5级转4-5级
3 2018-01-04 0C~-4C 东北风转北风 3-4级转3-4级
4 2018-01-05 阴转多云 3C~-4C 西风转北风 3-4级转3-4级