一:CSMAR数据库简介

CSMAR(中国经济金融研究数据库)是由深圳希施玛数据科技有限公司开发的一个经济金融型数据库。该数据库的设计初衷是为了满足学术研究的需要,其借鉴了国际知名数据库如芝加哥大学CRSP、标准普尔Compustat、纽约交易所TAQ、I/B/E/S、Thomson等的专业标准,并结合了中国的实际情况。
CSMAR数据库的特点包括:
1. 内容的全面性:数据库涵盖了股票、公司、基金、债券、衍生品、经济、行业、货币市场、海外市场等多个领域,包含了结构化的财务报表、交易行情以及非结构化的新闻资讯、研究报告、公司公告等数据。
2. 数据的质量和权威性:CSMAR强调对原始数据的深层专业加工和整理,确保数据的质量。数据来源权威,且经过严格的质检流程。
3. 国际认可:CSMAR数据库是大中华区唯一被美国沃顿商学院纳入其研究数据平台的数据提供商,得到了包括诺贝尔奖获得者Robert William Fogel在内的国际学者的认可。
4. 广泛的覆盖:数据库包含19大系列、160多个数据库、50000多个字段,涵盖了从1949年至今的数据。
5. 应用场景:CSMAR数据库被广泛应用于数据定制、实证研究等领域,支持学术研究和金融分析。
6. 国际和国内影响力:超过1000家高校和研究机构(如哈佛、北大等)以及15000多名客户使用CSMAR数据库,已有超过17000篇高质量论文在国内外一流刊物上发表。
CSMAR数据库在学术界和金融界都有着广泛的应用,为研究者提供了重要的数据支持。

接下来我们可以用Python,利用CSMAR提供的数据接口来获取其中数据库中的数据表,一般来说大部分数据库需要购买,如果是在校大学生,一般学校会购买其中一些的数据,因此我们可以利用学校信息进行登录从而免费使用学校购买的数据。

入口:CSMAR

二:Python代码获取所需分析数据

主要参考文档

45df83c0fea04d949b5cd01a8cab50f8.png

Step1:安装环境

如果从没安装过Python,可按数据接口文档顺利执行。如果安装过比3.6更高的版本,正常情况下是兼容的,对于不熟悉再配置一个虚拟环境,按照流程下来也应该没有问题。

Step2:导入库

# 导入库
from csmarapi.CsmarService import CsmarService
from csmarapi.ReportUtil import ReportUtil
csmar = CsmarService()

Step3:用户登录

用户登录函数:login(account,pwd,lang):

  • account:用户名/已验证电话/已验证邮箱(仅限个人注册账号)
  • pwd:密码
  • lang:可选参数(0或1:0代表中文,1代表英文,默认为0
# 用户登录
csmar.login('********************', '******')

Step4:查看已购买的数据库名称

# 查看已购买的数据库名称:getListDbs()
database = csmar.getListDbs()
ReportUtil(database)

以下为运行结果:

e8a4b6589f54450a9d04512f051048ef.png

Step5:查看已购买的数据表名称

#查看已购买的数据表名称:getListTables(databaseName) 
# databaseName:数据库名称,可通过getListDbs()获得
tables = csmar.getListTables('首次公开发行(A股)')
ReportUtil(tables)

以下为运行结果:

44b1b528079d490592321c3c0b2b6b94.png

Step6: 查看已购买数据表中所有的字段

#查看已购买数据表中所有的字段:getListFields(tableName)
# tableName:表名称,可通过getListTables(databaseName)获得
fields = csmar.getListFields('IPO_Cobasic')
ReportUtil(fields)

可以得到关于公司基本情况表“IPO_Cobasic”数据表:

d45bc9b90ed440638737691287d198ee.png

Step7:预览数据

# 预览数据函数:preview(tableName)
# tableName:表名称,可通过getListTables(databaseName)获得
data = csmar.preview('IPO_Cobasic')
ReportUtil(data)

可以预览关于公司基本情况表“IPO_Cobasic”数据表:

9d20160a0ff0438ebf179786a2db2961.png

Step8:查询已购买的数据表记录条数

# 查询已购买的数据表记录条数:queryCount(columns,condition,tableName,startTime,endTime)
# columns:字段的列表,如: ['Cuntrycd','Stkcd','Stknme','Conme']
# condition:条件,类似SQL条件语句,如:"Stkcd='000001'", 但不支持order by(该函数已有默认的排序方式)
# tableName:表名称,可通过getListTables(databaseName)查看
# startTime和endTime:时间关键字参数(非必填,如需填写格式为:YYYY-MM-DD):下载数据时间区间的开始时间和结束时间
csmar.queryCount(['Stkcd','Stknme','Indnme','Nindnme'], "Stkcd like'3%'", 'IPO_Cobasic')

可以得到股票代码以“3”开头的数据共有多少条:

结果为1384条

Step9:查询已购买的数据表数据

# 查询已购买的数据表数据
# 返回json数据格式:query(columns,condition,tableName,startTime,endTime)
# 返回DataFrame数据格式:query_df(columns,condition,tableName,startTime,endTime)
# 一次最多只能加载200,000条记录
# columns:字段的列表,如: ['Cuntrycd','Stkcd','Stknme','Conme']
# condition:条件,类似SQL条件语句,如:"Stkcd='000001'", 但不支持order by(该函数已有默认的排序方式)
# 如超过20万记录的数据可使用limit进行分页查询,假设是40万条,需分两次进行条件设置
# 如:第一次:"Stkcd like'3%' limit 0,200000", 第二次:"Stkcd like'3%' limit 200000,200000"
# tableName:表名称,可通过getListTables(databaseName)查看
# startTime和endTime:时间关键字参数(非必填,如需填写格式为:YYYY-MM-DD):下载数据时间区间的开始时间和结束时间
# 同个查询条件30分钟内只允许执行一次,查询条件涉及到的参数是condition,startTime,endTime
data = csmar.query_df(['Stkcd','Stknme','Indnme','Nindnme'], "Stkcd like'3%'", 'IPO_Cobasic')
data

可以得到利用Python数据分析的Dataframe数据格式:

63adfebe8ac7466da0f0b26b4187876e.png

至此,我们便得到了我们所要分析的数据,如果要下载下这些数据,可以在官网上搜索购买的数据库直接下载,也可以看CSMAR提供的数据接口文档的下一步。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐