我怎样才能知道为什么我的Jupyter内核正在消亡?

2024-05-16 23:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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文件有什么不同,因为日期是字符串


Tags: 文件in脚本parserconvertdfreadjupyter
1条回答
网友
1楼 · 发布于 2024-05-16 23:20:13

我已经找到了答案,而且它是模糊的

这个SPSS文件中有一个变量,有290个值标签。如果在将该变量引入Python之前删除SPSS文件中的该变量,那么一切都会按预期运行

我的问题编辑中提到的日期格式的变量根本不是问题,一旦我删除了带有很多值标签的变量,导入就可以了

相关问题 更多 >