pandas时间序列之如何将int转换成datetime格式

目录
  • 将int转换成datetime格式
    • 原始时间格式
  • pandas 时间数据处理
    • 转化时间类型
    • 生成时间序列
    • 提取时间属性
    • 计算时间间隔
    • 计算时间推移
    • 获取当前机器的支持的最大时间和最小时间

将int转换成datetime格式

原始时间格式

users['timestamp_first_active'].head()

原始结果:

0 20090319043255
1 20090523174809
2 20090609231247
3 20091031060129
4 20091208061105
Name: timestamp_first_active, dtype: object

错误的转换

pd.to_datetime(sers['timestamp_first_active'])

错误的结果类似这样:

0 1970-01-01 00:00:00.020201010
1 1970-01-01 00:00:00.020200920
Name: time, dtype: datetime64[ns]

正确的做法

先将int转换成str ,再转成时间:

users['timestamp_first_active']=users['timestamp_first_active'].astype('str')
users['timestamp_first_active']=pd.to_datetime(users['timestamp_first_active'])

pandas 时间数据处理

转化时间类型

to_datetime()方法

to_datetime()方法支持将 int, float, str, datetime, list, tuple, 1-d array, Series, DataFrame/dict-like 类型的数据转化为时间类型

import pandas as pd

# str ---> 转化为时间类型:
ret = pd.to_datetime('2022-3-9')
print(ret)
print(type(ret))
"""
2022-03-09 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>   ---pandas中默认支持的时间点的类型
"""

# 字符串的序列 --->转化成时间类型:
ret = pd.to_datetime(['2022-3-9', '2022-3-8', '2022-3-7', '2022-3-6'])
print(ret)
print(type(ret))
"""
DatetimeIndex(['2022-03-09', '2022-03-08', '2022-03-07', '2022-03-06'], dtype='datetime64[ns]', freq=None)
<class 'pandas.core.indexes.datetimes.DatetimeIndex'> ----pandas中默认支持的时间序列的类型
"""
# dtype = 'datetime64[ns]' ----> numpy中的时间数据类型!

DatetimeIndex()方法

DatetimeIndex()方法支持将一维 类数组( array-like (1-dimensional) )转化为时间序列

# pd.DatetimeIndex 将 字符串序列 转化为 时间序列
ret = pd.DatetimeIndex(['2022-3-9', '2022-3-8', '2022-3-7', '2022-3-6'])
print(ret)
print(type(ret))
"""
DatetimeIndex(['2022-03-09', '2022-03-08', '2022-03-07', '2022-03-06'], dtype='datetime64[ns]', freq=None)
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
"""

生成时间序列

使用date_range()方法可以生成时间序列。

时间序列一般不会主动生成,往往是在发生某个事情的时候,同时记录一下发生的时间!

ret = pd.date_range(
    start='2021-10-1',  # 开始点
    # end='2022-1-1',  # 结束点
    periods=5,  # 生成的元素的个数 和结束点只需要出现一个即可!
    freq='W',  # 生成数据的步长或者频率, W表示Week(星期)
)
print(ret)
"""
DatetimeIndex(['2021-10-03', '2021-10-10', '2021-10-17', '2021-10-24', '2021-10-31'],
              dtype='datetime64[ns]', freq='W-SUN')
"""

提取时间属性

使用如下数据作为初始数据(type:<class ‘pandas.core.frame.DataFrame’>):

# 转化为 pandas支持的时间序列之后再提取时间属性!
data.loc[:, 'time_list'] = pd.to_datetime(data.loc[:, 'time_list'])

# 可以通过列表推导式来获取时间属性
# 年月日
data['year'] =  [tmp.year for tmp in data.loc[:, 'time_list']]
data['month'] = [tmp.month for tmp in data.loc[:, 'time_list']]
data['day'] =   [tmp.day for tmp in data.loc[:, 'time_list']]
# 时分秒
data['hour'] =   [tmp.hour for tmp in data.loc[:, 'time_list']]
data['minute'] = [tmp.minute for tmp in data.loc[:, 'time_list']]
data['second'] = [tmp.second for tmp in data.loc[:, 'time_list']]
# 日期
data['date'] = [tmp.date() for tmp in data.loc[:, 'time_list']]
# 时间
data['time'] = [tmp.time() for tmp in data.loc[:, 'time_list']]
print(data)

# 一年中的第多少周
data['week'] = [tmp.week for tmp in data.loc[:, 'time_list']]

# 一周中的第多少天
data['weekday'] = [tmp.weekday() for tmp in data.loc[:, 'time_list']]

# 季度
data['quarter'] = [tmp.quarter for tmp in data.loc[:, 'time_list']]

# 一年中的第多少周 ---和week是一样的
data['weekofyear'] = [tmp.weekofyear for tmp in data.loc[:, 'time_list']]

# 一周中的第多少天 ---和weekday是一样的
data['dayofweek'] = [tmp.dayofweek for tmp in data.loc[:, 'time_list']]

# 一年中第 多少天
data['dayofyear'] = [tmp.dayofyear for tmp in data.loc[:, 'time_list']]

# 周几		---返回英文全拼
data['day_name'] = [tmp.day_name() for tmp in data.loc[:, 'time_list']]

# 是否为 闰年	---返回bool类型
data['is_leap_year'] = [tmp.is_leap_year for tmp in data.loc[:, 'time_list']]

print('data:\n', data)

dt属性

Pandas还有dt属性可以提取时间属性。

data['year'] = data.loc[:, 'time_list'].dt.year
data['month'] = data.loc[:, 'time_list'].dt.month
data['day'] = data.loc[:, 'time_list'].dt.day

print('data:\n', data)

计算时间间隔

# 计算时间间隔!
ret = pd.to_datetime('2022-3-9 10:08:00') - pd.to_datetime('2022-3-8')
print(ret)  		# 1 days 10:08:00
print(type(ret))  	# <class 'pandas._libs.tslibs.timedeltas.Timedelta'>
print(ret.days)		# 1

计算时间推移

配合Timedelta()方法可计算时间推移

Timedelta 中支持的参数 weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds

res = pd.to_datetime('2022-3-9 10:08:00') + pd.Timedelta(weeks=5)
print(res)						# 2022-04-13 10:08:00
print(type(res))				# <class 'pandas._libs.tslibs.timestamps.Timestamp'>
print(pd.Timedelta(weeks=5))	# 35 days 00:00:00

获取当前机器的支持的最大时间和最小时间

# 获取当前机器的支持的最大时间和 最小时间
print('max :',pd.Timestamp.max)
print('min :',pd.Timestamp.min)
"""
max : 2262-04-11 23:47:16.854775807
min : 1677-09-21 00:12:43.145225
"""

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Pandas时间序列基础详解(转换,索引,切片)

    时间序列的类型: 时间戳:具体的时刻 固定的时间区间:例如2007年的1月或整个2010年 时间间隔:由开始时间和结束时间表示,时间区间可以被认为是间隔的特殊情况 实验时间和消耗时间:每个时间是相对于特定开始时间的时间的量度,(例如自从被放置在烤箱中每秒烘烤的饼干的直径) 日期和时间数据的类型及工具 datetime模块中的类型: date 使用公历日历存储日历日期(年,月,日) time 将时间存储为小时,分钟,秒,微秒 datetime 存储日期和时间 timedelta 表示两个datet

  • Pandas中时间序列的处理大全

    一.时间序列数据的生成 pd.date_ranges生成时间序列 time格式:年月日分隔符号可以是"-","/",空格这三种格式(年月日.日月年.月日年都可以):时分秒只能用":"分隔,顺序只能是时分秒. start:起始时间(time) end:终止时间(time) periods:期数(int),使用时只能出现start或者end,两者不能同时出现 freq:频率(numY,num年:numM,num月:numD,num日),详细参数见下表

  • Pandas 时间序列分析中的resample函数

    Pandas 中的resample函数用于各种频率的转换工作. resample的参数如下: 参数 描述 freq 转换频率 axis=0 重采样的轴 closed=None 在降采样中,设置各时间段哪段是闭合的 label=None 在降采样中,如何设置聚合值的标签 下面着重介绍: closed和label参数label就是8:00 -8:30会被标记成8:00还是8:30closed就是哪段是闭区间 w=pd.date_range(start = '2021/2/1', periods=10

  • pandas时间序列之pd.to_datetime()的实现

    目录 解析来自各种来源和格式的时间序列信息 时间序列解析之小试牛刀 时间序列解析之磨刀霍霍 1. 指定识别的format 2. 遇到DataFrame 3. 遇到不能识别的处理方法 4. origin的用法 解析来自各种来源和格式的时间序列信息 pd.to_datetime( arg,#int, float, str, datetime, list, tuple, 1-d array, Series DataFrame/dict-like errors='raise',# {'ignore',

  • Pandas时间序列:时期(period)及其算术运算详解

    import pandas as pd import numpy as np 一.时间类型及其在python中对应的类型 时间戳–timestamp 时间间隔–timedelta 时期–period 二.时期 时期表示的是时间区间,比如数日.数月.数季.数年等 1.定义一个Period p = pd.Period(2007,freq='A-DEC') #表示以12月作为结束的一整年,这里表示从2007-01-01到2017-12-31的全年 p Period('2007', 'A-DEC') 2

  • Pandas处理时间序列数据操作详解

    目录 前言 一.获取时间 二.时间索引 三.时间推移 前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档.而Pandas是处理这些数据很好用的工具包.此篇博客基于Jupyter之上进行演示,本篇博客的愿景是希望我或者读者通过阅读这篇博客能够学会方法并能实际运用.希望读者看完能够提出问题或者看法,博主会长期维护博客做及时更新.纯分享,希望大家喜欢. 一.获取时间 python自带datetime库,通过调用此库可以获取本地时间 fr

  • pandas时间序列之如何将int转换成datetime格式

    目录 将int转换成datetime格式 原始时间格式 pandas 时间数据处理 转化时间类型 生成时间序列 提取时间属性 计算时间间隔 计算时间推移 获取当前机器的支持的最大时间和最小时间 将int转换成datetime格式 原始时间格式 users['timestamp_first_active'].head() 原始结果: 0 200903190432551 200905231748092 200906092312473 200910310601294 20091208061105Nam

  • C#实现集合转换成json格式数据的方法

    本文实例讲述了C#实现集合转换成json格式数据的方法.分享给大家供大家参考,具体如下: /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string ToJson(DataTable dt) { if (dt != null

  • C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法

    在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况.之前的方法比较笨拙,需要给不同的类型,各自写一个转换的函数.但是后来接触反射后,就知道可以利用反射去读取一个类型的所有成员,也就意味着可以替不同的类型,创建更通用的方法.这个例子是这样做的:利用反射,读取一个类型的所有属性,然后再把属性转换成XML元素的属性或者子元素.下面注释比较完整,就话不多说了,有需要看代码吧! using System; using System.Collections.Generic;

  • java将XML文档转换成json格式数据的示例

    本文介绍了java将XML文档转换成json格式数据的示例,分享给大家,具体如下: 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源代码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; imp

  • java 读取excel文件转换成json格式的实例代码

    需要读取excel数据转换成json数据,写了个测试功能,转换正常: JSON转换:org.json.jar 测试类:  importFile.java: package com.siemens.util; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import org.apache.poi.ss.usermodel.R

  • 将List对象列表转换成JSON格式的类实现方法

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON

  • 把普通对象转换成json格式的对象的简单实例

    1.什么叫做JSON? JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var jsonObj = {"name": "中国", "age": 5000};//->JSON格式的对象 (只要把普通对象的属性名用""(不能是'')包起来,这样的格式就是我们JSON格式的对象) var data = [

  • php将数组转换成csv格式文件输出的方法

    本文实例讲述了php将数组转换成csv格式文件输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $sales = array( array('east','2005-01-01','2005-02-01',12.54), array('west','2005-01-01','2005-02-01',546.33), array('south','2005-01-01','2005-02-01',93.26), array('north','2005-01-01','2005-02

  • 把图象文件转换成XML格式文件

    把图象文件转换成XML格式文件 利用.NET 框架下的FromBase64String和ToBase64String方法可以很容易地实现图象文件和XML文件的互换.这样可以轻易解决以XML格式保存图片的问题.代码如下: Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 " Public Sub New() MyBase.New() InitializeComponent(

  • js 将图片连接转换成base64格式的简单实例

    我们把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求.坏处呢,就是浏览器不会缓存这种图像.现在我们提供一个js: function convertImgToBase64(url, callback, outputFormat){ var canvas = document.createElement('CANVAS'), ctx = canvas.getContext('2d'), img = new Image; img.crossOrigin = 'Ano

随机推荐