2017-05-18 5 views
1

날짜가 & 인 합성 데이터를 생성하려고합니다. 아래에 언급 된 프로그램에 필요한 날짜/시간 섹션을 어떻게 포함시킬 수 있습니까?날짜 및 시간 범위가있는 합성 데이터

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) 

출력에 다른 열에 두 개의 열을 포함시킵니다.

감사합니다. 미리 감사드립니다.

답변

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))) 
+0

답변 해 주셔서 감사합니다. 임의의 데이터를 생성하려면 datetime과 location이 모두 필요합니다. 특정 위치의 범위에서 나는 datetime을 포함시키고 자하는 질문에 게시 된 코드를 얻을 수 있습니다. –

+0

@SitzBlogz 출력 파일에 random_date를 포함시키는 방법을 의미합니까? – umutto

+0

예 .. 현재 출력에 datetime을 두 열'startdatetime, enddatetime'으로 포함시킬 수 있습니다. 명확하게 사과하지 않았습니다. –