Stata与Python云端课程重磅上线,技术总编李婷婷倾力打造,限时特惠不容错过
[id_[id_149132926]19708676]

[id_2052782244]
因为要感谢大家一直以来的支持与信任,所以爬虫俱乐部给大家送福利啦!!!Stata 和 Python 的特惠课程在腾讯课堂双双上线。爬虫俱乐部推出了 Python 编程培训课程,还有 Stata 基础课程以及 Stata 进阶课程。只要报名课程,就能加入答疑群。对报名有任何疑问的话,欢迎在公众号后台留言,也可以在腾讯课堂留言哦。我们在这篇推文的最后给出了每门课程的课程二维码。如果大家有需要,就可以直接去扫描这些二维码,从而查看课程详情并且进行购买。
导读
我们在进行数据分析时,经常需要同时使用 Stata 和 Python 这两种软件。有时候还需要在这两个软件之间传递数据。如果不了解这两个软件如何进行交互,那么在操作时就会遇到困难。本文将对 Stata 与 Python 之间如何交互以及数据如何传递进行一个简单的介绍。
一. 从Stata中调用Python
在 Stata 中调用 Python 是较为简单的。首先要完成 Python 的安装,接着在 Stata 中输入 python ,这样就能成功调用 Python 了。在此我们不进行举例,后续会给出更详细的例子,同时我们来讨论几个较为常见的小问题。首先,在 Stata 中每次调用 Python 时,需要以“python”开头,并且结尾一定要加“end”,不然程序会报错。有时我们的 Python 路径设置存在问题,可能无法通过输入“python”顺利调用,在这种情况下,我们可以尝试用以下几行命令进行设置:
python search //查找我们计算机中安装的Pythonpython query //Stata目前设置的Python信息setpython_exec 是 D 盘下 Python310 文件夹中的 python.exe 文件。//这里是Stata识别到的您安装python的路径
二. 从Python中调用Stata
调用 Python 中的 Stata 并不复杂。首先要做的是安装模块,官方给出的安装代码是这样的:
pip install --upgrade --user stata_setup
我们接下来就能够在 Python 里调用 Stata 啦。让我们运行一段较为简单的代码,来看看效果究竟是怎样的。
import stata_setupstata_setup.config(r'E:\Stata17', 'mp') # 这里指定Stata的路径和版本from pystata import stata pystata 模块是 Stata 官方自带的。Stata16 及更高版本无需再次对其进行安装。stata.run('''sysuse auto, clear本地变量列表包含价格、每加仑英里数、1978 年的变量、车顶高度sum `varlist'''')
输出结果如下:
三. Stata和Python的数据传递
我们能够运用 sfi(Stata Function Interface)模块里的 Data 类去完成数据传递这一操作,接着就让我们来瞧瞧具体的办法吧。
Stata读取Python数据
我们在这里借助 Data 类里的 add 函数以及 store 函数来达成目的。其中,add 函数的作用是向当前的 Stata 数据集中添加观察值或者变量,而 store 函数则是把数据保存到当前的 Stata 数据集中。具体代码如下:
clear allpythonimport tushare as tsfrom sfi import Datapro = ts.pro_api(此字符串为'e3fc4f0fc2aee53b7039b7cb4201ff6237a0b85a42d0fac654781b47',它具有特定的编码或标识意义,可能在特定的系统或情境中被使用。)df = pro.daily(ts_code='000002.SZ', start_date='20220101', end_date='20220126') # 获取万科的一些简单数据print(df.dtypes) 查看 Python 所获得的数据类型,以便在 Stata 中设置与之对应的类型的变量。Data.addVarStrL('trade_date') # 在Stata中添加StrL类型的变量Data.addVarFloat('open') # 在Stata中添加float类型的变量Data.addVarFloat('close')Data.addObs(df.shape[0]) # 添加观测值,相当于Stata中的命令set obsData.store('trade_date', None, df['trade_date'])Data.store('open', None, df['open'])Data.store('close', None, df['close']) 参数一用于设置要存储的位置;参数二用于设置观测值的个数;若参数为 None 则选取全部参数;参数三用于选择要传递的数据。endbr
这里一定要留意 Python 中用于存储数据的数据类型。Stata 中添加的变量,其数据类型必须和原数据类型保持一致,不然程序就会报错。让我们来看看最后的结果吧。
Python读取Stata数据
我们在这里使用 Data 类中的 get 函数来进行操作。get 函数的功能极为强大,它能够满足在数据传递过程中的大多数要求。我们可以查看具体的代码,以了解如何运用 get 函数。
clear allpythonfrom sfi import Datastata: sysuse auto, clearData.get(0, 0)Data.get(var='price')Data.get(obs=0)Data.get([0,2,3], [0,2,4,6])Data.get(var='foreign')Data.get(var='foreign', valuelabel=True)end
我们注意get函数返回的是列表,我们观察一下结果。