首页 > 其他分享 >【pandas小技巧】--日期相关处理

【pandas小技巧】--日期相关处理

时间:2023-08-14 10:57:50浏览次数:36  
标签:技巧 -- resample value df pd date pandas mean

日期处理相关内容之前pandas基础系列中有一篇专门介绍过,本篇补充两个常用的技巧。

1. 多列合并为日期

当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。
合并多列转换为日期类型,可以直接用 to_datetime函数来处理:

import pandas as pd

df = pd.DataFrame(
    {
        "year": ["2021", "2021",
                 "2022", "2022", "2022"],
        "month": ["1", "3", "4", "4", "6"],
        "day": ["10", "20", "4", "4", "1"],
        "value": [1, 2, 3, 4, 5],
    }
)

df["date"] = pd.to_datetime(
    df[["year", "month", "day"]]
) 
df = df.drop(
    columns=["year", "month", "day"]
)
df

image.png

2. 基于日期的聚合统计

之所以要把列类型转换为日期类型,是因为pandas提供了针对日期类型的非常便利的聚合统计方法。
比如如下连续的日期数据:

df = pd.DataFrame(
    {
        "year": ["2022", "2022", "2023",
                 "2023", "2023"],
        "month": ["12", "12", "1", "1", "1"],
        "day": ["30", "31", "1", "1", "2"],
        "value": [1, 2, 3, 4, 5],
    }
)
df["date"] = pd.to_datetime(
    df[["year", "month", "day"]]
) 
df = df.drop(
    columns=["year", "month", "day"]
)
df = df.loc[:, ::-1]
df

image.png
这里用了之前介绍过的一个小技巧 df.loc[:, ::-1],把date列放在value列之前,对数据处理没有什么影响,只是为了看数据的习惯。

得到转换好的数据之后,可以通过resample函数来聚合统计。
resamplepandas提供的专门用于时间序列数据的聚合统计的。

2.1. 按年统计

ysum = df.resample("Y", on="date").value.sum()
ymean = df.resample("Y", on="date").value.mean()

stat = pd.DataFrame({
    "sum": ysum,
    "mean": ymean,
})
stat

image.png
示例数据只有两年的,统计后显示的是日期是年末最后一天。
这里为了演示只统计了合计值平均值,实际可以根据情况统计需要的值。

2.2. 按月统计

msum =	df.resample("M", on="date").value.sum()
mmean = df.resample("M", on="date").value.mean()
stat = pd.DataFrame({
    "sum": msum,
    "mean": mmean,
})
stat

image.png
统计后显示的日期是每个月月末的日期。

2.3. 按日统计

dsum = df.resample("D", on="date").value.sum()
dmean = df.resample("D", on="date").value.mean()
stat = pd.DataFrame({
    "sum": dsum,
    "mean": dmean,
})
stat

image.png
根据每天的日期统计。

2.4. 按季度统计

qsum = df.resample("Q", on="date").value.sum()
qmean = df.resample("Q", on="date").value.mean()
stat = pd.DataFrame({
    "sum": qsum,
    "mean": qmean,
})
stat

image.png
统计后显示的日期是每个季度的最后一天。

2.5. 按周统计

wsum = df.resample("W", on="date").value.sum()
wmean = df.resample("W", on="date").value.mean()

stat = pd.DataFrame({
    "sum": wsum,
    "mean": wmean,
})
stat

image.png
统计后显示的日期是每个周的周日

2.6. 补充

resample函数支持的统计期间除了上面介绍的常用的季度等等,还有很多其他的期间,
具体参考:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases

image.png

标签:技巧,--,resample,value,df,pd,date,pandas,mean
From: https://www.cnblogs.com/wang_yb/p/17628030.html

相关文章

  • WebSocket
    在搭建聊天室时,选择使用TCP请求而不是HTTP请求是因为TCP(传输控制协议)和HTTP(超文本传输协议)具有不同的特性,适用于不同的场景。以下是选择TCP请求而不是HTTP请求的一些原因:即时性:TCP连接可以保持长时间,使得聊天室能够实时地传输消息,而不需要每次都建立新的连接,从而减少了延迟。......
  • 数据结构与算法 --- 如何分析排序算法
    引言排序算法是最基础的算法,对于排序算法,除学习算法原理,代码实现之外,更重要的是学习每个算法的特点,知道在什么场景下选择那种算法。那一定是选择时间复杂度最低的排序算法就是最优的吗?可以从以下几个方面分析一下。排序算法的执行效率对于排序算法的执行效率,一般从以下几个方......
  • golang简单实现CLHLock,不可重入的clh自旋锁
    如果不想自旋,可以把Lock、waitIsFinish和noticeIsFinish代码中的方式2注释掉,改用方式1。不过实际测试在低并发的情况下,自旋的执行效率更高,要根据实际业务场景选择使用哪种方式。源代码如下:import("runtime""sync/atomic")const(Gosched_Spin_Count=10000......
  • Linux-wget命令使用及参数详解
    wget简介Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意......
  • MongoDB
    MongoDBMongoDB是一个开源的,跨平台的文档数据库管理系统,它属于NoSQL的一种,旨在满足现代应用程序对灵活性,可拓展性和高性能的需求,MongoDB支持面向文档的数据存储模型,使开发人员能够以更自然的方式存储和查询数据,而无需遵循传统的关系型数据库结构。以下是MongoDB的一些重要特点和......
  • Prometheus
    一、Prometheus二、grafana1、添加数据模板#blackbox_exporter监控数据#每个参数是不同的dashbord模板https://grafana.com/grafana/dashboards/9965https://grafana.com/grafana/dashboards/9719 此模板需要安装饼状图插件下载地址 https://grafana.com/grafana/pl......
  • MySQL
    Binlog(二进制日志):是逻辑日志,记录对数据库的操作改变的SQL,包括操作类型、值、时间戳、操作者等信息,还有事务的开始、提交、回滚等标记。具有平台无关性,可跨服务器、数据库引擎,但在跨平台时需要注意一些配置和环境问题。主要用于数据迁移、主从复制,以及数据恢复操作。在操作时......
  • 怎么解释ABP 的DDD 设计模式
    ABP的DDD设计模式,就是将传统的开发模式,根据领域驱动设计(DomainDrivenDesign,简称DDD)的理念,调整为一个理念更清晰,结构更合理的新的开发模式。ABP框架对DDD的概念进行了实际的运用,有助于提高开发效率,降低系统复杂性,方便系统的维护和扩展。领域驱动设计主要围绕以下几个重要的概念......
  • Excel:Power Automate VS UiPath
    读取和写入差别:PowerAutomate需要通过激活Sheet来确定写入那个Sheet,VBA操作逻辑一样;而UiPath用一个写入控件就可以直接指定写入的Sheet,符合开发逻辑。 ......
  • Chameleon算法的C语言实现及代码解析
    Chameleon算法的C语言实现及代码解析在计算机科学领域中,算法的设计和实现是非常重要的。而在大量的算法中,Chameleon算法以其独特的特点和应用广泛受到了研究者们的关注。本文将围绕Chameleon算法的C语言实现及其代码解析展开,通过具体的示例来解释其原理和应用。Chameleon算法的C......