【问题标题】:How can i read in file formats as a different file format? e.g. - SAV as CSV如何以不同的文件格式读取文件格式?例如- 保存为 CSV
【发布时间】:2021-02-11 03:58:15
【问题描述】:

所以在我的工作中,我们必须使用 .sav 文件(SPSS 文件)。出于标准化目的的原因。 我很好奇我是否可以将 SPSS/.sav 文件作为 csv 读入 pandas 并基本上绕过将其作为 sav 读入?

因此,例如,当我读入文件然后转换为 csv 时,我通常会这样做:

df = pd.read_spss('filepath.sav')
df.to_csv('filepath.csv')
df = pd.read_csv('filepath.csv')

这是极其低效且缓慢的,因为读取 .sav 文件是一个缓慢/耗时的过程。

所以我想知道的是,我可以将 .sav 文件读取为 .csv 文件而无需先将其作为 .sav 读取吗?

【问题讨论】:

  • 目前存在一个关于读取 spss 文件性能的未解决问题:github.com/Roche/pyreadstat/issues/80。请提供示例文件以进行调查。否则,我认为您的要求是不可能的:spss 和 csv 文件非常不同,因此适用于 csv 的程序对您没有帮助。您可以做的是将 spss 文件保存为 csv 副本并将 csvs 用于您的工作。
  • pandas read_spss 在后台使用 pyreadstat。 1.0.3 版本的 pyreadstat 提高了性能,因此您可以再次尝试将它 git 到 pandas.read_spss。此外 pyreadstat 现在有一个新版本 read_file_multiprocessing 可以在并行进程中读取文件,从而使事情变得更好。要使用后者,您需要使用 pyreadstat,因为 pandas 不会公开该功能。

标签: python pandas spss


【解决方案1】:

pd.read_spss 不会像 pd.read_csv 一样返回 DataFrame 吗?

【讨论】:

  • 可以,但我正在尝试使用 dask/modin/ray 之类的插件来加快处理速度,而这些插件不允许使用 .sav 文件
  • 这个插件是否使用 pickle 读取 csv 功能,你可以编辑。或者它是否使用您可以从spss 提供的DataFrame。我问第二个是因为您将结果存储在我相信的数据帧中?然后你可能会提供给插件。还是完全是另外一回事?
  • 我不这么认为。真的,我愿意尝试任何方法来更快地读取 sav 文件。我会/可以腌制阅读sav的吗?
  • 你到底在做什么?您是否使用 DataFrame 参数调用函数?我不知道你想做什么不同的事情。如果您只是 pd.read_spss(PATH) 为您提供与包含相同数据的 .csv 文件相同的数据输出。它只是看起来与您查看我想的文件不同。
【解决方案2】:

您可能对this topic 感兴趣。简而言之,它指向 C 库 ReadStat 的包装器,它读取 SPSS 文件的速度比 pandas 快。

他们的 GitHub 存储库的链接是 https://github.com/Roche/pyreadstat

【讨论】:

  • 我使用 pyreadstat,但我正在尝试将 .sav 文件作为 .csv 文件读取,因此我可以使用 modin/ray/dask 等插件。
猜你喜欢
  • 2022-08-23
  • 1970-01-01
  • 2011-10-24
  • 2014-03-11
  • 1970-01-01
  • 2013-05-18
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多