日常在处理数据中,对于日期段的异常值,可能是由于财务部门在合并某些账目,譬如16%和17税票的合并,会导致在短期内出现极度异常值,这样的极度异常值是人为的且是合理的,所以需要删除。附代码如下:
'''
比较两个日期是否相同
'''
#计算两个日期相差天数,自定义函数名,和两个日期的变量名。
def Caltime(date1,date2):
#%Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样;可以只计算日期,不计算时间。
#date1=time.strptime(date1,"%Y-%m-%d %H:%M:%S")
#date2=time.strptime(date2,"%Y-%m-%d %H:%M:%S")
date1=time.strptime(date1,"%Y-%m-%d")
date2=time.strptime(date2,"%Y-%m-%d")
#根据上面需要计算日期还是日期时间,来确定需要几个数组段。下标0表示年,小标1表示月,依次类推...
#date1=datetime.datetime(date1[0],date1[1],date1[2],date1[3],date1[4],date1[5])
#date2=datetime.datetime(date2[0],date2[1],date2[2],date2[3],date2[4],date2[5])
date1=datetime.datetime(date1[0],date1[1],date1[2])
date2=datetime.datetime(date2[0],date2[1],date2[2])
#返回两个变量相差的值,就是相差天数
return date2-date1
data['购电起始日期']=data['购电起始日期'].astype(str)
data['购电截止日期']=data['购电截止日期'].astype(str)
def f1_6(data,col1,col2):
col_name=col1+'_diff'
lst=[]
for i in range(len(data)):
m=data[col1].iloc[i]
n=data[col2].iloc[i]
lst.append(Caltime(m,n))
data[col_name]=lst
return data
f1_6(data,'购电起始日期','购电截止日期')
data.rename(columns={'购电起始日期_diff':'购电起始日期差值'},inplace=True)
#一列timedelta数据转换为int或float
data['购电起始日期差值']=(data['购电起始日期差值'] / np.timedelta64(1, 'D')).astype(int)
data=data[data['购电起始日期差值']!=0]