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

【Pandas】pandas Index objects PeriodIndex day_of_week

Pandas2.2 Index objects

PeriodIndex Properties

方法描述
PeriodIndex.day用于获取 PeriodIndex 中每个周期对应的日(day)组件
PeriodIndex.dayofweek用于获取 PeriodIndex 中每个周期对应的星期几
PeriodIndex.day_of_week用于获取 PeriodIndex 中每个周期对应日期的星期几(数值形式)

pandas.PeriodIndex.day_of_week 详解及修正示例

方法描述

pandas.PeriodIndex.day_of_week 是 PeriodIndex 对象的一个属性,用于获取 PeriodIndex 中每个周期对应日期的星期几(数值形式)。需要注意的是,PeriodIndex 必须具有日(daily)或更高频率(如小时、分钟等)才能使用此属性。

返回值

返回一个 Index 对象,包含每个周期对应日期的星期几数值:

  • 0 表示星期一 (Monday)
  • 1 表示星期二 (Tuesday)
  • 6 表示星期日 (Sunday)
正确的使用示例
import pandas as pd
import numpy as np# 创建一个每日频率的 PeriodIndex
periods_daily = pd.period_range('2023-01-01', periods=7, freq='D')
print("原始 PeriodIndex:")
print(periods_daily)
print()# 获取星期几数值
day_of_week_values = periods_daily.day_of_week
print("对应的星期几数值 (0=周一, 6=周日):")
print(day_of_week_values)
print()# 正确获取星期名称的方法 - 通过 start_time 属性
day_names = periods_daily.start_time.day_name()
print("对应的星期名称:")
print(day_names)
print()# 创建包含更多信息的 DataFrame 来展示实际用途
df = pd.DataFrame({'period': periods_daily,'day_of_week': day_of_week_values,'day_name': day_names
})print("完整的数据展示:")
print(df)

执行结果:

原始 PeriodIndex:
PeriodIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04','2023-01-05', '2023-01-06', '2023-01-07'],dtype='period[D]')对应的星期几数值 (0=周一, 6=周日):
Int64Index([6, 0, 1, 2, 3, 4, 5], dtype='int64')对应的星期名称:
Index(['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday'],dtype='object')完整的数据展示:period  day_of_week   day_name
0 2023-01-01            6     Sunday
1 2023-01-02            0     Monday
2 2023-01-03            1    Tuesday
3 2023-01-04            2  Wednesday
4 2023-01-05            3   Thursday
5 2023-01-06            4     Friday
6 2023-01-07            5   Saturday
实际应用场景(修正版)
import pandas as pd
import numpy as np# 模拟一周的商店营业数据
dates = pd.period_range('2023-01-01', periods=30, freq='D')  # 30天数据
sales = np.random.randint(1000, 5000, size=30)  # 随机销售数据store_data = pd.DataFrame({'date': dates,'sales': sales
})# 正确添加星期相关信息
store_data['day_of_week'] = store_data['date'].dt.day_of_week
store_data['day_name'] = store_data['date'].dt.start_time.dt.day_name()
store_data['is_weekend'] = store_data['day_of_week'].isin([5, 6])  # 5=Saturday, 6=Sundayprint("商店营业数据示例:")
print(store_data.head(10))
print()# 分析工作日与周末的平均销售情况
weekday_weekend_analysis = store_data.groupby('is_weekend')['sales'].agg(['mean', 'std'])
weekday_weekend_analysis.index = ['工作日', '周末']
print("工作日与周末销售对比:")
print(weekday_weekend_analysis)
print()# 分析每天的销售模式
daily_pattern = store_data.groupby(['day_of_week', 'day_name'])['sales'].mean().reset_index()
daily_pattern = daily_pattern.sort_values('day_of_week')print("各星期的平均销售额:")
for _, row in daily_pattern.iterrows():print(f"{row['day_name']:>9} ({row['day_of_week']}): {row['sales']:.2f}")
其他获取星期相关信息的方法
import pandas as pd# 创建 PeriodIndex
periods = pd.period_range('2023-01-01', periods=7, freq='D')
print("原始 PeriodIndex:")
print(periods)
print()# 方法1: 使用 day_of_week 获取数值
print("星期几数值 (day_of_week):")
print(periods.day_of_week)
print()# 方法2: 使用 start_time.day_name() 获取名称
print("星期几名称 (start_time.day_name()):")
print(periods.start_time.day_name())
print()# 方法3: 使用 start_time.isocalendar() 获取 ISO 周信息
iso_calendar = periods.start_time.isocalendar()
print("ISO 周信息:")
print("年份:", iso_calendar.year.values)
print("周数:", iso_calendar.week.values)
print("星期:", iso_calendar.day.values)  # 这里的 day 也是 1-7,其中 1=周一,7=周日
注意事项
  1. [PeriodIndex]没有直接的 day_name() 方法,需要通过 start_time.day_name() 来获取星期名称

  2. [day_of_week] 属性返回的数值范围是 0-6,其中 0 表示星期一,6 表示星期日

  3. 对于月、季、年等低频 PeriodIndex,不能直接使用 [day_of_week],需要先通过 [start_time] 转换:

    monthly_periods = pd.period_range('2023-01', periods=3, freq='M')
    # 错误方式: monthly_periods.day_of_week  # 会出错
    # 正确方式:
    monthly_weekdays = monthly_periods.start_time.day_of_week
    
  4. 在处理 PeriodIndex 数据时,经常需要使用 .dt.start_time.dt.end_time 来访问具体的日期时间功能

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

相关文章:

  • Flink Table API SQL 概念、常用 API 与工程落地
  • rag-mcp
  • 建筑人才网站关于建网站新闻
  • 【设计模式】UML和设计原则
  • 东莞网站开发找谁建筑网站建设公司
  • 2025进博会4310家展商名录
  • 手机软件开发网站个人网站名称有哪些
  • 名气特别高的手表网站遵义市做网站的地方
  • LNMT部署zrlog个人博客(动静分离集群)
  • 企业网站功能模块设计阜阳哪里有做网站的
  • 如何做网站赚流量钱织梦做中英文企业网站
  • 【Unet++ MobileNetv2语义分割部署至RK3588】模型训练→转换RKNN→开发板部署
  • 深圳做网站做app我想自己做网站可以赚钱
  • 新颖网站页面设计wordpress弹窗登录注册插件
  • 服务端开发的基本概念
  • 快递鸟电子面单打印接口技术对接文档
  • FreeRTOS事件组全解析:多任务同步核心技巧
  • 网站的头尾和导航的公用文件wordpress主题 问答
  • 【GlobalMapper精品教程】096:连接PostGIS数据库(Postgresql)
  • 网站备案服务商查询网站域名使用期
  • 机器学习日报12
  • 【文档】Stomp 协议
  • 自己的网站怎么接广告联盟设计库
  • 网站怎么解析域名解析网站制作公司官网南京
  • liunx文件及目录管理和vim编辑
  • [leetcode]对顶堆,对数时间添加元素,常数时间取中位数(或者第K大的数)
  • 公司软件网站建设免费dw网页模板
  • 力扣146LRU缓存
  • 网站怎么做充值系统下载网站需要写哪些内容
  • 网站有没有做网站地图怎么看vi设计案例ppt