python读取csmar_如何优雅的把CSMAR(国泰安)数据导入R和Python

本文介绍了如何优雅地将CSMAR(国泰安)数据库的Excel数据导入R和Python,包括批量读取文件、添加变量标签等步骤。在R中,通过`tidyverse`和`readxl`包实现数据读取和处理,Python则利用pandas的`read_excel`功能结合`feather`格式进行数据整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

CSMAR(国泰安)数据库是经济金融相关的科研工作者用到的最多的数据库之一。它提供了丰富全面的上市公司财务及金融数据,以及一些行业宏观层面的数据。但是,它并没有像WRDS(沃顿研究数据服务)等数据库提供丰富接口(如SAS,R等)供下载,只能在网页上下载好数据然后导入到相应的分析软件进行分析。

我在最近使用该数据库时发现,虽然CSMAR(国泰安)数据库可以提供CSV格式下载,但限制每次只能有300,000条查询,而且在导入R的过程中总是报错。另外还有其他的可以导入R的txt格式,但无一例外都出现错误,无法导入成功。最终无奈选择xls格式,而xls格式由于自身的限制,每个文件只有65,000条数据。

因此把CSMAR数据导入R就变成了两个问题:

批量导入excel数据文件。

为每个变量添加标签。(因为许多变量名并不能直观的知道它的意思,而Rstudio里面显示每个变量标签就方便多了)

完成之后,在Rstudio里面的样式是:

一步一步来

安装两个packages:

install.packages(c("tidyverse", "readxl"))

下载数据并解压在一个文件夹里,我们以CSMAR里面基金表现数据为例:

如图,每个子文件夹里面又有很多xls文件,和标签说明的txt文件。

读取xls文件的list:

library(tidyverse)

librar

Python中,从CSMAR数据库下载并处理上市公司财务数据通常涉及以下几个步骤: 1. **装必要的库**: 首先,你需要装`pandas`用于数据读取处理,`lxml``requests`用于抓取网页,以及`BeautifulSoup`用于解析HTML。如果需要从CSV文件下载,也可以使用`csv`库。 ```bash pip install pandas lxml requests beautifulsoup4 csv ``` 2. **获取数据源**: CSMAR数据通常以Excel格式提供,你可能需要访问其官方网站或通过特定接口下载。由于这是实时操作,这里无法直接给出完整的代码,但你可以参考类似这样的示例(假设URL为`http://example.com/fundamentals.xlsx`): ```python import pandas as pd url = "http://example.com/fundamentals.xlsx" # 替换为你实际的数据源地址 data = pd.read_excel(url) ``` 3. **筛选特定行业及时间段**: 确定行业后,你可以根据公司的行业分类字段筛选数据。假设有一个名为`industry`的列: ```python industry_column = 'industry' target_industry = '你的目标行业' # 替换为你感兴趣的行业 data_filtered = data[data[industry_column] == target_industry] start_year = 1990 end_year = 2023 data_filtered = data_filtered[(data_filtered['year'] >= start_year) & (data_filtered['year'] <= end_year)] ``` 4. **按表格拆分数据**: 对于资产负债表、利润表现金流量表,这些信息可能会分布在不同的Excel工作表中。你可能需要遍历每个工作表并将相关列提取出来: ```python sheet_names = ['balance_sheet', 'income_statement', 'cash_flow'] tables = {} for sheet in sheet_names: table_data = data_filtered[data_filtered['sheet_name'] == sheet].dropna(subset=['column_name']) # 假设有'sheet_name''column_name'列 tables[sheet] = table_data.set_index('column_name') ``` 5. **合并表单**: 将每个表格的数据按照行标签(通常是科目名)合并成一个大的DataFrame,然后整合到一起。 ```python merged_tables = {k: v.groupby(level=0).sum() for k, v in tables.items()} merged_df = pd.concat(merged_tables, axis=1) ``` 6. **保存结果**: 最后将处理后的数据保存为CSV或其他格式: ```python output_filename = f"{target_industry}_{start_year}_to_{end_year}.csv" merged_df.to_csv(output_filename, index=True) ``` 注意:这只是一个概括性的示例,实际代码可能因数据结构来源的不同而有所变化。同时,CSMAR数据的具体结构获取方式需要查看官方文档或API说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值