具有日期和范围的合成数据时间

时间:2017-05-18 06:25:11

标签: python datetime geolocation synthetic random-data

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

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

感谢您的帮助,请提前感谢。

1 个答案:

答案 0 :(得分: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)))