问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

pandas怎么找出异常日期

发布网友 发布时间:2022-04-21 01:14

我来回答

1个回答

热心网友 时间:2022-06-17 01:24

将数据类型转换为日期类型
df['date'] = pd.to_datetime(df['date'])
1
将date设置为index
df = df.set_index('date')
1
获取某年的数据
print(df['2010'].head())
1
获取某月的数据
print(df['2013-11'].head())
1
提取全日期字段中的日期和时间项
data4["订单生成时间"] = pd.to_datetime(data4["订单生成时间"])
data4["时间"] = data4["订单生成时间"].dt.hour #提取时间
data4["日期"] = data4["订单生成时间"].dt.date #提取日期
1
2
3
获取某个日期之前/后或时间区间的数据
dataframe的.truncate()函数可以截取某个时期之前或之后的数据,或者某个时间区间的数据,进行统计分析。
注意事项:
使用.truncate()函数对df进行数据集截取,遇到截取数据不符合预期,且若时间序列无序会抛出异常
解决措施:
在使用.truncate()函数对df进行数据集截取之前,需要先使用df=df.sort_values(‘date’)‘date’列按时间先后进行排序,然后使用df = df.set_index('date'),将“date”设置为index,最后再使用df_last=df.truncate(after=‘2019-05-22 16:00:00’)提取指定时间节点之前的数据。
函数语法:

DataFrame.truncate(before=None, after=None, axis=None, copy=True)
1
参数说明:

before:取值范围:date,string,int,是指截断此索引值之前的所有行
after:取值范围:date,string,int,是指截断此索引值后的所有行
axis:取值范围:{0或’index’,1或’columns’}(可选),是指轴截断。 默认情况截断索引(行)。
copy:取值范围:boolean,默认为True,返回截断部分的副本

常见用法:

获取2014年以后的数据
print(df.truncate(before='2014').head())
1
获取2013-11月之前的数据,用after
print(df.truncate(after='2013-11').head())
1
获取2016-02月以后的数据,用before
print(df.truncate(before='2016-02').head())
1
获取2019-05-22日16:00:00时之前的数据
df=data.truncate(after='2019-05-22 16:00:00')
1
获取指定时间区间的数据
df=df['2016-02-2':'2016-02-10']
1
获取指定时间区间的数据
df=df['2016-02-2':'2016-02-10']
1
python 获取当前时间及前一天时间
import datetime
from pandas.tseries.offsets import Day
now_time =datetime.datetime.now()#获取当前时间
yes_time = (now_time -1*Day()).strftime('%Y-%m-%d')#格式化
print(yes_time)
1
2
3
4
5
pandas的日期时间间隔运算
import datetime
from datetime import timedelta
df_189[‘订单生成日期’]=pd.to_datetime(df_189[‘订单生成日期’]) #修改“订单生成时间”的数据类型
df_189[‘订单生成日期’]+timedelta(days=1) #后一天的日期
df_189[‘订单生成日期’]-timedelta(days=3) #前3天的日期

选取指定时间范围内/外的数据
##提取3日前日期和7日前日期
now_time =datetime.datetime.now()#获取当前时间
yes_time_7 = (now_time -7*Day()).strftime('%Y-%m-%d')#格式化
yes_time_3= (now_time-3*Day()).strftime("%Y-%m-%d")
print(yes_time_7)
print('='*50)
print(yes_time_3)
df_189['订单生成日期']=pd.to_datetime(df_189['订单生成日期']) #修改“订单生成时间”的数据类型
df_189_7= df_189[df_189['订单生成日期']==yes_time_7]
df_189_3= df_189[df_189['订单生成日期']==yes_time_3]
print(df_189_7.info())
#选取该错误数据对应的时间范围外的数据,多个条件时 '|'代表'或','&'代表'且'
或者
a= df_189[df_189['订单生成日期']=='2019-06-23'] #筛选2019-06-23的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
利用pandas计算DataFrame两列日期的间隔小时数
import pandas as pd
#方法一:
#先利用to_datetime转换为时间格式,tm列的数据形式为'yyyy-MM-dd HH:mm:ss'
df['tm_1'] = pd.to_datetime(df['tm_1'])
df['tm_2'] = pd.to_datetime(df['tm_2'])
#利用".dt.seconds"转换为秒,除以相对于的间隔数得到分钟、小时等
df['diff_time'] = (df['tm_1'] - df['tm_2']).dt.seconds/60
#利用round函数可进行四舍五入
df['diff_time'] = round(df['diff_time'])

#方法二,日期相减变为小时;变为天的话将h替换为D即可:
df['diff_time'] = (df['tm_1'] - df['tm_2']).values/np.timedelta64(1, 'h')
#Dataframe中的时间是不能直接进行相加减的,所以需要先用pandas的to_datetime()方法,转化成时间格式进行加减,然后再转换成df格式
#delta=df1['Time_end']-df1['Time_start'] #直接报错TypeError: unsupported operand type(s) for -: 'str' and 'str'
#日期相减变为小时;变为天的话将h替换为D即可:
sf_df['交易周期']=pd.DataFrame((pd.to_datetime(sf_df['交易完成时间'])-pd.to_datetime(sf_df['订单生成时间'])).values/np.timedelta64(1,'h'))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
numpy中-Datetimes and Timedeltas的使用
日期格式转换
在numpy中,使用np.datetime64('2017-08' , 'D')可以很方便的将字符串转换成日期类型。

import numpy as np
np.datetime64('2017-08-06') #精确到日
>>>
numpy.datetime64('2017-08-06')
np.datetime64('2018-08') #精确到月
>>>
numpy.datetime64('2018-08')
# 通过参数,强制将数据格式转为我们想要的粒度
np.datetime64('2017-08','D') #转化到日
>>>
numpy.datetime64('2017-08-01')
np.datetime64('2017-08','Y') #转化到年
>>>
numpy.datetime64('2017')
a = np.array(['2017-07-01','2017-07-15','2017-08-01'],dtype = np.datetime64) #列表日期
a
>>>
array(['2017-07-01', '2017-07-15', '2017-08-01'], dtype='datetime64[D]')
# 我们也可以使用arange函数初始化数组
b = np.arange('2017-08-01','2017-09-01',dtype = np.datetime64)
b
>>>
array(['2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04',
'2017-08-05', '2017-08-06', '2017-08-07', '2017-08-08',
'2017-08-09', '2017-08-10', '2017-08-11', '2017-08-12',
'2017-08-13', '2017-08-14', '2017-08-15', '2017-08-16',
'2017-08-17', '2017-08-18', '2017-08-19', '2017-08-20',
'2017-08-21', '2017-08-22', '2017-08-23', '2017-08-24',
'2017-08-25', '2017-08-26', '2017-08-27', '2017-08-28',
'2017-08-29', '2017-08-30', '2017-08-31'], dtype='datetime64[D]')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
日期的计算
在numpy中,我们可以进行简单的日期计算

# 两个日期相减,会得到相差的天数
np.datetime64('2017-08-03') - np.datetime64('2017-07-15')
>>>
numpy.timedelta64(19,'D')
# 这里日期可以直接减去对应的天数
np.datetime64('2017-08-03') - np.timedelta64(20,'D')
>>>
#这里日期的粒度必须保证一样,一个是D,一个是M,是不可以相减的
np.datetime64('2017-08-03') - np.timedelta64(1,'M')
>>>
TypeError: Cannot get a common metadata divisor for NumPy datetime metadata [D] and [M] because they have incompatible nonlinear base time units
np.datetime64('2017-08') - np.timedelta64(1,'M')
>>>
numpy.datetime64('2017-07')

(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00')) #按秒计时

(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h') #计算时间差,并转为小时
>>>
239.0
#计算终止时间-初试时间,转为小时格式,最后格式设置为整型。np.floor((x - start_hour) / np.timedelta64(1, 'h')).astype(np.uint16)
np.floor((np.datetime64('2014-10-30 23:00:00') -
np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h')).astype(np.uint16)
>>>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
老师侮辱学生是否犯法 开启河南航拍新篇章 河南省航拍协会第一次会员代表大会召开 我想问下poscer m-3032款型手表售价是多少??? wp6m是啥意思 看图软件哪个好哪个看图软件好 5款强大到离谱电脑软件,都是效率神器!从此远离加班 在武汉买一套房大概要多少钱 武汉华润翡翠城的优缺点 k12教育为什么会被整顿 国家为什么要叫停K12教育? 如何更新pandas dataframe的值 如何将pandas.dataframe的数据读取到文件中 DataFrame中的排序必须是相同的数据类型吗 Python怎么获取mysql查询的信息并且截取? 在Python中怎么将json获取的数据如何转化为dataframe python 如何将一行十列的数据转换dataframe格式两行五列的数据 如何将dataframe格式的分钟级别的数据转换为小时级别 如何将dataframe转换为rdd类型 将dataframe的一行转成一个字典python python DataFrame类型转换问题 微信上编辑过的所有标签怎样删除 蜂蜡怎么溶解? 蜂胶和蜂蜡的区别有哪些 蜂蜡有什么用处 怎么保存 蜂蜡是什么材料,价格贵吗? 蜂蜡具有什么药效? 蜂蜡是什么 蜂蜡的作用有哪些? 蜂蜡有什么作用 蜂蜡是什么?有图吗? wto数据库如何查数据 网络中产生大量丢包现象?故障在哪?如何处理? 雨水节气期间气候有什么特点 雨水节气气候特点是什么 雨量增多气温升高 雨水是什么意思 雨水节气有哪些气候特点 雨水节气有什么特点 雨水节气特点 雨水节气的特点和风俗有哪些? 雨水节气的特点 雨水的节气特点 北方雨水节气后还冷吗 雨水节气是气温变暖吗 二十四节气中的“雨水”有什么特点 二十四节气中的“雨水”有什么特点? 雨水节气的特点和风俗是什么? 雨水节气的含义,雨水是什么季节,雨水是什么意思 404 Not Found 雨水的特点 雨水的节气天气 24节气雨水的由来是什么? 社保卡在医院丢了怎么办