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

Pandas数据处理(4):时间数据处理与分组聚合

8、时间数据处理

import pandas as pd
d=pd.Timestamp("2026.3.31 22:26")
print(d)
print(type(d))
print(d.year,d.month,d.day,d.hour,d.minute,d.second,d.quarter)
print(F"是否月底:{d.is_month_end}")
print(F"星期几:{d.day_name()}")
print(F"转化为天:{d.to_period("D")}")
print(F"转化为季度:{d.to_period("Q")}")
print(F"转化为月度:{d.to_period("M")}")
print(F"转化为年度:{d.to_period("Y")}")
print(F"转化为周维度:{d.to_period("W")}")
2026-03-31 22:26:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
2026 3 31 22 26 0 1
是否月底:True
星期几:Tuesday
转化为天:2026-03-31
转化为季度:2026Q1
转化为月度:2026-03
转化为年度:2026
转化为周维度:2026-03-30/2026-04-05
#字符串转timestep
a=pd.to_datetime("2026.3.31 22:26")
print(a,type(a))
2026-03-31 22:26:00 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
#dataframe日期转换
df=pd.DataFrame({"sales":[1,2,3],"date":["20260101","20260102","20260103"]
})
df["datatime"]=pd.to_datetime(df["date"])
df["week"]=df["datatime"].dt.day_name()
print(df)
   sales      date   datatime      week
0      1  20260101 2026-01-01  Thursday
1      2  20260102 2026-01-02    Friday
2      3  20260103 2026-01-03  Saturday
# #csv日期转换
# df1=pd.read_csv("data/employees.csv",parse_dates=["hire_date"])
# print(type(df1["hire_date"].values[0]))
#相当于以下字段(上边的方法不稳定)
df1=pd.read_csv("data/employees.csv")
df1["date_time"]=pd.to_datetime(df1.hire_date)
df1["week"]=df1["date_time"].dt.day_name()
#日期数据做索引
df1.set_index("hire_date",inplace=True)
df1
employee_idnamedepartmentpositionsalarydate_timeweek
hire_date
2022-02-02EMP001赵洋产品部数据分析师37652022-02-02Wednesday
2021-11-25EMP002周磊运营部数据运营57722021-11-25Thursday
2024-09-29EMP003刘洋产品部需求分析师26082024-09-29Sunday
2023-12-08EMP004吴伟市场部活动执行46992023-12-08Friday
2023-09-19EMP005张勇人事部培训专员92772023-09-19Tuesday
........................
2023-01-15EMP096李敏销售部销售主管99222023-01-15Sunday
2021-07-27EMP097赵静销售部区域经理65662021-07-27Tuesday
2022-01-29EMP098周娜运营部用户运营20042022-01-29Saturday
2023-05-31EMP099王娜销售部大客户销售35672023-05-31Wednesday
2024-04-01EMP100吴芳运营部商家运营49932024-04-01Monday

100 rows × 7 columns

df1.loc["2022-02-02":"2023-05-31"]
employee_idnamedepartmentpositionsalarydate_timeweek
hire_date
2022-02-02EMP001赵洋产品部数据分析师37652022-02-02Wednesday
2021-11-25EMP002周磊运营部数据运营57722021-11-25Thursday
2024-09-29EMP003刘洋产品部需求分析师26082024-09-29Sunday
2023-12-08EMP004吴伟市场部活动执行46992023-12-08Friday
2023-09-19EMP005张勇人事部培训专员92772023-09-19Tuesday
........................
2021-09-02EMP095王静市场部活动执行57072021-09-02Thursday
2023-01-15EMP096李敏销售部销售主管99222023-01-15Sunday
2021-07-27EMP097赵静销售部区域经理65662021-07-27Tuesday
2022-01-29EMP098周娜运营部用户运营20042022-01-29Saturday
2023-05-31EMP099王娜销售部大客户销售35672023-05-31Wednesday

99 rows × 7 columns

#datetime计算时间间隔
d1=pd.Timestamp("2021-09-02")
d2=pd.Timestamp("2023-05-31")
print(d2-d1)
print(type(d2-d1))
636 days 00:00:00
<class 'pandas._libs.tslibs.timedeltas.Timedelta'>
df["delta_days"]=df.datatime-df.datatime[0]
df.set_index("delta_days",inplace=True)
df
salesdatedatatimeweek
delta_days
0 days1202601012026-01-01Thursday
1 days2202601022026-01-02Friday
2 days3202601032026-01-03Saturday
print(df.loc["1 days":"2 days"])
            sales      date   datatime      week
delta_days                                      
1 days          2  20260102 2026-01-02    Friday
2 days          3  20260103 2026-01-03  Saturday
#生成时间序列
days=pd.date_range("2026-01-01 00:01",periods=20,freq="W")
days
DatetimeIndex(['2026-01-04 00:01:00', '2026-01-11 00:01:00','2026-01-18 00:01:00', '2026-01-25 00:01:00','2026-02-01 00:01:00', '2026-02-08 00:01:00','2026-02-15 00:01:00', '2026-02-22 00:01:00','2026-03-01 00:01:00', '2026-03-08 00:01:00','2026-03-15 00:01:00', '2026-03-22 00:01:00','2026-03-29 00:01:00', '2026-04-05 00:01:00','2026-04-12 00:01:00', '2026-04-19 00:01:00','2026-04-26 00:01:00', '2026-05-03 00:01:00','2026-05-10 00:01:00', '2026-05-17 00:01:00'],dtype='datetime64[ns]', freq='W-SUN')

9、分组聚合

计算不同部门的平均薪资

df=pd.read_csv("data/employees.csv")
df
employee_idnamedepartmentpositionsalaryhire_date
0EMP001赵洋产品部数据分析师37652022-02-02
1EMP002周磊运营部数据运营57722021-11-25
2EMP003刘洋产品部需求分析师26082024-09-29
3EMP004吴伟市场部活动执行46992023-12-08
4EMP005张勇人事部培训专员92772023-09-19
.....................
95EMP096李敏销售部销售主管99222023-01-15
96EMP097赵静销售部区域经理65662021-07-27
97EMP098周娜运营部用户运营20042022-01-29
98EMP099王娜销售部大客户销售35672023-05-31
99EMP100吴芳运营部商家运营49932024-04-01

100 rows × 6 columns

#分组
df.groupby("department").groups
{'产品部': [0, 2, 8, 15, 20, 32, 34, 44, 47, 48, 53, 55, 58, 63, 72, 75, 80, 86], '人事部': [4, 5, 16, 19, 26, 42, 68, 70, 79, 81, 84, 90, 93], '市场部': [3, 6, 9, 10, 12, 13, 17, 28, 29, 41, 51, 52, 65, 66, 67, 69, 82, 91, 94], '技术部': [7, 21, 23, 24, 31, 35, 57, 61, 76, 78], '财务部': [14, 25, 46, 49, 56, 62, 71, 74, 85], '运营部': [1, 11, 30, 33, 38, 40, 45, 50, 59, 73, 83, 88, 92, 97, 99], '销售部': [18, 22, 27, 36, 37, 39, 43, 54, 60, 64, 77, 87, 89, 95, 96, 98]}
#查找小组成员
df.groupby("department").get_group("产品部").head()
employee_idnamedepartmentpositionsalaryhire_date
0EMP001赵洋产品部数据分析师37652022-02-02
2EMP003刘洋产品部需求分析师26082024-09-29
8EMP009王伟产品部产品助理30682023-06-24
15EMP016李敏产品部需求分析师24252021-09-29
20EMP021黄芳产品部产品经理112422023-12-08
#通过薪资进行聚合
df3=df.groupby("department")[["salary"]].mean().round(2)
df3
salary
department
产品部7445.28
人事部6405.38
市场部4135.47
技术部4944.90
财务部6824.22
运营部4775.80
销售部6308.06
df3.reset_index().sort_values("salary",ascending=0)
departmentsalary
0产品部7445.28
4财务部6824.22
1人事部6405.38
6销售部6308.06
3技术部4944.90
5运营部4775.80
2市场部4135.47

多个条件分组并计算不同岗位平均薪资

df4=df.groupby(["department","position"])["salary"].mean().round(2)
df4.head(12)
department  position
产品部         产品助理         3839.67产品经理        13981.83数据分析师        4686.80需求分析师        3792.75
人事部         HRBP         3488.00培训专员         9201.33招聘专员         6698.14薪酬绩效         2645.50
市场部         品牌推广         6000.00市场策划         3910.71新媒体运营        3866.00活动执行         4311.50
Name: salary, dtype: float64
df4.sort_values(ascending=0).head(5)
department  position
产品部         产品经理        13981.83
财务部         财务主管        11072.25
销售部         销售主管         9922.00
技术部         运维工程师        9762.50
人事部         培训专员         9201.33
Name: salary, dtype: float64

http://www.jsqmd.com/news/444577/

相关文章:

  • 刚入行 3 个月,我总算搞懂了 Java 集合
  • P4588 [TJOI2018] 数学计算 题解
  • Docker使用方法及注意事项
  • 德系车底盘维修哪家专业?2026年上海浦东5大靠谱店铺推荐,省钱又省心! - 品牌企业推荐师(官方)
  • 除甲醛公司推荐:专业公司服务与技术对比分析 - 品牌企业推荐师(官方)
  • 水利工程设备采购必看!5家优质启闭机、闸门厂家推荐,选购指南一文读懂 - 品牌企业推荐师(官方)
  • 2026年福州代理记账公司哪家好?福州10家财务公司真实测评 - 品牌企业推荐师(官方)
  • 2026年GEO优化服务商排名解读:企业或商户如何选择? - 品牌企业推荐师(官方)
  • 阻燃EPS厂家2026年TOP5:5家实力厂商怎么选?工程采购避坑+价值指南 - 品牌企业推荐师(官方)
  • 张家口注册公司|张家口快速办理营业执照【张家口玉算盘财税服务】 - 品牌企业推荐师(官方)
  • 2026年张家口公司注册、张家口代理记账【张家口玉算盘会计服务有限公司】 - 品牌企业推荐师(官方)
  • 广州地区金蝶云星空最好的服务商有哪家? - 品牌企业推荐师(官方)
  • 明星代言联系哪家好 - 品牌企业推荐师(官方)
  • 2026步入式试验箱优选榜单| 步入式十大精选厂家 - 品牌企业推荐师(官方)
  • 福州睿象科技对接步骤:找对联系方式精准对接,高效启航 - 品牌企业推荐师(官方)
  • 格宾网在高标准农田建设中的技术落地全攻略:高频疑问解答,助力工程高效实施 - 品牌企业推荐师(官方)
  • 张家口注册营业执照首选【玉算盘财税服务】 - 品牌企业推荐师(官方)
  • 2026年性价比高的定制酒生产厂家哪家强? - 品牌企业推荐师(官方)
  • 订婚结婚选哪款钻戒更值?——基于4C标准的五大国产品牌理性解析 - 品牌企业推荐师(官方)
  • 数据解码2026:婚戒定制品牌全景测评,揭秘培育钻石赛道的“价值新标杆” - 品牌企业推荐师(官方)
  • 力扣Hot100---1.两数之和
  • ABC 445 E(利用线性预处理最小质因子快速得到每个数的质因子分布 trick)
  • Git Pre-commit 钩子
  • Java全栈开发面试实战:从基础到高阶的深度探讨
  • 免费在线浏览查看3DTiles,支持修改坐标,微调整保存坐标json,支持cesium地图,高德地图,ArcGIS,天地图等自定义地图
  • Le sens de vivre dans un monde misrable
  • Reversing-x64Elf-100
  • 玩转opencraw
  • 6500亿美元AI资本开支:科技巨头逆势布局的底层逻辑与行业博弈
  • 深度解析:AI原生应用中的人机协作架构设计