Визуализация данных о численности персонала за определенный период времени

У меня есть вопрос о визуализации данных, по которому я хотел бы получить информацию. В настоящее время я использую python pandas для очистки набора данных, а затем загружаю его в SISENSE для использования. Что я пытаюсь сделать, так это визуализировать активные задания, сгруппированные по неделям / месяцам на основе дат начала и окончания конкретных заданий. Например, у меня есть набор заданий со следующими датами начала, организованный в строки внутри фрейма данных:

Идентификатор задания Дата начала Дата окончания

Иов 1 25.05.2020 07.06.2020

Иов 2 25.05.2020 31.05.2020

На неделю 25.05.2020 у меня две активные работы, а на неделю 01.06.2020 у меня 1 активная работа. Визуализация должна выглядеть как гистограмма с осью x, отображающей период недели / времени, а осью y - количеством активных заданий.

Как мне лучше всего организовать это во фрейме данных и визуализировать его?

2 ответа

Что -то типа

    df = pd.DataFrame({'Job ID': [1,2], 'Start Date': ['5/25/2020', '5/25/2020'], 'End Date': ['6/7/2020', '5/31/2020']})

Затем вы можете применить функцию для создания нового столбца "начало недели" - посмотрите здесь решение в python Получить дату начала недели (понедельник) из столбца даты в Python (pandas)?

import datetime as dt
# Change 'myday' to contains dates as datetime objects
df['Start Date'] = pd.to_datetime(df['Start Date'])  
# 'daysoffset' will container the weekday, as integers
df['daysoffset'] = df['Start Date'].apply(lambda x: x.weekday())
# We apply, row by row (axis=1) a timedelta operation
df['Week Beginning'] = df.apply(lambda x: x['Start Date'] - dt.TimeDelta(days=x['daysoffset']), axis=1)

а затем groupby в начале этой недели

counr = df.groupby(df['Week Beginning']).sum()

После этого вы можете построить график, используя

count_by_job_id = count['Job ID']
pd.DataFrame(count_by_job_id).plot.bar()

Чтобы упростить эту работу, вам понадобится собственный SQL в Sisense elasticube. Затем вы присоединитесь к своей таблице фрейма данных с dim_dates (файл Excel по ссылке ниже)

Это похоже на сценарий, описанный здесь: https://support.sisense.com/hc/en-us/articles/230644208-Date-Dimension-File

Ваш собственный SQL будет примерно таким:

  Select JobID, 
         CAST(startdate as date) as Startdate, 
         CAST(enddate as date) as Enddate,
         C.RECORD_DATE AS week_start
  FROM JOB j
  JOIN tbl_Calendar C ON c.RECORD_DATE BETWEEN j.StartDate and j.EndDate
  WHERE DATENAME(DW,C.RECORD_DATE) = 'MONDAY'

Затем вы можете просто создать столбчатую диаграмму и перетащить поля week_start(вы можете отформатировать несколько разных способов) в разделе категорий и сбросить количество полей (JOBID) в разделе значений.

Другие вопросы по тегам