Py学习  »  Python

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

连享会 • 2 年前 • 415 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 基于机器学习的因果推断方法

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

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 引言

  • 2. 新的思路和方法

  • 3. 总结

  • 4. 参考资料



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教程
    • Stata-Python交互-10:Stata17 新特性之PyStata的配置与应用
    • Stata-Python交互-9:将python数据导入Stata
    • Stata-Python交互-8:将Stata数据导入Python
    • Stata-Python交互-7:在Stata中实现机器学习-支持向量机
    • Stata-Python交互-6:调用APIs和JSON数据
    • Stata-Python交互-5:边际效应三维立体图示
    • Stata-Python交互-4:如何调用Python宏包
    • Stata-Python交互-3:如何安装Python宏包
    • Stata-Python交互-2:在Stata中调用Python的三种方式
    • Stata-Python交互-1:二者配合的基本设定
  • 专题:Python-R-Matlab
    • Stata交互:Python-与-Stata-对比

在 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. 参考资料

  • 王舒瑶,连享会推文,Stata数据处理:超大Excel文档如何读入
  • 专题:Stata教程
    • Stata-Python交互-9:将python数据导入Stata
    • Stata-Python交互-8:将Stata数据导入Python
  • 专题:数据处理
    • Stata数据处理:FRED数据导入问题的解决方案

课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152721
 
415 次点击