与大Pandas同台竞技

2024-05-03 20:10:56 发布

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

我正在尝试从熊猫数据帧制作一个训练和测试集。当我跑步时:

sss = StratifiedShuffleSplit(df['event'], n_iter=3, test_size=0.2)

我得到了一个错误:

ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of labels for any class cannot be less than 2.

但是情况并非如此,因为当我运行时:

^{pr2}$

我得到:

irrelevant    5030
event         394

你知道是什么引起这个问题吗?在


Tags: the数据testeventdfsize错误跑步
1条回答
网友
1楼 · 发布于 2024-05-03 20:10:56

正如您在对问题的评论中所提到的,是空行/空行导致了错误。在

df['event'].value_counts()没有显示空行的原因是^{}接受可选参数dropna=True;此参数默认忽略所有null/NaN/np.nan/None值。下面是一个简单的例子:

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: df = pd.DataFrame(columns=['a'])

In [4]: df['a'] = ['so', 'map', 'map', 'lol', np.nan, 'so', 'so', 'so', 'lol', np.nan]

In [5]: df['a'].value_counts()
Out[5]: 
so     4
lol    2
map    2
dtype: int64

In [6]: df['a'].value_counts(dropna=False)
Out[6]: 
so     4
lol    2
map    2
NaN    2
dtype: int64

6行的输出中,您可以看到NaN作为另一个类出现,尽管在默认情况下(输出到5)它不在那里。如果您将这个可选参数作为False传入,那么您将提前获取空行。在

我希望这有意义!在

相关问题 更多 >