首页 > 其他分享 >pandas中时间类型数据的处理

pandas中时间类型数据的处理

时间:2023-03-03 17:24:04浏览次数:27  
标签:Timedelta 处理 Timestamp df HepB 时间 pd 类型 pandas

pandas中时间类型数据的处理

1.pandas中6个时间相关的类

  • 对时间类型数据进行分析的前提就是将原本字符串的时间转换为标准时间类型,pandas继承了Numpy可和datetime库的时间相关模块,提供了6种时间相关的类
类名称 说明
Timestamp 最基础的时间类,表示某个时间点。在大多数的场景中的时间数据都是以Timestamp形式的时间
Period 表示单个时间跨度,或者某个时间段,例如某一天,某一个小时等
Timedelta 表示不同单位的时间,例如1天,1.5小时。2分钟,4秒等,而非具体的某个时间段
DatetimeIndex 一组Timestamp构成的Index,可以用来作为Series或者DataFrame的索引
PeriodtimeIndex 一组Period构成的Index,可以用来作为Series或者DataFrame的索引
TimedeltaIndex 一组Timedelta构成的Index,可以用来作为Series或者DataFrame的索引

2.Timestamp类

  • pandas中Timestamp作为时间类中最基础的,也是最为常用的。在多数情况下,时间相关的字符串都会转换成为Timestamp.pandas提供了to_datetime()函数,能够实现这一目标。
#可以直接通过pandas.to_datetime(),将字符串转化为日期格式
df["look_time"] = pd.to_datetime(["look_time"])
  • 需要注意的是:Timestamp类只能表示1677—2262年的时间

  • Timestamp类常用属性

    • 在多数涉及时间相关的数据处理中,需要提取时间中的年份、月份等数据表
属性名称 说明 属性名称 说明
year week 一年中第几周
month quarter 季度
day weekofyear 一年中的第几周
hour 小时 dayofyear 一年中的第几天
minute 分钟 dayofweek 一周第几天
second weekday 一周第几天
date 日期 weekday_name 星期名称
time 时间 is_leap_year 是否闰年
df["HepB_1"][1].year
df["HepB_1"][1].month
df["HepB_1"][1].minute#当原始数据中没有该时间时,便会显示为0
df["HepB_1"][1].week
df["HepB_1"][1].dayofyear
df["HepB_1"][1].is_leap_year#是否为闰年,返回的是布尔型
  • 利用strftime()方法提取指定的日期格式
df["HepB_1"][1].strftime("%Y-%m")
#输出结果为:'2016-12'

DatetimeIndex与PeriodIndex类

  • 除了将数据原始的数据框直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换为DatetimeIndex或PeriodIndex。
  • 在转换为PeriodIndex时需要注意,必须通过freq参数指定时间间隔,常用的时间间隔有Y(年),M(月),D(日),H(小时),T(分钟),S(秒)。两个函数还可以用来转换数据还可以用来创作时间序列数据。
#DatetimeIndex
df[["HepB_1","HepB_2"]] =df[["HepB_1","HepB_2"]].apply(pd.DatetimeIndex)
#要知道的是DatetimeIndex只能用于series不能用于数据框,
#个人感觉,如果需要的数据只到天的时候还是要比pd.to_datetime()要方便些

df[["HepB_1","HepB_2"]] = df[["HepB_1","HepB_2"]].apply(pd.PeriodIndex,freq="M")#添加参数


#PeriodIndex
pd.PeriodIndex(df["HepB_1"],freq = "M")#freq指定什么输出的就到那一位,
"""
输出结果
'2016-12', '2016-12', '2017-07', '2017-07', '2018-02', '2017-12',
                 'NaT', '2016-03', '2019-04', '2019-07',
             ...
                 'NaT',     'NaT',     'NaT',     'NaT',     'NaT', '2019-10',
                 'NaT',     'NaT', '2018-10',     'NaT'],
            dtype='period[M]', name='HepB_1', length=1228、

"""

4.Timedelta类

  • Timedelta是时间相关中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如1秒,2分钟,3小时等。使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运损。目前Timedelta函数中时间周期中没有年和月。
周期名称 单位 说明 周期名称 单位 说明
weeks 星期 seconds s
days D milliseconds ms 毫秒
hours h 小时 microseconds us 微秒
minutes m nanoseconds ns 纳秒
#日期前移一天
df["HepB_1"] + pd.Timedelta(days = 1)
#日期后移一天
df["HepB_1"] + pd.Timedelta(days =-1)

#2个日期做差值
df["HepB_1"] - df["HepB_2"]

#计算生日
age = (pd.to_datetime('2019-9-4') - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365)
print(age)

#做数据筛选
df[(pd.datetime.now()- df['发货日期']) < pd.Timedelta(days=30)]

标签:Timedelta,处理,Timestamp,df,HepB,时间,pd,类型,pandas
From: https://www.cnblogs.com/yangzilaing/p/17176352.html

相关文章

  • 如何让错误处理更加优雅
    1.go采用c的err方法,但是容易产生大量的外部判断。packagekillerimport"fmt"typeBookstruct{NamestringPriceintStoreintMember......
  • Windows 10 域环境下黑屏问题处理
    1.打开注册表,定位到HKEY_CURRENT_USER\ControlPanel\Desktop,找到WallPaper,将其值设置为共享图片的UNC路径。2.再将C盘用户账号文件夹AppData\Roaming\Microsoft\Wind......
  • iis6 500.19 dynamiccompressonModule 处理程序 staticfile FastCGI
    看详细中的处理程序类型是不是staticfile或FastCGI如果不是请出门左转百度。如果是则可以尝试一下方法:staticfile可以尝试一下方法:打开网站的根目录的web.confi文件在配......
  • 基本内置类型
    C++基本内置类型有:算术类型和空类型(void),空类型不对应具体的值下表列出了C++标准规定的尺寸最小值(所谓的尺寸就是该类型所占的比特数),同时允许编译器赋予这些类型更大的尺......
  • DSP(数字信号处理)与监控摄像机相关技术解读
    提起安防领域,我们第一个想到的应该就是监控摄像机了,它对于安防的重要性,就像人的眼睛对于人的作用一样,是重要的信息获取来源。 监控摄像机广泛应用于学校、公司、银行、......
  • 数据类型、常量和变量
    一、基本数据类型数据类型分2类:基本数据类型+复合类型基本类型:charshortintlongfloatdouble复合类型:数组结构体共用体类(C语言没有类,C++有)1.0、内存占用与sizeo......
  • allure标题样式错乱处理
    今天使用allure生成测试报告,感觉标题很不美观,查阅资料使用以下方法解决不美观的报告标题:  解决方法:找到这个py文件,小改源码   就是把这个方法直接返回空列......
  • 预处理指令、typedef、条件编译、多文件代码
    预处理指令源代码中,以井号#开头的并不是C语言中的语句。它们属于预处理指令。在代码被编译前,预处理器会先处理预处理指令,并根据预处理指令的意义修改C语言源码。修改后的......
  • 【编程基础之Python】8、Python复合数据类型
    (【编程基础之Python】8、Python复合数据类型)Python复合数据类型除了上述提到的几种基本数据类型,Python还提供了一些常用的复合数据类型,包括列表(List)、元组(Tuple)、集合(Se......
  • Oracle获取日期查询处理&近一年的所有月份&一个月的全部日期&当前年至今的所有月份
    一个月的全部日期SELECTto_char(TRUNC(to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-MM-dd'),'MM')+ROWNUM-1,'yyyy-MM-dd')asdayFROMdualconnectby......