Визуализация данных о численности персонала за определенный период времени - PullRequest
0 голосов
/ 27 мая 2020

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

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

Задание 1 25/5/2020 6/7 / 2020

Job 2 25.05.2020 31.05.2020

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

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

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Вам понадобится специальная SQL в эластичной трубке Sisense, чтобы облегчить эту работу. Затем вы присоединитесь к своей таблице фрейма данных с 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 ) в разделе значений.

enter image description here

0 голосов
/ 27 мая 2020

что-то вроде

    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()
...