我在Jupyter笔记本中编写了一个脚本,用于从Excel文件中读取模型规格(应该预测什么,从什么变量,使用什么过滤逻辑),使用xgboost运行一系列模型,并将结果写入Excel。对于多个不同的数据集,它工作得很好,但是对于一个特定的数据集,每次我尝试运行它时,我都会得到以下消息:
The kernel appears to have died. It will restart automatically.
我尝试在Spyder中运行相同的脚本,但收到了以下消息:
Assertion failed!
File: pyreadstat/_readstat_parser.c, Line 12686 Expression:
!PyErr_Occurred()
pyreadstat是我用来从SPSS数据文件中读取变量标签的模块,所以这让我相信使用pyreadstat可能有问题
回到Jupyter笔记本中我的原始脚本,我注释掉了与pyreadstat有关的任何内容,我仍然收到内核死亡消息。但是,我仍然可以运行我的脚本,而不会出现其他数据文件的问题&;模型规格——有无pyreadstat都被注释掉了
事实上,这段代码已经工作了5种不同的配置,但不是这1,这让我觉得这个文件有些不同,但我不知道如何确定它是什么,特别是因为Spyder警告让我认为它是pyreadstat,但是删除pyreadstat会导致问题继续存在,无论是在Jupyter还是;Spyder(在Spyder中,一旦我注释掉pyreadstat,它就无法连接到内核)
EDIT:我还尝试添加一些print语句来查看内核在哪里消亡,但它在运行任何东西之前就消亡了——我调用的函数的最开始处的print语句甚至都不会执行
编辑:我刚刚发现这个问题与熊猫有关。我独立运行函数中的每条语句,这一行是内核死亡的那一行:
df = pd.read_spss("C:/Users/me/Desktop/file.sav", convert_categoricals=False)
查看SPSS文件本身,其中一个变量是日期。我的其他数据文件中没有一个变量是日期,所以我将其格式更改为字符串,当我这样做时,内核没有消亡,而是出现了一个错误。有趣的是,它看起来像熊猫。read_spss使用pyreadstat:
ReadstatError Traceback (most recent call last)
<ipython-input-3-e8f001d12898> in <module>
1 import pandas as pd
2
----> 3 df = pd.read_spss(fileloc, convert_categoricals=False)
~\Anaconda3\lib\site-packages\pandas\io\spss.py in read_spss(path, usecols, convert_categoricals)
41
42 df, _ = pyreadstat.read_sav(
---> 43 path, usecols=usecols, apply_value_formats=convert_categoricals
44 )
45 return df
pyreadstat\pyreadstat.pyx in pyreadstat.pyreadstat.read_sav()
pyreadstat\_readstat_parser.pyx in pyreadstat._readstat_parser.run_conversion()
pyreadstat\_readstat_parser.pyx in pyreadstat._readstat_parser.run_readstat_parser()
pyreadstat\_readstat_parser.pyx in pyreadstat._readstat_parser.check_exit_status()
ReadstatError: Unable to open file
但是现在我有点不知所措,因为我找不到这个文件与其他SPSS文件有什么不同,因为日期是字符串
我已经找到了答案,而且它是模糊的
这个SPSS文件中有一个变量,有290个值标签。如果在将该变量引入Python之前删除SPSS文件中的该变量,那么一切都会按预期运行
我的问题编辑中提到的日期格式的变量根本不是问题,一旦我删除了带有很多值标签的变量,导入就可以了
相关问题 更多 >
编程相关推荐