22-Pandas日期时间格式化

Pandas日期时间格式化

当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Wednesday, June 6, 2020”可以写成“6/6/20”,或者写成“06-06-2020。

日期格式化符号

在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为%H ,分钟简写为%M ,秒简写为%S。下表对常用的日期格式化符号做了总结:

符号说明
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(01-12)
%M分钟数(00=59)
%S秒(00-59)
%a本地英文缩写星期名称
%A本地英文完整星期名称
%b本地缩写英文的月份名称
%B本地完整英文的月份名称
%w星期(0-6),星期天为星期的开始
%W一年中的星期数(00-53)星期一为星期的开始
%x本地相应的日期表示
%X本地相应的时间表示
%Z当前时区的名称
%U一年中的星期数(00-53)星期天为星期的开始
%j年内的一天(001-366)
%c本地相应的日期表示和时间表示

Python处理

Python 内置的 strptime() 方法能够将字符串日期转换为 datetime 类型,下面看一组示例:

import pandas as pd
from  datetime import datetime
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")date_str =empdata.loc[:,'HIREDATE']
for d in date_str:print(f"转换前数据:{d},转换前的数据类型:{type(d)},转换后的数据类型:{type(datetime.strptime(d,'%Y-%m-%d'))}")

输出结果:

转换前数据:1980-12-17,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-02-20,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-02-22,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-04-02,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-09-28,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-05-01,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-06-09,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1987-04-19,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-11-17,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-09-08,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1987-05-23,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-12-03,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1981-12-03,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>
转换前数据:1982-01-23,转换前的数据类型:<class 'str'>,转换后的数据类型:<class 'datetime.datetime'>

我们发现,从csv文件中读取的数据类型为str类型,通过datetime.strptime()转换后变为了datetime.datetime类型。也就是将字符串转换为了时间类型。

注意:strftime() 可以将 datetime 类型转换为字符串类型,恰好与 strptime() 相反。

import pandas as pd
from  datetime import datetime
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")date_str =empdata.loc[:,'HIREDATE']
for d in date_str:print(f"转换前格式:{d},转换后的格式:{datetime.strftime(datetime.strptime(d,'%Y-%m-%d'),'%Y.%m.%d %H:%M:%S')}")

运行结果:

转换前格式:1980-12-17,转换后的格式:1980.12.17 00:00:00
转换前格式:1981-02-20,转换后的格式:1981.02.20 00:00:00
转换前格式:1981-02-22,转换后的格式:1981.02.22 00:00:00
转换前格式:1981-04-02,转换后的格式:1981.04.02 00:00:00
转换前格式:1981-09-28,转换后的格式:1981.09.28 00:00:00
转换前格式:1981-05-01,转换后的格式:1981.05.01 00:00:00
转换前格式:1981-06-09,转换后的格式:1981.06.09 00:00:00
转换前格式:1987-04-19,转换后的格式:1987.04.19 00:00:00
转换前格式:1981-11-17,转换后的格式:1981.11.17 00:00:00
转换前格式:1981-09-08,转换后的格式:1981.09.08 00:00:00
转换前格式:1987-05-23,转换后的格式:1987.05.23 00:00:00
转换前格式:1981-12-03,转换后的格式:1981.12.03 00:00:00
转换前格式:1981-12-03,转换后的格式:1981.12.03 00:00:00
转换前格式:1982-01-23,转换后的格式:1982.01.23 00:00:00

Pandas处理

除了使用 Python 内置的 strptime() 方法外,你还可以使用 Pandas 模块的 pd.to_datetime() 和 pd.DatetimeIndex() 进行转换。

1) to_datetime()

通过 to_datetime() 直接转换为 datetime 类型

import pandas as pd
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")date_str =empdata.loc[:,'HIREDATE']
date_time = pd.to_datetime(date_str)
print(date_time)

输出结果:

0    1980-12-17
1    1981-02-20
2    1981-02-22
3    1981-04-02
4    1981-09-28
5    1981-05-01
6    1981-06-09
7    1987-04-19
8    1981-11-17
9    1981-09-08
10   1987-05-23
11   1981-12-03
12   1981-12-03
13   1982-01-23
Name: HIREDATE, dtype: datetime64[ns]

是不是比python中的strptime()更加好用呢?(_)

2) DatetimeIndex()
import pandas as pd
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")date_str =empdata.loc[:,'HIREDATE']
date_time = pd.DatetimeIndex(date_str)
print(date_time)

运行结果:

DatetimeIndex(['1980-12-17', '1981-02-20', '1981-02-22', '1981-04-02','1981-09-28', '1981-05-01', '1981-06-09', '1987-04-19','1981-11-17', '1981-09-08', '1987-05-23', '1981-12-03','1981-12-03', '1982-01-23'],dtype='datetime64[ns]', name='HIREDATE', freq=None)

使用 Datetimeindex() 函数设置时间序,示例如下:

import pandas as pd
import numpy as np
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")date_str =empdata.loc[:,'HIREDATE']
date_time = pd.DatetimeIndex(date_str)df = pd.Series(np.random.randn(14),index = date_time)
print(df)

输出结果:

1980-12-17   -0.118801
1981-02-20    0.049266
1981-02-22   -0.680420
1981-04-02    0.443656
1981-09-28    0.685218
1981-05-01    2.269103
1981-06-09   -0.704363
1987-04-19   -0.256806
1981-11-17   -0.855622
1981-09-08   -1.782622
1987-05-23    1.270465
1981-12-03   -1.282576
1981-12-03    0.710341
1982-01-23    0.545944
dtype: float64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust: polars行遍历,从dataframe到struct及Bar设计比较

pandas提供了iterrows()、itertuples()、apply等行遍历的方式&#xff0c;还是比较方便的。 polars的列操作功能非常强大&#xff0c;这个在其官网上有详细的介绍。由于polars底层的arrow是列存储模式&#xff0c;行操作效率低下&#xff0c;官方也不推荐以行方式进行数据操作。…

react_后台管理_项目

目录 1.运行项目 2. 项目结构 ①项目顶部导航栏 ②项目左侧导航栏 ③主页面-路由切换区 本项目使用的是 reacttsscss 技术栈。 1.运行项目 在当前页面顶部下载本项目&#xff0c;解压后使用编辑器打开&#xff0c;然后再终端输入命令&#xff1a; npm i 下载依赖后&am…

【应急响应】Windows应急响应 - 基础命令篇

前言 在如今的数字化时代&#xff0c;Windows系统面对着越来越复杂的网络威胁和安全挑战。本文将深入探讨在Windows环境下的实战应急响应策略。我们将重点关注实际应急响应流程、关键工具的应用&#xff0c;以及如何快速准确地识别和应对安全事件。通过分享实际案例分析&#…

FIO压测磁盘性能以及需要注意的问题

一、压测类型 1、顺序读&#xff08;IO&#xff09;&#xff1a;read&#xff0c;bs1M&#xff0c;job数从1开始往上加&#xff1a;2、3、4... 2、顺序写&#xff08;IO&#xff09;&#xff1a;write&#xff0c;bs1M&#xff0c;job数从1开始往上加&#xff1a;2、3、4... …

如何通过 1688 商品详情的 API 接口获取商品的详细信息

在当今数字化商业的大背景下&#xff0c;能够从 1688 这样规模庞大且商品种类丰富的电商平台中准确、高效地获取商品的详细信息&#xff0c;对于众多企业和开发者而言&#xff0c;具有举足轻重的意义。而通过 1688 商品详情的 API 接口来实现这一目标&#xff0c;无疑是一种强大…

【ACM出版,马来西亚-吉隆坡举行】第四届互联网技术与教育信息化国际会议 (ITEI 2024)

作为全球科技创新大趋势的引领者&#xff0c;中国不断营造更加开放的科技创新环境&#xff0c;不断提升学术合作的深度和广度&#xff0c;构建惠及各方的创新共同体。这是对全球化的新贡献&#xff0c;是构建人类命运共同体的新贡献。 第四届互联网技术与教育信息化国际学术会议…

【 木兰宽松许可证】

木兰宽松许可证&#xff0c; 第1版 2019年8月 http://license.coscl.org.cn/MulanPSL 您对“软件”的复制、使用、修改及分发受木兰宽松许可证&#xff0c;第1版&#xff08;“本许可证”&#xff09;的如下条款的约束&#xff1a; 定义 “软件”是指由“贡献”构成的许可在“本…

【C++知识点总结全系列 (07)】:模板与泛型编程详细总结与分析

模板与泛型编程 1、概述(1)What&#xff08;什么是模板、泛型编程&#xff09;(2)Why(3)Which(4)模板参数A.WhatB.HowC.模板参数的类型成员D.默认模板参数 2、模板函数3、模板类(1)How&#xff08;如何定义和使用模板类&#xff09;(2)成员模板 4、模板实参推断(1)What&#xf…

入侵检测模型

入侵检测模型&#xff08;Intrusion Detection Model&#xff09;在网络安全中起着至关重要的作用。它们用于识别和响应未经授权的访问和攻击行为。以下是常见的入侵检测模型的详细介绍&#xff1a; 一、入侵检测模型分类 基于签名的入侵检测模型&#xff08;Signature-Based …

昇思25天学习打卡营第7天|Pix2Pix实现图像转换

文章目录 昇思MindSpore应用实践基于MindSpore的Pix2Pix图像转换1、Pix2Pix 概述2、U-Net架构定义UNet Skip Connection Block 2、生成器部分3、基于PatchGAN的判别器4、Pix2Pix的生成器和判别器初始化5、模型训练6、模型推理 Reference 昇思MindSpore应用实践 本系列文章主要…

大数据面试题之Flink(3)

如何确定Flink任务的合理并行度? Flink任务如何实现端到端一致? Flink如何处理背(反)压? Flink解决数据延迟的问题 Flink消费kafka分区的数据时flink件务并行度之间的关系 使用flink-client消费kafka数据还是使用flink-connector消费 如何动态修改Flink的配置&a…

实战:基于Java的大数据处理与分析平台

实战&#xff1a;基于Java的大数据处理与分析平台 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何利用Java构建高效的大数据处理与分析平台。…

Python基础003

Python流程控制基础 1.条件语句 内置函数input a input("请输入一段内容&#xff1a;") print(a) print(type(a))代码执行的时候遇到input函数&#xff0c;就会等键盘输入结果&#xff0c;已回车为结束标志&#xff0c;也就时说输入回车后代码才会执行 2.顺序执行…

pandas数据分析(5)

pandas使用Numpy的np.nan代表缺失数据&#xff0c;显示为NaN。NaN是浮点数标准中地Not-a-Number。对于时间戳&#xff0c;则使用pd.NaT&#xff0c;而文本使用的是None。 首先构造一组数据&#xff1a; 使用None或者np.nan来表示缺失的值&#xff1a; 清理DataFrame时&#xf…

深度学习之交叉验证

交叉验证&#xff08;Cross-Validation&#xff09;是一种用于评估和验证机器学习模型性能的技术&#xff0c;尤其是在数据量有限的情况下。它通过将数据集分成多个子集&#xff0c;反复训练和测试模型&#xff0c;以更稳定和可靠地估计模型的泛化能力。常见的交叉验证方法有以…

java设计模式(四)——抽象工厂模式

一、模式介绍 改善在工厂方法模式中&#xff0c;扩展时新增产品类、工厂类&#xff0c;导致项目中类巨多的场面&#xff0c;减少系统的维护成本&#xff0c;且一个工厂可以生成多种产品&#xff0c;而不是同一种的产品&#xff0c;比如一个工厂既可以生产鞋子又可以衣服&#…

解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决

Druid版本1.1.9报错Caused by: java.sql.SQLException: sql injection violation, syntax error: TODO IDENTIFIER : CREATE TEMPORARY TABLE temp_ball_classify (id int8 NOT NULL,create_time TIMESTAMP,create_by VARCHAR,classify_name VARCHAR) 代码如下&#xff1a; 测…

四川蔚澜时代电子商务有限公司打造抖音电商服务新高地

在数字化浪潮汹涌澎湃的今天&#xff0c;电商行业以其独特的魅力和强大的市场潜力&#xff0c;成为了推动经济增长的新引擎。四川蔚澜时代电子商务有限公司&#xff0c;作为这个领域的佼佼者&#xff0c;正以其专业的服务、创新的理念和卓越的实力&#xff0c;引领抖音电商服务…

用AI,每天创作200+优质内容,2分钟教会你操作!

前段时间发布了这篇“寻找爆款文案及标题的9大渠道&#xff0c;直接搬运都能搞流量&#xff01;”&#xff0c;里面我讲到如何寻找爆款标题。最近不少朋友问我&#xff0c;如何创作这个标题相关的内容。 多数平台都有风控规则&#xff0c;有些平台内容也会有字数要求。为了让大…

SpringBoot 项目整合 MyBatis 框架,附带测试示例

文章目录 一、创建 SpringBoot 项目二、添加 MyBatis 依赖三、项目结构和数据库表结构四、项目代码1、application.yml2、TestController3、TbUser4、TbUserMapper5、TestServiceImpl6、TestService7、TestApplication8、TbUserMapper.xml9、MyBatisTest 五、浏览器测试结果六、…