【问题标题】:Synthetic Data with range of date & time具有日期和时间范围的合成数据
【发布时间】:2017-10-17 19:35:28
【问题描述】:

我正在尝试生成具有日期和时间范围的合成数据。如何在下面提到的程序中包含所需的日期时间部分?

import random
import sys
import math

latitude = 0.794501
longitude = -0.752568
file_n = 'random_lat_lon.csv'

def generate_random_data(lat, lon, num_rows, file_name):
    with open(file_name, 'w') as output:
        for _ in xrange(num_rows):
            hex1 = '%012x' % random.randrange(16**12)                
            flt = float(random.randint(0,100))
            dec_lat = random.random()/100
            dec_lon = random.random()/100
            output.write('%s,%.1f,%.6f,%.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat))

generate_random_data(latitude, longitude, 600, file_n)

在输出的其他列中包含两列Start_DateTime & End_DateTime

感谢帮助,在此先感谢。

【问题讨论】:

    标签: python datetime geolocation synthetic random-data


    【解决方案1】:

    您可以使用datetime.timedelta 生成日期范围之间的随机日期,创建一个生成随机开始和结束日期的函数:

    import datetime
    import random
    
    def get_random_dates():
        start = datetime.date(2007, 1, 1)
        end = datetime.date(2017, 1, 1)
        d1 = start + datetime.timedelta(
            seconds=random.randint(0, (end - start).total_seconds()))
        d2 = start + datetime.timedelta(
            seconds=random.randint(0, (end - start).total_seconds()))
    
        # make sure start_date is before end_date
        return sorted([d1, d2])
    

    然后你可以通过调用函数来获得随机的开始和结束时间:

    startdatetime, enddatetime = get_random_dates()
    

    并将这些与其他随机生成的数据一起写入您的 csv 文件:

    output.write('%s,%.1f,%.6f,%.6f,%s,%s \n' % (hex1.lower(), 
                                           flt, 
                                           lon+dec_lon, 
                                           lat+dec_lat,
                                           str(startdatetime),
                                           str(enddatetime)))
    

    【讨论】:

    • 感谢您的回答。我需要日期时间和位置来生成随机数据。从一系列特定位置,我可以获取问题中发布的代码,我想在其中包含日期时间。
    • @SitzBlogz 你的意思是如何在输出文件中包含 random_date ?
    • 是的..在当前输出中包含日期时间,作为两列,startdatetime, enddatetime 可能没有提到它,为此道歉..
    • 非常感谢..我将代码集成到我的矿井中并检查..
    猜你喜欢
    • 2016-08-22
    • 2018-06-17
    • 2021-06-26
    • 1970-01-01
    • 2021-09-21
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多