创建在 Python 中有 % 重叠的样本数据(使用 faker)

Creating sample data (with faker) that has a % overlap in Python

我有 2 tables - 客户和购买

我使用 faker 为客户 table 创建了 100 个条目,其中包含各种详细信息,其中一个 customer_numbers 是唯一的 5 位数字。

我现在想创建一个 table 的 100 次购买,它重复使用 customer_numbers 的列表,但要确保至少有 25% 的重复记录。

我不确定确保 25% 要求的最佳方法。

我最初创建了一个自定义函数,它对我的​​原始列表进行重新采样(使用 faker.random_elements()),并且只获取新列表中的前 100 条记录,但这并不能确保至少有 25% 的重叠。

是否有我可以使用的内置函数?如果不是,重新创建一个与现有列表有 25% 重叠的列表背后的数学原理是什么。

这里的代码似乎不太相关,但如果您需要示例,请告诉我。

我使用的解决方案(不是唯一的解决方案)

  1. 计算出要丢弃的样本数list_size-(列表大小/(1*重复率))
  2. 从客户列表中删除样本数量并从减少的列表中重新抽样我删除的样本数量(替换)
  3. 合并了缩短和重采样的列表

此解决方案确保 len(原始列表) = len(set((新列表)))*1.25

我能想到的解决方案如下:

  • 随机选择您的 'guarantee' 在 25 和 100 之间重叠的数字
  • 从现有列表中随机选取 'guarantee' 条记录
  • 随机选取剩余的所需记录(不考虑现有列表的存在)

这是因为您的 customer_numbers 由 5 位数字组成,因此随机选择这 5 位数字 100 次通常不会与只有 100 项的现有列表创建任何重复项。所以我认为使用 'guarantee' 重叠百分比的方法会相当有效。另外,我认为在 Python.

中执行上述步骤并不困难