Расширение набора данных на основе столбцов - PullRequest
0 голосов
/ 23 октября 2019

У меня есть фрейм данных:

I_Code  Date_1  Date_2
2   14/09/2019  16/08/2019
2   14/09/2019  17/08/2019
2   14/09/2019  19/08/2019
2   14/09/2019  20/08/2019
2   14/09/2019  21/08/2019
2   14/09/2019  21/08/2019
2   14/09/2019  21/08/2019
2   14/09/2019  22/08/2019
2   14/09/2019  23/08/2019
2   14/09/2019  23/08/2019
2   14/09/2019  24/08/2019
2   14/09/2019  27/08/2019
2   14/09/2019  28/08/2019
2   14/09/2019  28/08/2019
2   14/09/2019  29/08/2019
2   14/09/2019  04/09/2019
2   14/09/2019  04/09/2019
2   14/09/2019  04/09/2019
2   14/09/2019  05/09/2019
2   14/09/2019  08/09/2019
2   14/09/2019  10/09/2019
2   14/09/2019  10/09/2019
2   14/09/2019  12/09/2019
2   03/09/2019  04/08/2019
2   03/09/2019  05/08/2019
2   03/09/2019  06/08/2019
2   03/09/2019  07/08/2019
2   03/09/2019  07/08/2019
2   03/09/2019  08/08/2019
2   03/09/2019  08/08/2019
2   03/09/2019  09/08/2019
2   03/09/2019  13/08/2019
2   03/09/2019  13/08/2019

В настоящее время у меня есть 800 записей в фрейме данных. Я хочу расширить этот набор данных для записей в 20 тыс. С ограничением на Date_2, чтобы количество записей на Date_2 (на совокупном месячном уровне) соответствовало тренду логарифмического увеличения, то есть возрастанию, а затем стагнации. (Изображение прилагается) enter image description here

Обратите внимание, что график является лишь примером.

ранее мне удалось получить график с помощью следующей функции:

    def random_dates(start, end, starting_prob = 0.1, ending_prob = 1.0, date_format = '%d-%m-%y', num_samples = 20000):
        start_date = datetime.datetime.strptime(start, date_format)
        end_date = datetime.datetime.strptime(end, date_format)

        # Get days between `start` and `end`
        num_days = (end_date - start_date).days

        linear_probabilities = expon.cdf(np.linspace(starting_prob, ending_prob, num_days), scale = 0.3)

        # normalize probabilities so they add up to 1
        linear_probabilities /= np.sum(linear_probabilities)

        rand_days = np.random.choice(num_days, size = num_samples, replace = True,
                 p = linear_probabilities)

        rand_date =  [(start_date + datetime.timedelta(int(rand_days[ii]))).strftime(date_format) 
                      for ii in range(num_samples)]

        # return list of date strings
        return rand_date

start_date = '02-08-19'
end_date = '29-09-19'
date_format = '%d-%m-%y'
sample_count = 20000

date_2 = random_dates(start_date, end_date, starting_prob = 0.1, ending_prob = 1.0, date_format=date_format, num_samples=sample_count)

Но теперь другие переменные, т.е. date_1 и I_Code, также связаны с date_2. У них нет таких ограничений.

Может кто-нибудь помочь с тем же.

Спасибо

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