我正在尝试生成带有日期和时间的合成数据。时间范围。如何在下面提到的程序中包含所需的日期时间部分?
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
。
感谢您的帮助,请提前感谢。
答案 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)))