def timeblockrange(start,end,exclude=None) : start = start end = end if exclude is None : exclude_list = [7356014] else : exclude_list = exclude end_plus1 = datetime.strftime(datetime.strptime(end,'%Y-%m-%d') + timedelta(1), '%Y-%m-%d') headers = wheniworktoken() params = ( ('start', start), ('end', end_plus1), ) r = requests.get('https://api.wheniwork.com/2/times', headers=headers, params=params) j = r.json() j = j['times'] data = {k:[] for k,v in j[0].items()} for i in j : for k,v in i.items(): try : data[k].append(v) except : continue dfraw = pd.DataFrame(data) dfdata = dfraw.filter(['user_id','position_id','start_time','end_time','length','hourly_rate','notes']) dfdata = dfdata[~(dfdata['position_id'].isin(exclude_list))].drop(columns=['position_id']) dfdata['start_time'] = dfdata['start_time'].str.extract('(..\s...\s....\s..:..:..)') dfdata['start_time'] = pd.to_datetime(dfdata['start_time'],infer_datetime_format=True) dfdata['end_time'] = dfdata['end_time'].str.extract('(..\s...\s....\s..:..:..)') dfdata['end_time'] = dfdata['end_time'].replace(pd.NaT,'{} 20:00:00'.format(start)) # in case someone forgets to clock out at 8pm dfdata['end_time'] = pd.to_datetime(dfdata['end_time'],infer_datetime_format=True) dfdata['Date'] = dfdata['end_time'].astype('str').str.extract('(....-..-..)') hour_list = [] for index,row in dfdata.iterrows() : time = pd.date_range(start=row['start_time'], end=row['end_time'],freq='S') s = pd.Series(0.00027778,index=time,name='hours') s = s.resample('30T',label='right',closed='right').sum() hour_list.append(s) dftemp2 = pd.concat(hour_list,axis=1) dftemp2['number_agents'] = (dftemp2.sum(axis=1))*2 # Number of hours = number of agents df = dftemp2['number_agents'] df_call = callpatternrange(start='2018-05-01', end='2018-09-15').drop(columns=['Date','rank']) df_final = df_call.join(df,how='inner') df_final = df_final.drop(columns=['SL Abandoned','Abandoned Calls']) df_final = df_final.apply(pd.to_numeric, errors='ignore') return df_final
def workedshiftblock(start=None,end=None,exclude=None) : if start is None : start = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d') else : start = start if end is None : end_plus1 = datetime.strftime(datetime.strptime(start,'%Y-%m-%d') + timedelta(1), '%Y-%m-%d') else : end_plus1 = datetime.strftime(datetime.strptime(end,'%Y-%m-%d') + timedelta(1), '%Y-%m-%d') if exclude is None : exclude_list = [7356014] else : exclude_list = exclude headers = wheniworktoken() params = ( ('start', start), ('end', end_plus1), ) r = requests.get('https://api.wheniwork.com/2/times', headers=headers, params=params) j = r.json() j = j['times'] data = {k:[] for k,v in j[0].items()} for i in j : for k,v in i.items(): try : data[k].append(v) except : continue dfraw = pd.DataFrame(data) dfdata = dfraw.filter(['user_id','position_id','start_time','end_time','length','hourly_rate','notes']) dfdata = dfdata[~(dfdata['position_id'].isin(exclude_list))].drop(columns=['position_id']) dfdata['start_time'] = dfdata['start_time'].str.extract('(..\s...\s....\s..:..:..)') dfdata['start_time'] = pd.to_datetime(dfdata['start_time'],infer_datetime_format=True) dfdata['end_time'] = dfdata['end_time'].str.extract('(..\s...\s....\s..:..:..)') dfdata['end_time'] = dfdata['end_time'].replace(pd.NaT,'{} 20:00:00'.format(start)) # in case someone forgets to clock out at 8pm dfdata['end_time'] = pd.to_datetime(dfdata['end_time'],infer_datetime_format=True) return start, dfdata
print(str(['Hey'][0])) list = np.random.binomial(20, 0.5, 10000) print(len(list)) print(sum((i / i) for i in list if i >= 15) / len(list)) t = np.random.binomial(1000, 0.01) print(t) v = np.random.binomial(1, 0.01, 1000) print(sum(v)) print(''.join(['h', 'e', 'y'])) import requests headers = wheniworktoken() r = requests.get('https://api.wheniwork.com/2/positions', headers=headers) j = r.json() j = j["positions"] data = {k: [] for k, v in j[0].items()} for i in j: for k, v in i.items(): try: data[k].append(v) except: continue df = pd.DataFrame(data)