Stata+Python:导入超大Excel文档的新思路-以国泰安为例

发布时间:2022-07-21 阅读 225

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:张春雷(东北财经大学)
邮箱hzhchl@126.com


目录


1. 引言

在进行数据处理的过程中,使用 import excel 命令导入 Excel 文档方便且高效。但 Stata 在导入体积超过 40MB 的 Excel 文档时会报错并提示文档过大。

以 CSMAR 上市公司数据库董监高个人特征数据为例,原始 Excel 文档高达 180MB ,Stata 无法直接导入。对于该问题,网络上已有相关讨论,连享会《 Stata 数据处理:超大 Excel 文档如何读入》总结了四种处理该问题的方法并列出了优缺点。

除此之外,也可以在下载阶段就将大型数据分为若干文档以满足 Stata 导入要求。

方法 优点 缺点
1. excelxlsxlargefile 命令 数据规整,不易出错 速度慢,占用内存高
2. 转化为 .csv 格式 直观简单 转换慢, 易出现乱码
3. 转化为 .txt 格式 直观简单 转换慢,易出现乱码
4. 直接复制粘贴 非常直观 数据损失,剪切板占用内存高,电脑易死机

2. 新的思路和方法

python 在数据处理方面效率非常高,使用 Stata + python 联合将大大提高数据读入导出的效率。该方法的突出优点是内存占用低,效率高。

Stata16 以上版本加入了 python 接口,因此只需在 Stata 命令框输入以下代码就能完成从读入到导出的全部过程。注意:请确保您的电脑已经正确安装并配置了 python 环境,可参见如下推文:(在 Stata 命令窗口中输入 lianxh Python 可以查看所有相关推文)

在 stata 命令框中逐行输入以下代码:

python
import os
os.chdir(r"E:/资料/国泰安/董监高个人特征"import pandas as pd
df = pd.read_excel("董监高个人特征.xlsx")
print(df.head())
df[df.columns.tolist()] = df[df.columns.tolist()].astype(str)
df.to_stata(r"E:/资料/国泰安/董监高个人特征/董监高个人特征.dta",write_index=True,version=119)
end

代码解读:

import os
os.chdir(r"E:/资料/国泰安/董监高个人特征"
  • 切换工作路径到文件所在的文件夹
import pandas as pd
df = pd.read_excel("董监高个人特征.xlsx")
  • 导入pandas数据处理模块并读取 Excel 文档
print(df.head())
  • 查看表头(该行可省略)
df[df.columns.tolist()] = df[df.columns.tolist()].astype(str)
  • 将所有列都转换为字符串格式(否则导出过程容易报错)
df.to_stata(r"E:/资料/国泰安/董监高个人特征/董监高个人特征.dta",write_index=True,version=119)
  • 导出为 Stata 格式的 .dta 文件。

以上代码运行过程中,读取共花费 12 分钟,耗费内存 1.8GB ,输出 Stata 格式文件耗时 2 分30 秒,导出后的 .dta 文件大小为 1.7GB。

另:经测试,在 IDLE( python 自带的集成开发环境)中,上述代码的运行时间更短,执行效率更高。

3. 总结

使用 Stata+python 不仅能满足导入大型 Excel 文档的要求,而且上述方法具有准确性高,占用内存小,效率高等特点,即使配置较差的电脑,也能使用该方法导入大型 Excel 文档。

4. 参考资料

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh