能力较差,不太会做。此次作业完成比较困难,有借鉴别人(Gocara)的代码~
【任务一】企业收入的多样性
调包
import pandas as pd
import numpy as np
np.seterr(all = 'ignore')
读取两个表格里的数据
df1 = pd.read_csv('company.csv')
df2 = pd.read_csv('company_data.csv')
df1.head()
df2.head()
由上面两个结果可知,两个表格中的数据格式不一致,所以先要统一格式。
df1_ = df1.copy()
df1_['证券代码'] = df1_['证券代码'].str[1:].astype('int64')
注:将df1表中证券代码列里的#去掉转为int
df2['日期'] = df2['日期'].str[:4].astype('int64')
注:将df2表日期列取前四位year转为int
下一步需要根据熵的公式,自定义熵的函数:
def entropy(x):
if x.any():
p = x/x.sum()
return -(p*np.log2(p)).sum()
return np.nan
res = df1_.merge(df2, on=['证券代码','日期'], how='left').groupby(['证券代码','日期'])['收入额'].apply(entropy).reset_index()
res.head()
注:跳过NaN值;用df1表左连接df2表 , 连接列为证券代码和日期 , 再继续对这两列分组 , 取出收入额列用apply调用信息熵函数 , 重置索引