一、数据概况

数据集: 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股上市公司年报&管理层讨论与分析 只有 yearcodetext 三个字段, 通过与本数据集合并操作(pd.merge) ,现在希望增加 EndDateShortNameIndustryCodeRegisterAddress 四个字段。

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



根据字段 yearcode 进行合并,合并方式为内连接 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 , 备注 「姓名-学校-专业」。



广而告之