当前位置:首页 » 《随便一记》 » 正文

100天精通Python(数据分析篇)——第61天:Pandas.to_datetime函数(处理时间)

17 人参与  2022年11月10日 08:05  分类 : 《随便一记》  评论

点击全文阅读


在这里插入图片描述

文章目录

每篇前言一、to_datetime参数说明(代码实战)1. arg2. errors3. dayfirst4. yearfirst5. utc6. format7. exact8. unit9. infer_datetime_format10. origin11. cache 二、返回值1. datetime 三、报错1. ParserError2. ValueError 四、书籍推荐

每篇前言

??作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6

??本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》?​?​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣??订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进千人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。??加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

在这里插入图片描述
在这里插入图片描述

一、to_datetime参数说明(代码实战)

语法格式:

Pandas.to_datetime(    arg: DatetimeScalarOrArrayConvertible,    errors: str = "raise",    dayfirst: bool = False,    yearfirst: bool = False,    utc: bool | None = None,    format: str | None = None,    exact: bool = True,    unit: str | None = None,    infer_datetime_format: bool = False,    origin="unix",    cache: bool = True,) -> DatetimeIndex | Series | DatetimeScalar | NaTType | None:

1. arg

要转换为日期时间的对象。如果提供了DataFrame,则该方法至少需要以下列:“年”、“月”、“日”。接收参数:int、float、str、datetime、list、tuple、1-d数组、Series、DataFrame/dict类

(1)接收时间戳(float):

import pandas as pdimport numpy as npimport timet = time.time()print(t,type(t))df = pd.to_datetime(t)print(df)

运行结果:
在这里插入图片描述

(2)接收字符串:

import pandas as pdimport numpy as npimport timedf = pd.to_datetime('2022-10-10')print(df)t = time.asctime()print(t, type(t))df = pd.to_datetime(t)print(df)

运行结果:
在这里插入图片描述
(3)datetime类型:

import pandas as pdimport numpy as npimport timeimport datetimet = datetime.datetime.now()print(t, type(t))df = pd.to_datetime(t)print(df)

运行结果:
在这里插入图片描述
(4)接收DataFrame类型:

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ],                        'month': [11, 10],                        'day': [11, 10]})print(df)df_time = pd.to_datetime(df)print(df_time)

运行结果:
在这里插入图片描述

2. errors

指定errors忽略 Out of bounds nanosecond timestamp , 或将报错datetime转为NaT。接收参数:{‘ignore’,‘raise’,‘force’},默认’raise’。

如果“raise”,则无效解析将引发异常。如果为“coerce”,则无效解析将被设置为NaT。如果“ignore”,则无效解析将返回输入。

(1)设置为raise

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021],                   'month': [11, 10],                   'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='raise')print(df_time)

运行结果:一个没有第40号所以报错
在这里插入图片描述
(2)设置为coerce

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021],                   'month': [11, 10],                   'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='coerce')print(df_time)

运行结果:
在这里插入图片描述
(3)设置为ignore

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021],                   'month': [11, 10],                   'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='ignore')print(df_time)

运行结果:
在这里插入图片描述

3. dayfirst

如果arg是str或类似列表,请指定日期解析顺序。如果为True,则以第一天为单位解析日期,例如“10/11/12”解析为2012-11-10。接收bool类型,默认为false。dayfirst=True不严格,但更喜欢使用dayfirst进行解析。如果无法根据给定的dayfirst选项解析带分隔符的日期字符串,例如to_datetime([31-12-2021]),则会显示警告。

传31天进去:

import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime('31/11/12', dayfirst=False)print(df_time)

运行结果:
在这里插入图片描述

4. yearfirst

如果arg是str或类似列表,请指定日期解析顺序。如果True以年份开头解析日期,例如“10/11/12”解析为2010-11-12。如果dayfirst和yearfirst都为True,则yearfirsts前面是(与dateutil相同)。警告:yearfirst=True不严格,但更喜欢使用yearfirst进行解析。
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'day': ['22/10/24', '21/11/11']})print(df)df_time = pd.to_datetime(df['day'], yearfirst=True)print(df_time)

运行结果:
在这里插入图片描述

5. utc

控制时区相关的解析、本地化和转换。接收bool布尔类型,默认为None

如果为True,则该函数始终返回一个识别时区的UTC本地化时间戳、序列或日期时间索引。为此,时区原始输入本地化为UTC,而时区感知输入转换为UTC。如果为False(默认),输入将不会强制为UTC。时区原始输入将保持原始,而时区感知输入将保持其时间偏移。混合偏移(通常为夏令时)存在限制,有关详细信息,请参见示例部分。

6. format

解析时间的strftime,例如“%d/%m/%Y”。请注意,“%f”将一直解析到纳秒。接收字符串类型。

格式化字符串日期/时间说明值范围和实例
%Y年份0000~9999,例如:2022
%m月份01~12,例如:3
%B月份名称January~December,例如:April
%b月份名称缩写Jan~Dec,例如:Apr
%d日期01~31,例如:20
%A星期Monday~Sunday,例如:Wednesday
%a星期缩写Mon~Sun,例如:Wed
%H小时(24h制)00~23,例如:12
%I小时(12h制)01~12,例如:7
%p上\下午AM\PM,例如:PM
%M分钟00~59,例如:10
%S00~59,例如:20
%w星期几(具体)1~7,例如:7
%W整年的第几周1-52,例如:2
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ],                   'month': [11, 10],                   'day': [11, 10]})print(df)df_time = pd.to_datetime(df, format='%Y-%m-%d')print(df_time)

运行结果:
在这里插入图片描述

7. exact

控制格式的使用方式,接收bool布尔类型,默认为True:

如果为True,则需要精确的格式匹配。如果为False,则允许格式与目标字符串中的任何位置匹配。

8. unit

接收字符串,默认为“ns”。arg的单位(D,s,ms,us,ns)表示单位,即整数或浮点数。这将基于原点。例如,使用unit='ms’和origin=‘unix’,这将计算到unix历元开始的毫秒数。注意:要求arg参数传递时间戳,不然会报错。

(1)传递其他时间格式:

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'day': ['22/10/24', '21/11/11']})print(df)df_time = pd.to_datetime(df , yearfirst=True)print(df_time)

运行结果:
在这里插入图片描述
(2)传递时间戳:

import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime(time.time(), unit='ms')print(df_time)

运行结果:
在这里插入图片描述

9. infer_datetime_format

如果为True且未给出格式,请尝试根据第一个非NaN元素推断日期时间字符串的格式,如果可以推断,请切换到更快的方法来解析它们。在某些情况下,这可以将解析速度提高5-10倍。当数据量大的时候用这个参数可以提高解析速度!

10. origin

定义参考日期。数值将被解析为自该参考日期以来的单位数(按单位定义)。标量,默认为“unix”

如果为:“unix”(或POSIX)时间;原点设置为1970-01-01。如果为:“julian”,单位必须为“D”,原点设置为朱利安日历的开始。儒略日0被指定为公元前4713年1月1日中午开始的一天。如果“时间戳”可转换,则“原点”设置为“由原点标识的时间戳”。

(1)指定时间:

import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime([1, 2, 3], unit='D', origin='2022-01-01')print(df_time)

运行结果:
在这里插入图片描述

(2)不指定时间:不指定时间则默认从19700101开始

import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime([1, 2, 3], unit='D')print(df_time)

运行结果:
在这里插入图片描述

11. cache

如果为True,请使用唯一的已转换日期缓存来应用日期时间转换。在解析重复的日期字符串时,尤其是带有时区偏移量的字符串时,可能会产生显著的加速。缓存仅在至少有50个值时使用。存在越界值将导致缓存无法使用,并可能会降低解析速度。接收bool类型参数,默认为True。在版本0.25.0中更改:将默认值从False更改为True。

二、返回值

1. datetime

如果解析成功。返回类型取决于输入(括号中的类型对应于时区或时间戳解析不成功时的回退):

标量:时间戳(或datetime.datetime)数组:DatetimeIndex(或对象dtype包含datetime.datetime的序列)Series:datetime64数据类型系列(或包含datetime.datetime的对象数据类型系列)DataFrame:datetime64数据类型系列(或包含datetime.datetime的对象数据类型系列)

(1)arg传递标量:

import pandas as pdimport timeimport datetimedf_time = pd.to_datetime(time.time())print(df_time)print(type(df_time))

运行结果:
在这里插入图片描述

(2)arg传递数组返回DatetimeIndex

import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime(['2017-08-01', '2018-08-02', '2018-08-03', '2018-08-04','2018-08-05'])print(df_time)print(type(df_time))

运行结果:
在这里插入图片描述
(3)arg传递Series返回datetime64数据类型系列:

import pandas as pdimport timeimport datetimeser_obj = pd.Series(['2017-08-01', '2018-08-02', '2018-08-03', '2018-08-04','2018-08-05'])df_time = pd.to_datetime(ser_obj)print(df_time)print(type(df_time))

运行结果:
在这里插入图片描述(4)argDataFrame

import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ],                        'month': [11, 10],                        'day': [11, 10]})print(df)df_time = pd.to_datetime(df)print(df_time)

运行结果:
在这里插入图片描述

三、报错

1. ParserError

报错信息:When parsing a date from string fails.

报错翻译:从字符串解析日期失败时。

2. ValueError

发生另一个日期时间转换错误时。例如,当DataFrame中缺少“year”、“month”、“day”列中的一列时,或者当Timezone感知日期时间时。datetime是在类似于混合时间偏移的数组中找到的,并且utc=False。

四、书籍推荐

书籍展示:《Web安全攻防从入门到精通》

在这里插入图片描述


【书籍内容简介】

全书共21章,第1章到第6章讲解入门知识,包括HTTP基本概念、工具实战、信息收集、靶场搭建等内容;第7章到第20章讲解Web渗透测试的14个典型漏洞案例,包括SQL注入、XSS漏洞、CSRF漏洞、SSRF漏洞、任意文件上传、业务逻辑漏洞等内容;第21章是项目实战,主要模拟真实Web安全评估项目。
京东自营:http://product.dangdang.com/29460729.html

点击全文阅读


本文链接:http://zhangshiyu.com/post/47724.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1