你的时间都去哪了?(二)python处理

你的时间都去哪了?(一)数据分析指标(点击跳转)
你的时间都去哪了?(二)python处理(点击跳转)
你的时间都去哪了?(三)时间利用情况分析报告(点击跳转)

用python处理的目的

因为是定期对相应格式的表格进行分析,每次用excel表格处理一遍,都在做重复的工作,非常耗时间和精力,就写成了python自动化处理。

数据概览

各项时间分类

各项时间分类是为统计做准备,分类如下
在这里插入图片描述

时间统计记录

时间统计记录示意如下:
在这里插入图片描述

数据清洗

自己记录的数据,清洗过程在excel中,记录的时候就完成了。

数据导入

import pandas as pd
import numpy as np
import datetime 
import matplotlib
from matplotlib import pyplot as plt

数据处理

按之前提前计划的数据分类,把实验室时间,是否专注时间,是否是开会时间等提取出来,便于后续计算。
excel数据透视后汇总的有些数据,不方便引用。如做几个表最终汇总数据的交互计算,计算效率等的时候不方便。

TimeRecord = pd.read_excel('D:/时间记录及复盘/Time record/2020-06时间记录及分析(格式修正).xlsx',sheet_name='时间统计')
sleep_time=TimeRecord[TimeRecord.明细类.str.contains('睡觉',na=False)]
lab_time=TimeRecord[TimeRecord.地点.str.contains('实验室',na=False)]
absorbed_time=TimeRecord[TimeRecord.是否专注.str.contains('是',na=False)]
absorbed_target_time=lab_time[lab_time.是否专注.str.contains('是',na=False)]
occupied_lab_time=lab_time[lab_time.是否强制时间.str.contains('是',na=False)]

计算每天睡觉时间的的合计,因为睡觉类是在明细类里,所以以日期和明细类汇总,合计的项为十进制换算时间。因为上一段代码已经把表中的所有睡觉的时间提取到了sleeptime_day_table中,所以,这里明细类中只含有睡觉项。

sleeptime_day_table=pd.pivot_table(sleep_time,values='十进制换算',index='日期',columns='明细类',aggfunc='sum',fill_value=0)

按大类进行数据透视,pivot_table其实就是excel中的数据透视的功能。

time_day_table=pd.pivot_table(TimeRecord,values='十进制换算',index='日期',columns='大类',aggfunc='sum',fill_value=0,margins=True,margins_name='日合计')

为后面要用到的数据特征,进行汇总提取

lab_time_group_table=pd.pivot_table(lab_time,values='十进制换算',index='日期',columns='大类',aggfunc='sum',fill_value=0,margins=True,margins_name='实验室合计')
absorbed_target_time_group_table=pd.pivot_table(absorbed_target_time,values='十进制换算',index='日期',columns='大类',aggfunc='sum',fill_value=0,margins=True,margins_name='与目标一致专注合计')
occupied_lab_time_group_table=pd.pivot_table(occupied_lab_time,values='十进制换算',index='日期',columns='大类',aggfunc='sum',fill_value=0,margins=True,margins_name='实验室强制时间总计')

lab_time_group_table_merge=lab_time_group_table[['实验室合计']]
absorbed_target_time_group_table_merge=absorbed_target_time_group_table[['与目标一致专注合计']]
occupied_lab_time_group_table_merge=occupied_lab_time_group_table[['实验室强制时间总计']]

因为有些时间没有相应活动,数据提取并汇总的时候,表中就没有这些时间了,如周六完全休息,出去逛街玩,就不去实验室,这一天就没有实验室数据了,对后面进行状态规律的分析有影响。
用两个表的联结解决这个问题,因为是时间统计,没有这项活动的时间的异常值处理就赋值为0;

TimeRecord_merge=TimeRecord[['日期','星期','周']]
TimeRecord_merge=TimeRecord_merge.drop_duplicates()
TimeRecord_merge.index=TimeRecord_merge['日期']
analysis_lab_time=lab_time_group_table.join([absorbed_target_time_group_table_merge,occupied_lab_time_group_table_merge])
analysis_lab_time=TimeRecord_merge.join(analysis_lab_time,how='left')
analysis_lab_time=analysis_lab_time.fillna(0)

效率是为了评估个人的状态,人是需要相应正反馈的,如果付出了努力,但是每天的效率还是不达标,或者数据很差,那这个评估是会打击积极性的,就完全与效率评估的初衷背道而驰。所以将正常必要的【休息】时间加入进来。作为正常的【应有碎片时间】,应有碎片时间的计算方式是⅓的专注时间,也就是专注干活45分钟,休息15分钟。
《番茄工作法》及各类书记课程按工作内容不同的专注度,休息长度衍生的各种休息间隔如下。以下常见的三种休息方法,比值等价。

  • 专注干活45分钟,休息15分钟.比率为三分之一
  • 专注1.5h休息0.5h。比率为三分之一
  • 专注一个番茄25分钟,休息5分钟,三个番茄后休息15分钟。干活总时间为75分钟,休息时间为25分钟,比值也为三分之一

analysis_lab_time['应有碎片时间']=analysis_lab_time['与目标一致专注合计']/3#专注45分钟,休息15分钟

计算效率,excel中好几个汇总表格的数据引用不方便,这也是采用python计算l的原因之一。

analysis_lab_time['效率']=(analysis_lab_time['与目标一致专注合计']+analysis_lab_time['应有碎片时间'])/(analysis_lab_time['实验室合计']-analysis_lab_time['实验室强制时间总计'])
analysis_lab_time=analysis_lab_time.drop('实验室合计',axis=0)

计算特征数据

analysis_lab_time['睡眠时间']=sleeptime_day_table['睡觉']
analysis_lab_time['学习时间']=analysis_lab_time['自己学习']+analysis_lab_time['项目/科研']

确定表中列的数据,方便最后输出表格时的美观。

order=['日期','周','星期','事务性时间','第二类时间','自己学习','项目/科研','学习时间','实验室合计','与目标一致专注合计','实验室强制时间总计','应有碎片时间','效率','睡眠时间']
analysis_lab_time=analysis_lab_time[order]

analysis_lab_time,每天实验室花费时间的各种特征计算后,最后导出结果呈现如下。
在这里插入图片描述

实验室各类时间按周或按星期X的平均,输出为表格

mean_lab_time=analysis_lab_time.groupby(by = '周').agg('mean')
mean_day=analysis_lab_time.groupby(by = '星期').agg('mean')
sum_week_sleep_time=sleep_time.groupby(by = '周').agg('sum')

mean_lab_time计算结果导出后如下,最后统一导出。
在这里插入图片描述

mean_day计算结果导出后如下,最后统一导出。
在这里插入图片描述

计算每周的各类时间,并将平均值在最下面一行计算出来

week_time_group_table=pd.pivot_table(TimeRecord,values='十进制换算',index='周',columns='大类',aggfunc='sum',fill_value=0)
sleeptime_day_table=sleeptime_day_table.join(TimeRecord_merge,how='left')
sleeptime_group_table=sleeptime_day_table.groupby(by = '周').agg('sum')
week_time_group_table['睡眠时间']=sleeptime_group_table['睡觉']
week_time_group_table['事务性时间']=week_time_group_table['事务性时间']-week_time_group_table['睡眠时间']
week_time_group_table.loc['Col_平均'] = week_time_group_table.apply(lambda x: x.mean())  

week_time_group_table计算结果导出后如下,最后统一导出。
在这里插入图片描述

将平均值在最下面一行计算出来的代码

week_time_group_table.loc['Col_平均'] = week_time_group_table.apply(lambda x: x.mean()) 

因为睡觉时间在明细类里面,睡眠时间是比较关注的指标,所以要单独计算,从明细类中,

day_time_group_table1=pd.pivot_table(TimeRecord,values='十进制换算',index='日期',columns='明细类',aggfunc='sum',fill_value=0)
day_time_group_table2=pd.pivot_table(TimeRecord,values='十进制换算',index='日期',columns='大类',aggfunc='sum',fill_value=0)
#day_time_group_table=day_time_group_table.join(TimeRecord_merge,how='left')
day_time_group_table1=TimeRecord_merge.join(day_time_group_table1,how='left')
day_time_group_table2=TimeRecord_merge.join(day_time_group_table2,how='left')

计算各周平均每天的各大类的时间

week_perDay=day_time_group_table2.groupby(by = '周').agg('mean')
mean_week_sleep_time=day_time_group_table1.groupby(by = '周').agg('mean')['睡觉']
week_perDay=week_perDay.join(mean_week_sleep_time,how='left')

因为睡觉是在事务性时间的分类中,所以这里将事务性时间中的睡眠时间减掉,来评估每天吃饭、洗漱这些必须的事务性时间。睡眠时间单独看。

week_perDay['事务性时间']=week_perDay['事务性时间']-week_perDay['睡觉']
week_perDay.loc['Col_平均'] = week_perDay.apply(lambda x: x.mean())  

week_perDay计算结果导出后如下,最后统一导出。
在这里插入图片描述

对计算好的数据特征导出为excel

writer = pd.ExcelWriter('D:/时间记录及复盘/Time record/analysis.xlsx')
analysis_lab_time.to_excel(excel_writer=writer,sheet_name='时间统计',index=False)
week_time_group_table.to_excel(excel_writer=writer,sheet_name='24小时周总计',index=True)
week_perDay.to_excel(excel_writer=writer,sheet_name='24小时周平均',index=True)
mean_lab_time.to_excel(excel_writer=writer,sheet_name='实验室周平均',index=True)
mean_day.to_excel(excel_writer=writer,sheet_name='星期X平均',index=True)
writer.save()
writer.close()

最终导出表格如下
最终导出表格形式

你的时间都去哪了?(一)数据分析指标(点击跳转)
你的时间都去哪了?(二)python处理(点击跳转)
你的时间都去哪了?(三)时间利用情况分析报告(点击跳转)

另外有木有志同道合的小宝贝呀,微信号 Anuanfw

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值