如何将 Dataframe 导出为 Stata Dta 格式?

Stata 是一个功能强大的统计软件包,用于数据科学相关任务。Stata 是一个完整的集成软件包,是满足您所有数据科学需求(数据操作、可视化、统计和自动报告)的一站式解决方案。它是统计和数据两个词的组合

Stata主要被政治学、经济学和生物医学领域的研究人员和院士用来管理和可视化他们的数据。Stata 帮助他们观察数据中的模式并得出结论。但任何对数据感兴趣的人都可以使用 Stata 进行实验。

Stata 不仅可以帮助您完成与数据相关的任务,还可以帮助您完成报告任务。您还可以使用 Stata 的自动报告工具管理所有报告。

Stata 对开发人员或数据科学家有何用处?现在这个世界上,一切都是数据。从平均数据到大数据(即使现在我们谈论的数据仍在呈指数级增长)或尚未探索到一半的暗数据,我们需要一种工具来存储、操作和可视化数据。

您可能正在处理一个包含大量非结构化数据文件的大型项目,并且处理起来可能有点混乱。Stata 可以帮助我们管理从小到大的数据。您不仅可以管理数据,还可以使用该软件操作数据。

众所周知,数据可以有多种形式。它可以是Excel文件、Word文档、表格形式,甚至是数据框。

这给我们带来了主要问题;我们可以以 Stata 格式存储数据框吗?

Pandas 是一种用于处理数据的流行库。它有多种数据格式相互转换的方法。我们可以以多种格式存储数据框,例如 Excel、Parquet、Feather,反之亦然。因此,我们还可以借助 Pandas 库以 Stata 格式存储数据框。

相关:阅读本文以了解 Python 中的数据分析

让我们首先看一下数据框的介绍,然后直接进入它。

什么是数据框?

数据帧是最常用的数据存储单元。就像表格一样,数据框以行和列的形式存储数据。它可以存储异构数据,这意味着一个数据帧包含多种类型的数据。虽然标题行包含字符串数据类型,但其中的元素可以是数字。

pd.DataFrame方法用于从列表、字典和字典列表等数据结构返回数据帧。数据框还可以创建为 Excel 格式、CSV 格式等。

请参阅这篇文章了解如何将 SQL 表读取为数据框

让我们来看一些创建数据框的示例。

从列表创建数据框

我们可以从列表创建一个数据框。但首先,我们需要定义元素列表。

import pandas as pd
ls=['Mangoes','Apples','Oranges','Tomatoes','Potatoes']
df=pd.DataFrame(ls)
print(df)

`pd.DataFrame 是 Pandas 库的一个方法。所以为了使用它,我们需要首先导入该库。

接下来,我们创建了一个变量 ls 来以列表格式存储元素。

变量df用于存储数据帧。最后,我们打印数据框。

列表中的数据框

从字典创建数据框

就像上面的例子一样,我们可以从字典创建一个数据框。

import pandas as pd
dct={'Groceries':['Mangoes','Apples','Oranges','Tomatoes','Potatoes'],
'cost':[80,100,70,60,30],
'No of units':[2,3,4,1,1]}
df=pd.DataFrame(dct)
print(df)

在这里,我们使用了包含三个列表的字典 – 杂货、其成本以及带来的单位数量。所有这些键值对都存储在一个名为 dct 的变量中。然后该字典被转换为名为 df 的数据框。

字典中的数据框

数据框到 Stata 方法解释

DataFrame.to_stata 方法将数据帧写入 Stata 文件。Stata 文件应以.dta扩展名保存。

该方法的语法如下所示。

DataFrame.to_stata(path, *, convert_dates=None, write_index=True, byteorder=None, time_stamp=None, data_label=None, variable_labels=None, version=114, convert_strl=None, compression='infer', storage_options=None, value_labels=None)
参数名称 描述
小路 该参数用于包含创建文档时的时间戳,
默认为当前时间
转换日期 它是一个字典,用于将日期格式转换为 stata 支持的格式。可以是以下任意内容: { ‘tc’, ‘td’, ‘tm’, ‘tw’, ‘th’, ‘tq’, ‘ty’} tc- tc 是日历形式的格式 td-

是日期格式,采用自 1960 年 1 月 1 日以来的日期
格式 tm- 月份形式的
日期格式 tw- 周形式的
日期格式 th- 日期的
每小时格式 tq- 日期的季度格式
ty- 年份的格式date
如果日期时间列具有时区属性,则此参数将引发 NotImplementedError。
写索引 该参数用于将索引写入Stata文件
默认为True,这意味着索引始终包含在内
字节顺序 该参数用于指定二进制状态文件的写入顺序默认
为 None 但也可以是小和大
时间戳 该参数用于包含文档创建的时间
,默认为当前时间
数据标签 该参数是一个字符串,用于为 stata 文件提供标签
不得超过 80 个字符
变量标签 当我们希望数据框中的变量成为stata文件中的值时使用此参数
每个变量不得超过80个字符
版本 指定在数据文件中写入数据帧时使用哪个版本
可以是 {114,117,118,119,None}
默认为 114,与 Stata 版本 10 及更高版本兼容
当设置为 None 时,由 Pandas 库决定使用哪个版本配套版本
转换_strl 仅当版本设置为 117 时此参数才有效
指定要转换为 Stata 格式的等效列的列名列表
压缩 指定文件必须如何压缩以进行即时交换
可以是 ‘gzip’,’bz2′,’xz’,’zstd’,’infer’ infer
是默认压缩
存储选项 这些是用于以 URL、HTTP 等形式存储的额外选项,例如
主机、端口、用户名、密码
值标签 它是一个字典,包含数据帧的列作为键,列值作为标签
标签的长度不得超过 32000 个字符
数据帧到 Stata 的参数

在某些情况下,此方法会出现一些错误:

未实现错误

  • 当日期时间包含时区时可能会出现此错误
  • 如果该列无法在 Stata 中表示

值错误

  • 如果 中列出的列convert_dates既不是 datetime64 也不是 datetime.datetime 的形式,则会出现此错误
  • thr 中包含的列convert_dates不在数据框中
  • 如果分类标签包含超过 32000 个字符

将数据框导出到 Stata

让我们尝试通过一些示例将数据框导出为状态格式。

将数据框(从 CSV)导出到 Stata

在此示例中,我们将获取一个 CSV 数据集,将其作为数据框读取,然后将其导出为 Stata 格式。

我们在此示例中采用的 CSV 数据集来自 IPL 数据集。它具有诸如 seasonId、赛季发生年份、当年谁赢得了比赛最佳球员等属性。

import pandas as pd
df=pd.read_csv('Season.csv')
df

首先,我们导入了 Pandas 库以便能够创建数据框。接下来,创建一个名为 df 的变量来存储从 CSV 文件 Season.csv 读取的数据帧。

在最后一行,我们正在打印数据框。

季节数据框

现在我们有了数据框,让我们尝试将其转换为 Stata 格式。

df.to_stata('Season.dta')

在上面这行代码中,我们调用了df.to_stata以文件名作为参数的方法。在此方法中,我们可以指定要将输出写入的文件名以及dta扩展名。

执行此代码时,您可以看到Season.dta在您的环境中创建了一个名为 的文件。

数据帧到 Stata

获得数据文件后,您现在可以使用 Stata 软件来操作和可视化数据。

通过指定路径将数据框导出到 Stata

我们将遵循相同的步骤,创建一个数据框,然后调用该方法,但将参数path作为参数传递给该方法。

import pandas as pd
dct={'Groceries':['Mangoes','Apples','Oranges','Tomatoes','Potatoes'],
'cost':[80,100,70,60,30],
'No_of_units':[2,3,4,1,1]}
df=pd.DataFrame(dct)
df

为了简要解释代码,我们初始化了一个名为 dct 的变量来存储芒果、苹果、橙子、西红柿和土豆等杂货的字典,它们各自的成本以及购买的单位数量。

然后将该字典传递给渲染数据框的方法。该pd.DataFrame数据框存储在名为 df 的变量中。

该数据框打印在下一行。

杂货数据框

下一步是将此数据框导出到 dta 文件中。

df.to_stata(path='Groceries.dta')

path作为方法的参数提供df.to_stata我们还指定了要写入输出的文件名。

带路径的数据框到 Stata

我们甚至可以借助另一种方法预览 dta 文件 – pd.read_stata.

st=pd.read_stata('Groceries.dta')
st

创建一个名为 st 的新变量来读取 stata 文件。新创建的内容groceries.dta作为输入传递给 read 方法,

在下一行中,我们将打印 stata 格式。

读取Stata文件

将日期数据框导出到 Stata

在此示例中,我们将获取不同日期的数据框并使用该convert_dates函数将其导出到 dta 文件。

请参阅本文以了解如何更改日期时间格式。

import pandas as pd
df = pd.DataFrame({'date': pd.to_datetime(['2023-01-01', '2023-02-02', '2023-03-03'])})
df

在此代码中,我们尝试创建一个包含格式必须支持的一些日期的数据框datetime因此我们过去常常pd.to_datetime让它们兼容。

日期数据框

在接下来的步骤中,我们尝试使用该函数将日期时间格式转换为Stata的内部日期格式convert_dates

df.to_stata('dates.dta', convert_dates={'date': 'tc'},data_label='Dates')

在上面的代码中,我们使用了convert_dates并将选项指定为 tc,这意味着 Stata 格式的日期将采用日历的形式。

当您借助 Stata 软件查看数据文件时,可以在数据文件中注意到日期时间的这种变化。

使用转换日期将数据框转换为 Stata

结论

总而言之,我们已经了解了 Stata 软件如何帮助研究人员和院士存储、操作和可视化他们的数据,并为报告任务提供帮助。

我们还观察到 Pandas 库有一个特殊的方法df.to_stata,用于将数据帧导出为 Stata 格式。stata 文件必须以 dta 扩展名保存。

我们了解数据框架的基础知识,并尝试从列表和字典创建数据框架。我们也分别看到了他们的例子。

接下来,我们在讨论中探讨了该方法的语法。我们已经彻底理解了语法及其参数。

来看示例,首先,我们获取了一个 CSV 数据集,将其读取到数据框中,然后从数据框中渲染出 dta 文件。

接下来,我们从字典创建一个数据框,并指定我们希望使用参数写入输出的路径path

Stata 软件不仅仅接受任何日期或时间。它具有在文件中包含日期的特定选项。在第三个示例中,我们使用该pd.to_datetime方法创建了一个包含日期的数据框,然后在convert_dates.

参考

这篇文章中使用的方法可以在 Pandas 官方文档中找到。

你可以访问Stata官网进行实验。

您可以从此处下载本文中使用的 CSV 数据。