【问题标题】:Visualizing headcount data over a particular time period可视化特定时间段内的员工人数数据
【发布时间】:2020-09-15 00:17:17
【问题描述】:

我有一个数据可视化问题,希望得到一些意见。我目前正在使用 python pandas 清理数据集,然后将其上传到 SISENSE 以供使用。我想要做的是可视化根据特定任务的开始和结束日期按周/月分组的活动工作。例如,我有一组具有以下开始日期的作业,在数据框中按行组织:

职位 ID 开始日期 结束日期

工作 1 2020 年 5 月 25 日 2020 年 6 月 7 日

工作 2 2020 年 5 月 25 日 2020 年 5 月 31 日

在 2020 年 5 月 25 日这一周,我有两个在职工作,在 2020 年 6 月 1 日这一周,我有一个在职工作。可视化应该看起来像条形图,x 轴是周/时间段,y 轴是活动作业的计数。

我怎样才能最好地将它组织成一个数据框并可视化它?

【问题讨论】:

    标签: pandas data-visualization sisense


    【解决方案1】:

    类似

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

    然后您可以应用一个函数来生成一个新列“开始周” - 在这里查看 python Get week start date (Monday) from a date column in 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)
    

    然后在本周开始分组

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

    在此之后,您可以使用绘图

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

    【讨论】:

      【解决方案2】:

      您需要在 Sisense elasticube 中使用自定义 SQL 才能轻松完成这项工作。然后,您将使用 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)放在值部分下。

      【讨论】:

        猜你喜欢
        • 2020-08-07
        • 1970-01-01
        • 2015-09-26
        • 2015-10-07
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多