【任务一】企业收入的多样性
其中 p(xi) 是企业该年某产业收入额占该年所有产业总收入的比重。在company.csv中存有需要计算的企业和年份,在company_data.csv中存有企业、各类收入额和收入年份的信息。现请利用后一张表中的数据,在前一张表中增加一列表示该公司该年份的收入熵指标 I 。
【任务二】组队学习信息表的变换
【题目描述】请把组队学习的队伍信息表变换为如下形态,其中“是否队长”一列取1表示队长,否则为0
df = pd.read_excel('data/task11/组队信息汇总表.xlsx')
df.head()
【任务三】美国大选投票情况
【题目描述】两张数据表中分别给出了美国各县(county)的人口数以及大选的投票情况,请解决以下问题:
- 有多少县满足总投票数超过县人口数的一半
total_votes_df = candidate_df.groupby(['state','county'])['total_votes'].sum().to_frame().reset_index() total_votes_df['US County'] = '.'+total_votes_df['county']+', '+total_votes_df['state'] res = total_votes_df.merge(population_df, on='US County', how='left') res[res['total_votes']/res['Population']>0.5].shape
答:1434个县满足总投票数超过县人口数的一半
-
把州(state)作为行索引,把投票候选人作为列名,列名的顺序按照候选人在全美的总票数由高到低排序,行列对应的元素为该候选人在该州获得的总票数
# 此处是一个样例,实际的州或人名用原表的英语代替 拜登 川普 威斯康星州 2 1 德克萨斯州 3 4
temp = candidate_df.groupby('candidate')['total_votes'].sum().sort_values(ascending=False).index res = candidate_df.pivot_table(index='state', columns='candidate', values='total_votes') res = res[list(temp)]
-
每一个州下设若干县,定义拜登在该县的得票率减去川普在该县的得票率为该县的BT指标,若某个州所有县BT指标的中位数大于0,则称该州为Biden State,请找出所有的Biden State
candidate_df['total_votes_sum'] = candidate_df.groupby(['state','county'])['total_votes'].transform('sum') candidate_df['votes_rate'] = candidate_df['total_votes']/candidate_df['total_votes_sum'] temp = candidate_df.pivot(index=['state','county'],columns='candidate',values='votes_rate')[['Joe Biden','Donald Trump']] temp['BT'] = temp['Joe Biden'] - temp['Donald Trump'] def func(x): if x.median() > 0: return 'Biden State' else: return 'Others' temp['result'] = temp.groupby('state')['BT'].transform(func) ha = temp[temp['result']=='Biden State'] num_of_biden_state = set(list(ha.index.get_level_values(0))) print(list(num_of_biden_state)) print(len(num_of_biden_state))