当前位置: 首页 > news >正文

【Pandas】pandas Index objects DatetimeIndex.dayofyear

Pandas2.2 Index objects

Time date components

方法描述
DatetimeIndex.year用于获取 DatetimeIndex 中每个日期时间元素的年份部分
DatetimeIndex.month用于获取 DatetimeIndex 中每个日期时间元素的月份部分
DatetimeIndex.day用于获取 DatetimeIndex 中每个日期时间元素的日期部分(月份中的第几天)
DatetimeIndex.hour用于获取 DatetimeIndex 中每个日期时间元素的小时部分
DatetimeIndex.minute用于获取 DatetimeIndex 中每个日期时间元素的分钟部分
DatetimeIndex.second用于获取 DatetimeIndex 中每个日期时间元素的秒部分
DatetimeIndex.microsecond用于获取 DatetimeIndex 中每个日期时间元素的微秒部分
DatetimeIndex.nanosecond用于获取时间戳中的纳秒部分(0-999999999)
DatetimeIndex.date用于获取时间戳中的日期部分(年-月-日)
DatetimeIndex.time用于获取时间戳中的时间部分(时:分:秒)
DatetimeIndex.timetz用于获取带有时区信息的时间部分(时:分:秒)
DatetimeIndex.dayofyear用于获取时间戳在一年中的天数序号

pandas.DatetimeIndex.dayofyear 属性详解

pandas.DatetimeIndex.dayofyear 是 DatetimeIndex 对象的一个属性,用于获取时间戳在一年中的天数序号(1月1日为1,12月31日为365或366)。

属性说明
  • 返回类型: 一个包含每个时间戳在一年中天数的整数数组(numpy.ndarray)
  • 取值范围:
    • 平年: 1-365
    • 闰年: 1-366
  • 别名: 也可以使用 day_of_year 访问相同属性
  • 特点:
    • 不考虑时间部分,只基于日期计算
    • 自动处理闰年情况
使用示例
示例1:基本用法
import pandas as pd# 创建包含不同日期的DatetimeIndex
dates = pd.DatetimeIndex(['2023-01-01',  # 第1天'2023-02-14',  # 情人节'2023-03-01',  # 3月第1天'2023-12-31',  # 年末'2024-12-31'   # 闰年末
])# 获取一年中的天数
day_numbers = dates.dayofyearprint("日期列表:")
print(dates)
print("\n一年中的天数:")
print(day_numbers)

输出结果:

日期列表:
DatetimeIndex(['2023-01-01', '2023-02-14', '2023-03-01', '2023-12-31','2024-12-31'],dtype='datetime64[ns]', freq=None)一年中的天数:
[  1  45  60 365 366]
示例2:与DataFrame结合使用
# 创建包含日期的DataFrame
df = pd.DataFrame({'event': ['元旦', '情人节', '三月开始', '年末', '闰年末'],'date': dates
})# 添加一年中的天数列
df['day_of_year'] = df['date'].dt.dayofyearprint("\n包含天数信息的DataFrame:")
print(df)

输出结果:

包含天数信息的DataFrame:event       date  day_of_year
0      元旦 2023-01-01            1
1    情人节 2023-02-14           45
2  三月开始 2023-03-01           60
3      年末 2023-12-31          365
4    闰年末 2024-12-31          366
示例3:分析一年中的数据分布
# 创建全年日期序列
year_dates = pd.date_range('2023-01-01', '2023-12-31', freq='D')
sales_data = pd.DataFrame({'date': year_dates,'sales': [100 + i%30 for i in range(len(year_dates))]  # 模拟销售数据
})# 添加天数信息并计算每日平均销售额
sales_data['day_of_year'] = sales_data['date'].dt.dayofyear
daily_avg = sales_data.groupby('day_of_year')['sales'].mean()print("\n前5天的平均销售额:")
print(daily_avg.head())
print("\n最后5天的平均销售额:")
print(daily_avg.tail())

输出结果:

前5天的平均销售额:
day_of_year
1    100
2    101
3    102
4    103
5    104
Name: sales, dtype: int64最后5天的平均销售额:
day_of_year
361    125
362    126
363    127
364    128
365    129
Name: sales, dtype: int64
示例4:闰年处理
# 测试闰年日期
leap_dates = pd.DatetimeIndex(['2020-02-28',  # 闰年2月28日'2020-02-29',  # 闰日'2020-03-01',  # 闰年后一天'2021-02-28',  # 平年2月28日'2021-03-01'   # 平年3月1日
])# 获取天数并创建DataFrame
leap_df = pd.DataFrame({'date': leap_dates,'day_of_year': leap_dates.dayofyear,'is_leap_year': leap_dates.is_leap_year
})print("\n闰年天数比较:")
print(leap_df)

输出结果:

闰年天数比较:date  day_of_year  is_leap_year
0 2020-02-28           59          True
1 2020-02-29           60          True
2 2020-03-01           61          True
3 2021-02-28           59         False
4 2021-03-01           60         False
示例5:可视化一年中的销售趋势
import matplotlib.pyplot as plt# 准备数据
sales_data.set_index('day_of_year', inplace=True)# 绘制全年销售趋势图
plt.figure(figsize=(12, 6))
sales_data['sales'].plot(title='2023年每日销售趋势')
plt.xlabel('一年中的天数')
plt.ylabel('销售额')
plt.grid(True)
plt.show()

输出结果: (将显示一个折线图,横轴为1-365天,纵轴为销售额)

注意事项
  1. dayofyearday_of_year 是同一属性的两种写法,功能完全相同
  2. 计算结果会自动考虑闰年情况,2月29日会被计算为第60天(闰年)
  3. 对于时间序列分析,这个属性特别适合用于:
    • 发现季节性模式
    • 分析年度周期变化
    • 比较不同年份同期的数据
  4. day 属性的区别:
    • day: 返回月份中的日期(1-31)
    • dayofyear: 返回一年中的天数(1-365/366)

这个属性在需要分析数据在一年中分布规律时非常有用,特别是在气象数据分析、销售季节性分析、年度报告生成等场景中。

http://www.dtcms.com/a/457537.html

相关文章:

  • 10BASE-T1S存在问题,还不能胜过CAN
  • 网站后台seo设置网站建设的安全性
  • 手机网站制作代理搜索引擎及门户网站介绍总结
  • MySQL、Nignx和Docker在Linux上的安装详解
  • Rust中的特征Trait
  • 《SaaS应用技术攻坚:从定制化到运维的六大核心实践拆解》
  • java-JDK8 日期时间类
  • 网站开发前途电影网站建设基本流程
  • 建网站怎么年赚网页设计网站页面搜索的代码
  • Echarts单轴坐标系散点图
  • t检验(t-test):统计学中的显著性检验方法
  • 音乐网站系统
  • Day17_最小文件系统
  • 参数迁移对迭代次数的影响
  • Coze源码分析-资源库-编辑数据库-后端源码-数据存储层
  • Python学习之Day07-08学习(Django网页Web开发)
  • STM32之IWDG-独立看门狗
  • Linux 系统编程:(一)从历史演进到 XShell 远程登录实操
  • 基于cherryusb自制daplink,并对stm32u575进行烧录过程,daplink的执行流进行trace分析
  • 洛阳瀍河建设局网站2021年10月新闻摘抄
  • 学习Java第三十四天——黑马点评48~60
  • 全功能按键非阻塞式实现
  • 学做网站的视频南京谷歌推广
  • iptables
  • STM32+8266+小程序智能家居【小白实战项目】
  • 如何部署一个Java项目
  • 联想乐享赋能笔记本选购新体验:智能解析五大系列,精准匹配用户需求
  • 西安网站设计报价怎样创建网站和网页
  • Go中使用反射的动态方法调用
  • 泰安市住房和城乡建设部网站哪个网站diy做宝宝衣服