2017-05-18 21 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) 

出力に他の列に沿ってStart_DateTime & End_DateTimeの2つの列を含めます。

ありがとうございました。

答えて

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を現在の出力に2列、 'startdatetime、enddatetime'を含めて明示的に言及していないかもしれません.. –

関連する問題