一、数据概况
数据集: A股上市公司基本信息
年份: 2000-2023
公司数: 5504
记录数: 60901
用途: 可与年报、md&a数据集进行并表
二、查看数据
2.1 导入数据
import pandas as pd
df = pd.read_csv('上市公司基本信息2000-2023.csv')
df
如果股票代码中带的字母A别扭,可以剔除掉
df.Symbol = df.Symbol.str.replace('A', '')
df
2.2 查看字段
# 查看字段/含义
max_col_len = max([len(col) for col in df.columns])
max_desc_len = max([len(str(desc)) for desc in df[df.index==0].values[0]])
print('- 字段 含义 缺失率')
for col, desc in zip(df.columns, df[df.index==0].values[0]):
ratio = df[col].isna().sum()/len(df)
print(f'- {col:<{max_col_len}} {desc:<{max_desc_len}} {round(ratio, 3)*100}%')
Run
- 字段 含义 缺失率
- Symbol 股票代码 0.0%
- ShortName 股票简称 0.0%
- EndDate 统计截止日期 0.0%
- ListedCoID 上市公司ID 0.0%
- SecurityID 证券ID 0.0%
- IndustryName 行业名称 0.0%
- IndustryCode 行业代码 0.0%
- IndustryNameC 行业名称C 0.0%
- IndustryCodeC 行业代码C 0.0%
- RegisterAddress 注册具体地址 0.0%
- OfficeAddress 公司办公地址 0.0%
- Zipcode 办公地址邮政编码 0.0%
- Secretary 董事会秘书 0.1%
- SecretaryTel 董秘联系电话 0.1%
- SecretaryFax 董秘传真 0.7000000000000001%
- SecretaryEmail 董秘电子邮箱 0.7000000000000001%
- SecurityConsultant 证券事务代表 17.7%
- SocialCreditCode 统一社会信用代码 23.400000000000002%
- Sigchange 重大变更 5.3%
- Lng 办公地经度 4.6%
- Lat 办公地纬度 4.6%
- ISIN ISIN编码 0.6%
- FullName 中文全称 0.0%
- LegalRepresentative 法人代表 0.0%
- EstablishDate 公司成立日期 0.0%
- Crcd ABH股交叉码 93.8%
- RegisterCapital 注册资本 0.0%
- Website 公司网址 4.5%
- BusinessScope 经营范围 0.0%
- RegisterLongitude 注册地经度 4.7%
- RegisterLatitude 注册地纬度 4.7%
- EMAIL 电子邮箱 0.7000000000000001%
- LISTINGDATE 首次上市日期 0.0%
- PROVINCECODE 所属省份代码 0.0%
- PROVINCE 所属省份 0.0%
- CITYCODE 所属城市代码 0.2%
- CITY 所属城市 0.0%
- MAINBUSSINESS 主营业务 0.0%
- LISTINGSTATE 上市状态 0.0%
2.3 公司数
df.Symbol.nunique()
Run
5504
三、增加其他数据集字段数量
数据集 | 2001-2023A股上市公司年报&管理层讨论与分析 只有 year、code、text 三个字段, 通过与本数据集合并操作(pd.merge) ,现在希望增加 EndDate、ShortName、IndustryCode、 RegisterAddress 四个字段。
import pandas as pd
mda_df = pd.read_csv('mda01-23.csv.gz', compression='gzip')
mda_df['year'] = mda_df['year'].astype(str)
mda_df
#选择需要的字段进行读取
info_df = df[['Symbol', 'ShortName', 'EndDate', 'IndustryCode', 'RegisterAddress']]
#更改字段名Symbol为code
info_df.rename(columns={"Symbol": "code"}, inplace=True)
#根据EndDate计算会计年度year
info_df['year'] = info_df['EndDate'].fillna('').apply(lambda y: y[:4])
info_df
根据字段 year、code 进行合并,合并方式为内连接 inner , 即两数据集的交集。
df_merge = pd.merge(mda_df, info_df, on=['year', 'code'], how='inner')
#保存
#df_merge.to_csv('合并后的数据.csv', index=False)
#df_merge.to_excel('合并后的数据.xlsx', index=False)
df_merge
三、相关内容
四、获取数据
整理不易, 50元 , 加微信 372335839 , 备注 「姓名-学校-专业」。