Python数据分析库pandas高级接口dt的使用详解

Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口(accessors),分别对应分类数据、日期时间数据和字符串数据,通过这几个接口可以快速实现特定的功能,本文着重讨论日期时间数据,先看一个完整的案例:
 

import pandas as pd 
import numpy as np

# 产生一个时间序列,从2021-5-1 00:00:00 到 2021-5-10 00:02:00 频率是日
date = pd.date_range(start='2021-5-1 00:00:00',end='2021-5-10 00:02:00',freq='D')
df1 = pd.DataFrame({'日期':date})

# 数字转星期 中文
def cnWeek(x):
    w = ['一','二','三','四','五','六','日']
    return w[x]

# 数字转星期 英文
def enWeek(x):
    w=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
    return w[x]

def call_cnWeek(f):
    return cnWeak(f.dayofweek)

def call_enWeek(f):
    return enWeek(f.dayofweek)


# 遍历这个列输出日期的不同格式
for e in df1['日期']:
    print(e,'{0}年{1}月{2}日{3}时{4}分{5}秒 {6} {7} 第{8}周 第{9}天 第{10}季度 '.format(
        e.year,
        '{0:0>2}'.format(e.month),
        '{0:0>2}'.format(e.day),        
        '{0:0>2}'.format(e.hour),
        '{0:0>2}'.format(e.minute),
        '{0:0>2}'.format(e.second),        
        cnWeek(e.dayofweek),
        '{:<10}'.format(enWeek(e.dayofweek)),
        e.weekofyear,
        e.dayofyear,
        e.quarter
        
    ))

df1['year'] = df1['日期'].dt.year
df1['month'] = df1['日期'].apply(lambda x:'{0:0>2}'.format(x.month))
df1['day'] = df1['日期'].apply(lambda x:'{0:0>2}'.format(x.day))
df1['hour'] = df1['日期'].apply(lambda x:'{0:0>2}'.format(x.hour))
df1['minute'] = df1['日期'].apply(lambda x:'{0:0>2}'.format(x.minute))
df1['second'] = df1['日期'].apply(lambda x:'{0:0>2}'.format(x.second))
df1['cn_week'] = df1['日期'].apply(call_cnWeek)
df1['W'] = df1['日期'].apply(lambda x:'第{0}周'.format(x.weekofyear))
df1['D'] = df1['日期'].apply(lambda x:'第{0}天'.format(x.dayofyear))
df1['Q'] = df1['日期'].apply(lambda x:'第{0}季度'.format(x.quarter))

file = r'E:\Pandas\data\测试日期序列数据.xls'
df1.to_excel(file,index=False)

2021-05-01 00:00:00 2021年05月01日00时00分00秒 六 Saturday   第17周 第121天 第2季度 
2021-05-02 00:00:00 2021年05月02日00时00分00秒 日 Sunday     第17周 第122天 第2季度 
2021-05-03 00:00:00 2021年05月03日00时00分00秒 一 Monday     第18周 第123天 第2季度 
2021-05-04 00:00:00 2021年05月04日00时00分00秒 二 Tuesday    第18周 第124天 第2季度 
2021-05-05 00:00:00 2021年05月05日00时00分00秒 三 Wednesday  第18周 第125天 第2季度 
2021-05-06 00:00:00 2021年05月06日00时00分00秒 四 Thursday   第18周 第126天 第2季度 
2021-05-07 00:00:00 2021年05月07日00时00分00秒 五 Friday     第18周 第127天 第2季度 
2021-05-08 00:00:00 2021年05月08日00时00分00秒 六 Saturday   第18周 第128天 第2季度 
2021-05-09 00:00:00 2021年05月09日00时00分00秒 日 Sunday     第18周 第129天 第2季度 
2021-05-10 00:00:00 2021年05月10日00时00分00秒 一 Monday     第19周 第130天 第2季度 

这个案例中用到了10种属性,下面分别介绍:
type(df1['日期']) 类型是pandas.core.series.Series,遍历这个Series之后在循环体内,type(e)是Timestamp类型,因此e.xxx都是这个类型的属性
 

属性名称作用
year返回四位的年
month返回月份,int类型
day日,int类型
hour小时,int类型
minuter分钟,int类型
second秒,int类型
dayofweek一周中的星期几,0代表星期一,6代表星期天
weekofyear一年中的第几周
dayofyear一年中的第几天
quarter一年中的第几个季度

定义了两个函数cnWeek(),enWeek()根据根据dayofweek值返回具体的星期几,
本例中使用了date_range创建日期数据序列,date_range()是pandas中常用的函数,用于生成一个固定频率的DatetimeIndex时间索引,
起始日期是2021-5-1 00:00:00,结束日期是2021-5-10 00:02:00,频率是D表示按日产生时间序列,修改起始结束日期可以得到更多数据

从第25行开始对日期中的各项项进行拆分成单独的列,然后输出到测试日期序列数据.xls,输出结果如下:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据分析是通过使用Python编程语言和相应的进行数据处理、数据清洗、数据可视化等任务的过程。在Python数据分析中,Pandas是一种非常重要的工具,它提供了高性能、易于使用的数据结构和数据分析工具,能够帮助我们进行数据分析和数据处理工作。 在使用Pandas之前,我们首先需要安装该。可以通过使用pip命令在Python环境中安装Pandas,例如在命令行中输入"pip install pandas"即可完成安装。安装完成后,可以通过import语句将Pandas引入到我们的Python程序中,例如"import pandas as pd"。 Pandas主要提供了两种主要的数据结构,即Series和DataFrame。Series是一个一维的数据结构,类似于数组或者列表,可以存储不同类型的数据,如整数、浮点数、字符串等。DataFrame是一个二维的数据结构,可以看作是由多个Series组成的表格,每个Series代表DataFrame的一列。 借助Pandas,我们可以进行多种数据操作和分析。例如,可以利用Pandas读取和写入各种文件格式的数据,如CSV文件、Excel文件等。可以通过Pandas进行数据清洗,包括处理缺失数据、重复数据和异常值等。可以进行数据聚合和分组操作,计算各种统计和汇总指标。此外,Pandas还提供了简单方便的数据可视化工具,可以生成各种图表和图形展示数据。 总之,Python数据分析中的Pandas是一个非常强大和灵活的工具,可以帮助我们进行各种数据分析和处理任务。学习和掌握Pandas使用,可以提高我们的数据分析能力,帮助我们更好地理解和挖掘数据中的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值