上市公司高管违规数据 import pandas as pd
df3 = pd.read_excel('高管违规次数.xlsx', converters={'股票代码': str}) df3.head()
一、算法为得到高管违规次数.xlsx ,实现步骤: - 高管违规数据集
上市公司高管违规-原始数据.xlsx
然后我们使用pd.merge()函数将两个数据集按照股票代码和年度进行合并,使用全连接(how='outer')确保即使某些股票代码未出现在高管违规数据集中,也能保留在结果中。 接下来,我们使用groupby()函数按股票代码和年度进行分组,然后使用count()函数统计每个组的违规次数。 检查结果, 无误后导出xlsx。字段包括股票代码、年度和违规次数。
二、实现过程2.1 导入数据import pandas as pd
df1 = pd.read_excel('行业代码.xlsx', converters={'股票代码': str}) df1.head()
df2 = pd.read_excel('上市公司高管违规-原始数据.xlsx', converters={'股票代码': str}) df2['公告日期'] = pd.to_datetime(df2['公告日期']) df2['会计年度'] = df2['公告日期'].dt.year df2.head()
2.2 合并然后我们使用pd.merge()函数将两个数据集按照股票代码和年度进行合并,使用全连接(how='outer')确保即使某些股票代码未出现在高管违规数据集中,也能保留在结果中。 df = pd.merge(df1, df2, how='outer', on=['股票代码', '会计年度']) df.head()
2.3 分组Groupby接下来, - 使用groupby()函数按
股票代码 和 会计年度 进行分组
result_df = df.groupby(['股票代码', '会计年度'])['违规行为'].count().reset_index(name='违规次数') result_df
2.4 检查&保存检查结果, 无误后导出xlsx。字段包括股票代码、年度和违规次数。 df2[(df2['股票代码']=='871753') & (df2['公告日期'].dt.year==2022)]
df2[(df2['股票代码']=='873527') & (df2['公告日期'].dt.year==2018)]
这里仅随机检查了两个记录(现实中要多检查几次), 与result_df中是一致的, 现在保存结果供后续实证分析 result_df.to_excel('高管违规次数.xlsx', index=False)
|