【问题标题】:How to read SPSS aka (.sav) in Python如何在 Python 中读取 SPSS aka (.sav)
【发布时间】:2020-07-17 22:59:55
【问题描述】:

这是我第一次使用 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!

【问题讨论】:

    标签: python pandas jupyter-notebook metadata spss


    【解决方案1】:

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

    • 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

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多