1. 模块介绍
将pandas库中常用的DataFrame数据保存为Stata软件常用的.dta数据,可对DataFrame变量使用.to_stata模块。
官方文档对于.to_stata的介绍如下:
完整语法:
to_stata(path: 'FilePath | WriteBuffer[bytes]',
convert_dates: 'dict[Hashable, str] | None' = None,
write_index: 'bool' = True,
byteorder: 'str | None' = None,
time_stamp: 'datetime.datetime | None' = None,
data_label: 'str | None' = None,
variable_labels: 'dict[Hashable, str] | None' = None,
version: 'int | None' = 114,
convert_strl: 'Sequence[Hashable] | None' = None,
compression: 'CompressionOptions' = 'infer',
storage_options: 'StorageOptions' = None,
value_labels: 'dict[Hashable, dict[float, str]] | None' = None)
其中,比较常用的包括:
- path: 保存的路径地址。
- write_index: 是否把DataFrame的index写入dta文件,默认为True,即写入。通常我们将其设置为False,即无需写入。
- version: 保存为dta数据的版本。默认为114版本,即该dta文件可以被Stata 10及之后的版本读取。除了114之外,version可选版本包括:117,118和119,它们分别对应Stata 13, Stata 14和Stata 15及之后的版本。其中,118和119版本支持Unicode字符(即中文变量和观测值),而199版本最多可支持32,767个变量。通常来说,我们将版本设定为118,便足以满足大部分需求了。当变量数超过了118版本的容量之后,我们再考虑使用119版本。
2. 代码实例
在官方说明文档中,给出了如下实例(可直接复制到python编译环境中运行):
df = pd.DataFrame({'animal': ['falcon', 'parrot', 'falcon','parrot'],
'speed': [350, 18, 361, 15]})
df.to_stata('animals.dta')
注意:.to_stata模块只能在DataFrame变量后面使用。
笔者常用的代码如下(放心使用):
rawdata.to_stata(r"file\data.dta",
write_index=False,
version=118)
其中,rawdata是需要转换格式的DataFrame数据,write_index=False表示不写入DataFrame的index,version采用118格式(对应Stata 14版本及之后)。