有没有办法为所有熊猫功能设置随机状态?

时间:2018-09-17 20:37:31

标签: python pandas numpy

正如标题所示,为每个与随机性相关的熊猫函数设置random_state似乎是非常有道理的。有什么办法只设置一次以确保所有功能都设置为随机状态?

1 个答案:

答案 0 :(得分:3)

Pandas函数通过调用pd.core.common._random_state来获取随机源,该参数接受单个state参数,默认为None。从其文档中:

Parameters
----------
state : int, np.random.RandomState, None.
    If receives an int, passes to np.random.RandomState() as seed.
    If receives an np.random.RandomState object, just returns object.
    If receives `None`, returns np.random.
    If receives anything else, raises an informative ValueError.
    Default None.

因此,如果它获得None(这是调用者的random_state的默认值),它将返回np.random模块本身:

In [247]: pd.core.common._random_state(None)
Out[247]: <module 'numpy.random' from 'C:\\Python\\lib\\site-packages\\numpy\\random\\__init__.py'>

it 将使用全局numpy状态。所以:

In [262]: np.random.seed(3)

In [263]: pd.Series(range(10)).sample(3).tolist()
Out[263]: [5, 4, 1]

In [264]: pd.DataFrame({0: range(10)}).sample(3)[0].tolist()
Out[264]: [3, 8, 2]

In [265]: np.random.seed(3)

In [266]: pd.Series(range(10)).sample(3).tolist()
Out[266]: [5, 4, 1]

In [267]: pd.DataFrame({0: range(10)}).sample(3)[0].tolist()
Out[267]: [3, 8, 2]

如果任何方法不遵守此规定,那就是一个错误。