【问题标题】:How to use a consistent random sample in Python Pandas?如何在 Python Pandas 中使用一致的随机样本?
【发布时间】:2017-07-19 12:58:49
【问题描述】:

下面我有一个代码,其中读取 csv 文件并从文件中随机抽取700 样本。 我需要对多个文件执行此操作,但如果我遍历文件,每个文件的样本(因为它是随机的)将是不同的,而我希望在随机生成后保持相同。

df = pd.read_csv(file.csv, delim_whitespace=True)
df_s = df.sample(n=700)

我的想法是获取行号,然后将其传递给下一个文件,但这似乎不是很优雅。

你知道这个问题有什么好的解决方案吗?

澄清

文件长度不同,但有最小文件长度:750。

期望的结果示例

df1 = pd.read_csv(file1.csv, delim_whitespace=True)
df_s1 = df1.sample(n=700) # choose random sample

df2 = pd.read_csv(file2.csv, delim_whitespace=True)
df_s2 = df2.sample(n=700) # use same random sample as above

【问题讨论】:

  • 它们的形状一样吗?
  • 它们的列数相同,但行数不同

标签: python pandas random


【解决方案1】:

我认为您可以在sample 中使用random_state 参数,但它仅在所有文件大小相同时才有效,因此将参数nrows 添加到read_csv

df = pd.read_csv(file.csv, delim_whitespace=True, nrows=750)
df_s = df.sample(n=700, random_state=123)

【讨论】:

  • np.random.seed(123) 如何提供帮助,因为我没有看到它被分配到任何地方。你能详细说明一下吗? .sample 也有一个选项 random_state,但我不确定它的作用。
  • 好的,请说明如何使用它,因为我都试过了,但是当我从相同的数据框或不同的文件生成样本时,我无法获得相同的样本大小。
  • 我更新了一条澄清评论,因为长度虽然不同,但有最小长度。这些问题,让我觉得它实际上比我自己想象的要复杂。
猜你喜欢
  • 2015-11-27
  • 2012-01-31
  • 2017-07-18
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 2016-10-31
  • 1970-01-01
相关资源
最近更新 更多