python - 如何在 Python 中读取 SPSS aka (.sav)

这是我第一次使用 Jupyter Notebook 分析调查数据(.sav 文件),我想以一种显示元数据的方式阅读它,以便我可以将答案与问题联系起来。我在这个领域完全是新手,所以非常感谢您的帮助!

import pandas as pd
import pyreadstat
df, meta = pyreadstat.read_sav('./SimData/survey_1.sav')
type(df)
type(meta)
df.head()

如果我需要额外的步骤才能看到元数据,请 lmk!

最佳答案

元对象包含您要查找的元数据。最有用的属性可能是:

  • meta.column_names_to_labels :它是一个字典,其中包含您在 pandas 数据框中的列名到标签,这意味着对每列含义的更长解释
print(meta.column_names_to_labels)
  • meta.variable_value_labels:一个字典,其中键是列名,值是一个字典,其中键是您在数据框中找到的值,值是值标签。
print(meta.variable_value_labels)

例如,如果您有一个值为 1 和 2 的“性别”列,您可以得到: {“性别”:{1:“男”,2:“女”}} 这意味着值 1 是男性,2 是女性。 如果您传递参数 apply_value_formats ,您可以从头开始获取这些标签:

df, meta = pyreadstat.read_sav('survey.sav', apply_value_formats=True)

您还可以随时使用 pyreadstat.set_value_labels 将这些值格式应用于您的数据框,它会返回带有标签的数据框副本:

df_copy = pyreadstat.set_value_labels(df, meta)
  • meta.missing_ranges :您获得缺失值的标签。假设在某个变量的调查中,他们编码 1 表示是,2 表示否,然后是混淆值,5 表示未回答,6 人不在家。当您默认读取数据帧时,您将获得值 1 和 2 以及 NaN(缺失)而不是 5 和 6。您可以传递参数 user_missing 以获取 5 和 6,meta.missing_ranges 会告诉您 5 和 6 缺失值。 Variable_value_labels 会给你“没有回答”和“人不在家”标签。
df, meta = pyreadstat.read_sav("survey.sav", user_missing=True)
print(meta.missing_ranges)
print(meta.variable_value_labels)

这些是对您的案例有用的潜在信息片段,不一定所有这些片段都会出现在您的数据集中。

更多信息在这里:https://ofajardo.github.io/pyreadstat_documentation/_build/html/index.html

https://stackoverflow.com/questions/62962795/

相关文章:

python - Pyspark - 根据一行中的条件过滤掉多行

r - 错误 : Must subset columns with a valid subscrip

python - 在循环中的每个字符后插入句点

reactjs - React Native 删除 Flatlist 中的底部空间

python - Jupyter notebook 感叹号参数

python - matplotlib plt.ylim 引发错误列表对象不可调用

python - 如何在python中解析html表格

asp.net-mvc - 如何将 Azure Active Directory 身份验证添加到 R

amazon-web-services - 在 AWS 的子网中检索私有(private) IP 地

list - 如何 List.sum 一个列表(也许是 float )?