pandas value_count() 每次重新启动笔记本时都显示不同的值
pandas value_count() is showing different values every time I restart the notebook
每次我重新启动 jupyter-lab
笔记本时,value_count()
都会显示不同的值。
bid = customers['BasketID']
bid.value_counts()
这是两次执行的结果:
576339 542
573585 535
579196 533
580727 529
578270 442
...
563453 1
C567706 1
548001 1
C546895 1
574519 1
Name: BasketID, Length: 24627, dtype: int64
576339 542
573585 535
579196 533
580727 529
578270 442
...
C562808 1
575205 1
549004 1
C542991 1
565577 1
Name: BasketID, Length: 24627, dtype: int64
如您所见,总是有不同的数字以字母开头。
由于在笔记本中我必须引用这些数字之一,所以我不能让它在每次迭代时都改变。
有没有办法使方法的输出具有确定性?
我猜想这种奇怪的行为是由于该方法使用的排序算法造成的。也许有办法 see/set 算法使用的随机数生成器的种子?
value_counts
默认情况下有 sort=True
,这很可能使用快速排序进行排序。您可以尝试使用 sort=False
禁用它,其中 returns 具有排序索引的系列:
bid.value_counts(sort=False)
如果您仍然想要排序的系列,您可以使用 sort_values
手动排序并使用稳定的 mergesort
方法:
bid.value_counts(sort=False).sort_values(ascending=False, kind='mergesort')
每次我重新启动 jupyter-lab
笔记本时,value_count()
都会显示不同的值。
bid = customers['BasketID']
bid.value_counts()
这是两次执行的结果:
576339 542
573585 535
579196 533
580727 529
578270 442
...
563453 1
C567706 1
548001 1
C546895 1
574519 1
Name: BasketID, Length: 24627, dtype: int64
576339 542
573585 535
579196 533
580727 529
578270 442
...
C562808 1
575205 1
549004 1
C542991 1
565577 1
Name: BasketID, Length: 24627, dtype: int64
如您所见,总是有不同的数字以字母开头。
由于在笔记本中我必须引用这些数字之一,所以我不能让它在每次迭代时都改变。
有没有办法使方法的输出具有确定性?
我猜想这种奇怪的行为是由于该方法使用的排序算法造成的。也许有办法 see/set 算法使用的随机数生成器的种子?
value_counts
默认情况下有 sort=True
,这很可能使用快速排序进行排序。您可以尝试使用 sort=False
禁用它,其中 returns 具有排序索引的系列:
bid.value_counts(sort=False)
如果您仍然想要排序的系列,您可以使用 sort_values
手动排序并使用稳定的 mergesort
方法:
bid.value_counts(sort=False).sort_values(ascending=False, kind='mergesort')