我有一个数据可视化的问题,我想得到一些意见。我目前正在使用python pandas清理数据集,然后将其上传到SISENSE中以供使用。我尝试做的是可视化活动作业,根据特定任务的开始日期和结束日期按周/月进行分组。例如,我有一组作业,它们的开始日期如下,在数据帧中以行的形式组织:
作业ID开始日期结束日期
工作1 5/25/2020 6/7/2020
工作2 2020年5月25日31日
在2020年5月25日的那一周,我有两个活跃的工作,而在2020年6月1日的一周,我有1个活跃的工作。可视化应该看起来像一个条形图,其中x轴是周/时间段,y轴是活动作业的计数。
我如何才能最好地将其组织到一个数据框架中并将其可视化?
发布于 2020-05-28 04:14:05
就像这样
df = pd.DataFrame({'Job ID': [1,2], 'Start Date': ['5/25/2020', '5/25/2020'], 'End Date': ['6/7/2020', '5/31/2020']})然后你可以应用一个函数来生成一个新的列'week apply‘-看看这里的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)然后在本周开始的groupby
counr = df.groupby(df['Week Beginning']).sum()在此之后,您可以使用
count_by_job_id = count['Job ID']
pd.DataFrame(count_by_job_id).plot.bar()发布于 2020-05-30 02:38:24
您需要在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(您可以用几种不同的方式格式化)放在categories部分下,并将字段count(JOBID)放在values部分下。

https://stackoverflow.com/questions/62051888
复制相似问题