在Series中通过dt就可以获得其日期属性 import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv('ahdy-2019-03-04-data.csv', sep=',', parse_dates=['发布时间']) print(df.shape) print(df.columns) print(df.dtypes) df = df.loc[df['发布时间'].dt.year ==
0.576699, 0.206171], [ 0.84849 , 0.539935, 0.279976]]) Coordinates: * time (time) datetime64 0.977073, 0.417421], [ 0.984572, 0.576699, 0.206171]]) Coordinates: * time (time) datetime64 IN' # 选择单个数 >> arr[0, 0] <xarray.DataArray ()> array(0.7924108938509337) Coordinates: time datetime64 0.978191, 0.88482 ], [ 0.206171, 0.984572, 0.576699]]) Coordinates: * time (time) datetime64 >> ds <xarray.Dataset> Dimensions: (space: 3, time: 4) Coordinates: * time (time) datetime64[
# 原先属于字符串,转datetime df['datetime64'] = pd.to_datetime(df['统计日期']) df['year'] = df['datetime64'].dt.year df['quarter'] = df['datetime64'].dt.quarter df['month'] = df['datetime64'].dt.month df['week'] = df[ 'datetime64'].dt.week df['day'] = df['datetime64'].dt.day df['hour'] = df['datetime64'].dt.hour df['minute '] = df['datetime64'].dt.minute df['second'] = df['datetime64'].dt.second df['weekday'] = df['datetime64 '].dt.weekday df['weekofyear'] = df['datetime64'].dt.weekofyear df['dayofyear'] = df['datetime64'].dt.dayofyear
[ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 Dimensions without [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 Dimensions without [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 Dimensions without [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 day [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 * day
# 字符串转日期 df['datetime64'] = pd.to_datetime(df['date']) 日期转字符串 ? # 获取前一天日期 df['yesterday'] = df['datetime64'] - datetime.timedelta(days=1) 获取今天日期 ? # 提取日期实体 df['day'] = df['datetime64'].dt.day #天 df['weekday'] = df['datetime64'].dt.weekday #周 df['month '] = df['datetime64'].dt.month #月 df['year'] = df['datetime64'].dt.year #年 日期差计算(天) ? # 日期差计算(天) df['day_dif'] = (df['datetime64'] - df['yesterday']).dt.days 日期差计算(小时) ?
0.038195, 0.314183], [ 0.824511, 0.310411, 0.810956]]) Coordinates: * time (time) datetime64 :00:00.000000000', '2000-01-03T00:00:00.000000000', '2000-01-04T00:00:00.000000000'], dtype='datetime64 [ns]') Coordinates: * dim_0 (dim_0) datetime64[ns] 2000-01-01 2000-01-02 2000-01-03 2000-01-04 [ns]') Coordinates: * dim_0 (dim_0) datetime64[ns] 2000-01-01 2000-01-02 2000-01-03 2000-01-04 >> foo['ranking'] = ('space', [1, 2, 3]) >> foo.coords Coordinates: * time (time) datetime64[ns
42.63 42.59 lon (x, y) float64 -99.83 -99.32 -99.79 -99.23 * time (time) datetime64 [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 day <xarray.Dataset> Dimensions: (time: 3, x: 2, y: 2) Coordinates: * time (time) datetime64 [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 day [ns] 2014-09-06 2014-09-07 2014-09-08 reference_time datetime64[ns] 2014-09-05 day
这是类似于时区感知 dtype(datetime64[ns, tz])的 pandas 扩展 dtype。 [ns]") Out[388]: DatetimeIndex(['2016-01-01', '2016-02-01', '2016-03-01'], dtype='datetime64[ns]', freq [ns, Europe/Warsaw]', freq=None) ```### 时区系列操作 具有**naive**值的`Series`以`datetime64[ns]`的 dtype 表示。 06:00:00+01:00 1 2013-01-02 06:00:00+01:00 2 2013-01-03 06:00:00+01:00 dtype: datetime64[ns, CET [ns]`或`datetime64[ns, tz]` | `to_datetime`或`date_range` | | 时间增量 | `Timedelta` | `TimedeltaIndex` | `
01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-25'], dtype='datetime64 01-31', '2020-02-29', '2020-03-31', '2020-04-30', '2020-05-31'], dtype='datetime64 11-03', '2011-11-04', '2011-11-05', '2011-11-06', '2011-11-07'], dtype='datetime64 11-03', '2011-11-04', '2011-11-07', '2011-11-08', '2011-11-09'], dtype='datetime64 11-07', '2011-11-08', '2011-11-09', '2011-11-10', '2011-11-11'], dtype='datetime64
2、datetime64 的使用 Ⅰ、简单示例 例一: import numpy as np a = np.datetime64('2019-03-01') print(a) 输出: 2019-03- Ⅱ、单位使用 datetime64 可以指定使用的单位,单位包括年('Y'),月('M'),周('W')和天('D'),而时间单位是小时('h'),分钟('m') ),秒('s'),毫秒('ms'),微秒 事实上,如果两个 datetime64 对象具有不同的单位,它们可能仍然代表相同的时刻。并且从较大的单位(如月份)转换为较小的单位(如天数)是安全的。 Ⅳ、Datetime64 和 Timedelta64 运算 例一: timedelta64 表示两个 Datetime64 之间的差。 timedelta64 也是带单位的,并且和相减运算中的两个 Datetime64 中的较小的单位保持一致。
同时,一系列的时间戳可以组成DatetimeIndex,而将它放到Series中后,Series的类型就变为了datetime64[ns],如果有涉及时区则为datetime64[ns, tz],其中tz 通过这个简单的例子,就能够容易地总结出官方文档中的这个表格: 概念 单元素类型 数组类型 pandas数据类型 Date times Timestamp DatetimeIndex datetime64 其中,to_datetime能够把一列时间戳格式的对象转换成为datetime64[ns]类型的时间序列. 这里对于datetime64[ns]类型而言,可以大致分为三类操作:取出时间相关的属性、判断时间戳是否满足条件、取整操作。 -01 20:00:00 1 2020-01-01 21:00:00 2 2020-01-01 22:00:00 dtype: datetime64[ns] 4.
04-07', '2022-04-08', '2022-04-09', '2022-04-10', '2022-04-11'], dtype='datetime64 04-07', '2022-04-08', '2022-04-09', '2022-04-10', '2022-04-11'], dtype='datetime64 04-01', '2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05'], dtype='datetime64 05-28', '2022-05-29', '2022-05-30', '2022-05-31', '2022-06-01'], dtype='datetime64 04-01 08:00:00', '2022-04-01 12:00:00', '2022-04-01 16:00:00'], dtype='datetime64
06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'], dtype='datetime64 06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'], dtype='datetime64 06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'], dtype='datetime64 31', '2022-02-28', '2022-03-31', '2022-04-30', '2022-05-31'], dtype='datetime64 24', '2022-09-25', '2022-09-26', '2022-09-27', '2022-09-28'], dtype='datetime64
EngineCREATE TABLE IF NOT EXISTS data_sync.test_queue( name String, age int, gongzhonghao String, my_time DateTime64 MergeTree + MATERIALIZED + AggregatingMergeTree图片1 MergeTreeCREATE TABLE base( `i` Int64, `s` String, `v` DateTime64 Aggregating MergeTreeCREATE TABLE updating( `i` Int64, `s` String, `version` AggregateFunction(max, DateTime64 ), `id` AggregateFunction(argMaxIf, Int64, DateTime64, UInt8), `tag` AggregateFunction(argMaxIf, String , DateTime64, UInt8), `level` AggregateFunction(argMaxIf, Int32, DateTime64, UInt8))ENGINE = AggregatingMergeTreePARTITION
我正在尝试在datetime64 [ns]类型的列上运行fillna.当我运行类似的东西: DF [ ‘日期’].fillna(日期时间( “2000-01-01”)) 我明白了: TypeError: 2013-01-06 00:00:00 6 2013-01-07 00:00:00 7 NaT 8 2013-01-09 00:00:00 9 2013-01-10 00:00:00 dtype: datetime64 00:00 6 2013-01-07 00:00:00 7 2012-01-01 00:00:00 8 2013-01-09 00:00:00 9 2013-01-10 00:00:00 dtype: datetime64
, unit='s') Out[7]: 0 2017-03-22 15:16:45 1 2020-05-23 01:03:25 2 2023-07-24 10:50:05 dtype: datetime64 03-22 15:16:45.433502912 1 2020-05-23 01:03:25.433502912 2 2023-07-24 10:50:05.433502912 dtype: datetime64 (s, format='%Y%m%d', errors='coerce') Out[12]: 0 2020-01-01 1 2020-02-02 2 NaT dtype: datetime64 unit='s') Out[14]: 0 2017-03-22 15:16:45 1 2020-05-23 01:03:25 2 2023-07-24 10:50:05 dtype: datetime64 数据类型有以下几种: 数字:number 或 int、float 布尔:bool 时间:datetime64 时间差:timedelta64 类别:category 字符串:string 对象:object
,分钟,秒,毫秒,微秒,纳秒 print(pd.Timedelta(hours=2)) ''' 0 days 02:00:00 ''' 运算操作 可以Series/DataFrame上直接操作,通过在datetime64 01-03 2 days ''' 相加 print(df['A'] + df['B']) ''' 0 2012-01-01 1 2012-01-03 2 2012-01-05 dtype: datetime64 [ns] ''' 相减 print(df['A'] - df['B']) ''' 0 2012-01-01 1 2012-01-01 2 2012-01-01 dtype: datetime64
(year=2023,month=12,day=1)).astype('datetime64[M]') date=np.arange(date1,date2,np.timedelta64(1, 'M') ('2023-01-01',dtype='datetime64[h]') date 这里数组值变为带小时数据,type也对应变化。 例如生成一个月的每日数据: date=np.arange(np.array('2023-01-01').astype('datetime64[D]'), np.array( ,比如更换为以月为单位: date=np.arange(np.array('2023-01-01').astype('datetime64[M]'), np.array(' 2024-01-01').astype('datetime64[M]'), np.timedelta64(1, 'M')) date 这里已经被收束到月单位,所以没有-
[M]') x # array(['2015-01', '2015-02', '2015-03'], dtype='datetime64[M]') # 但是只包含日期单位时,不能指定时间单位 y 相减会生成 timedelta64 x # array(['2015-01', '2015-02', '2015-03'], dtype='datetime64[M]') y = np.datetime64 ('2015-01-01') x - y # array([ 0, 31, 59], dtype='timedelta64[D]') # 我们也可以将 datetime64 与 timedelta64 [M]') # tolist 将 NumPy 数组转换成 Python 列表 # 如果数组是 datetime64 类型 # 每个元素会转为原生的 datetime.data x.tolist() ''' [datetime.date(2015, 1, 1), datetime.date(2015, 2, 1), datetime.date(2015, 3, 1)] ''' # datetime64
另见 NumPy numpy.random.choice()文档 matplotlib boxplot()函数文档 有关箱形图的维基百科 使用datetime64类型和相关的 API datetime64 操作步骤 要熟悉datetime64,请按照下列步骤操作: 从字符串创建一个datetime64,如下所示: print(np.datetime64('2015-05-21')) 前一行输出以下输出: numpy.datetime64('2015-05-21') 我们使用YYYY-MM-DD格式在 2015 年 5 月 21 日创建了datetime64类型,其中Y对应于年份,M对应于月份,D对应于每月的一天 相互减去两个datetime64对象: print(local - with_offset) 结果显示如下: numpy.timedelta64(-480,'m') 减法创建一个timedelta64 工作原理 您了解了datetime64 NumPy 类型。 这种数据类型使我们可以轻松地操纵日期和时间。 它的功能包括简单的算术运算和使用常规 NumPy 函数创建数组。