【问题标题】:Is there a way to create 10 millions row of random dataset in python?有没有办法在 python 中创建 1000 万行随机数据集?
【发布时间】:2022-11-18 23:44:47
【问题描述】:
我想创建包含 1000 万行的随机数据集。不幸的是,我找不到创建具有特定范围的日期列的方法(例如 01.01.2021-31.12.2021)。
我尝试使用 oracle sql,但找不到执行此操作的方法。我可以在 excel 中做一些事情,但 excel 无法处理 1000 万行数据。因此,我虽然 Python 可能是做到这一点的最佳方式,但我无法弄清楚。
【问题讨论】:
标签:
python
pandas
oracle
numpy
dataset
【解决方案1】:
结合使用pandas.date_range和numpy.random.choice:
df = pd.DataFrame(
{
'date': np.random.choice(
pd.date_range('2021-01-01', '2021-12-31', freq='D'), size=10_000_000
)
}
)
例子:
date
0 2021-04-05
1 2021-02-01
2 2021-09-22
3 2021-10-17
4 2021-04-28
... ...
9999995 2021-07-24
9999996 2021-03-15
9999997 2021-07-28
9999998 2021-11-01
9999999 2021-03-20
[10000000 rows x 1 columns]
【解决方案2】:
大多数 python IDE 都会附带一个你需要的随机模块,因为 python 没有内置随机函数。
要获得 10000000 行数据,像下面这样的循环可能会起作用。
#Imports the random module
import random
#Creates a loop that will run 10 million times
for i in range(0,10000000):
#Prints a random number between one and ten on each new row
print(random.randint(0,10)
这需要一段时间,但如果这是您想要的,它会起作用吗?
【解决方案3】:
我想创建包含 1000 万行的随机数据集。不幸的是,我找不到创建具有特定范围的日期列的方法(例如 01.01.2021-31.12.2021)。
我尝试使用 oracle sql,但找不到执行此操作的方法。
您可以将 DBMS_RANDOM 包与分层查询一起使用:
SELECT DATE '2021-01-01'
+ DBMS_RANDOM.VALUE(0, DATE '2022-01-01' - DATE '2021-01-01')
AS random_date
FROM DUAL
CONNECT BY LEVEL <= 10000000;
哪些输出:
| RANDOM_DATE |
| 2021-11-25 00:53:13 |
| 2021-08-28 22:33:35 |
| 2021-02-11 23:28:50 |
| 2021-12-10 05:39:00 |
| 2021-01-10 22:02:47 |
| ... |
| 2021-01-01 16:39:13 |
| 2021-10-30 20:58:21 |
| 2021-03-14 06:27:34 |
| 2021-10-11 00:24:03 |
| 2021-04-20 03:53:54 |
fiddle