Как создать фрейм данных, который содержит случайные даты и время за год - PullRequest
0 голосов
/ 14 июня 2019

Итак, я пытаюсь написать некоторый код, который случайным образом генерирует год дат. Мне нужен один 30-часовой период в каждом месяце. В каждом из этих 30-часовых периодов мне нужны случайные периоды по 120 минут.

Я попытался использовать for loop и pandas.date_range и быстро понял, что должен быть более простой способ.


def date_generator(self):
        datelist = pd.date_range('2021-01-01', periods=525600, freq='T')  # Generate Dates

        return datelist

Вот список дат с минутами на целый год. Я просто не могу обернуть голову, как решить вышеуказанную проблему .. какие идеи? Я не ищу кого-то, кто мог бы зашифровать его, просто укажи мне правильное направление. Благодарю.

1 Ответ

0 голосов
/ 17 июня 2019

Так что я знаю, что это был случайный вопрос и, вероятно, он никому не пригодится, но на всякий случай я сам ответил на него. Следующий код делает то, что я хотел.

import time
import random

class launch_date_generator():

    def __init__(self):
        random.seed()

        self.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
                       'November', 'December']

        self.months_numerical = range(1, 13)
        self.hours = range(7, 18)
        self.minutes = range(0, 60)
        self.ampm = ['AM', 'PM']

        # for n in self.months_numerical:
        #    print(n)

        self.monthsdays = {'January': 31, 'February': 28, 'March': 31, 'April': 30, 'May': 31, 'June': 30, 'July': 31,
                           'August': 31, 'September': 30, 'October': 31, 'November': 30, 'December': 31}



    def date_generator(self):

        date_list=[]
        date_list_index=0

        for x in self.months_numerical:
            chosen_month_days= range(1, self.monthsdays[self.months[x-1]])
            # print('Chosen Month: ', x)
            # print('Chosen month day: ', chosen_month_days[x-1])
            starting_day = random.choice(chosen_month_days)

            # print('Initial Starting day: ', starting_day)

            if abs(starting_day-self.monthsdays[self.months[x-1]]) <= 5:
                starting_day=starting_day-5
            day_range = range(starting_day, starting_day+5)

            for y in day_range:
                starting_hour = random.choice(self.hours)


                hour_range = range(starting_hour, starting_hour+2)


                for z in hour_range:
                    for k in self.minutes:

                        date_list.append(str(x)+"-"+str(y)+"-2020"+"  "+str(z)+":"+str(k)+":00")



        date_list_dataframe = pd.DataFrame(date_list, columns=["Dates"])

        return date_list_dataframe





run1=launch_date_generator()

datelist1 = run1.date_generator()


datelist1.to_csv(r'/users/documents/test1.csv')


##################################

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...