Py学习  »  Python

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

连享会 • 8 月前 • 229 次点击  

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

🍓 课程推荐:2024 政策优化和机制分析专题
主讲老师:杨海生 (中山大学)
课程时间:2024 年 8 月 8-10 日 (三天)
授课地点:西安 · 西北工业大学 (线下授课)

本期课程为大家提供了一些进行政策评价的新视角和新工具。我们不再满足于验证政策是否有效,还可以分析政策的作用机制、政策公平性和政策的可迁移性等,以便让政策分析更有弹性和深度。核心内容如下:

  • 政策的作用机制:如何检验和分析?
    • 逐步检验法 | 双重纠偏 Lasso | 敏感性分析
    • 因果路径分析 | 连续型中介变量 | 多重中介检验
    • 渠道相关性检验 | 中介渠道相对重要性分析
  • 政策优化和政策公平性
    • 当前政策如何优化?政策学习 | 政策迁移学习
    • 如何兼顾效率和公平性?
    • 政策绩效评估:基于多臂 Qini 曲线
    • 基于网络的政策学习:溢出效应和同伴效应
  • 分析工具:DID 分析的新范式
    • 纽曼正交框架下的 DID
    • 匹配框架下的 DID
    • 多期 DID:假设条件和检验方法

作者:张春雷(东北财经大学)
邮箱: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数据导入问题的解决方案


🍓 课程推荐:2024 政策优化和机制分析专题
主讲老师:杨海生 (中山大学)
课程时间:2024 年 8 月 8-10 日 (三天)
授课地点:西安 · 西北工业大学 (线下授课)

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

🍏 关于我们

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

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