【问题标题】: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_rangenumpy.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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-17
          • 1970-01-01
          • 2021-09-24
          • 2021-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多