TOOLS_Pandas根据日期列进行分组统计及绘图的使用示例

2023-11-20

Pandas根据日期列进行分组统计及绘图的使用示例

导入所需要的库

# coding=utf-8
from logging import warning
import os, sys
import datetime
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


# 处理plt中文显示问题
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 正常显示中文标签
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示为方块的问题

# 读取测试数据 
df = pd.read_excel("./无标题1.xlsx")
df.head()

m_id max_iv record_id record_name record_sub_name pub_time language version create_time count_singer
0 000DmZbU1RUrem 49359 118379 野摩托 NaN 2021-04-15 1.0 NaN 2022-09-28 22:27:54 1
1 000SOicI1YXaDP 6035 981658 不可以这样(反英雄) NaN 2021-04-15 1.0 NaN 2022-09-29 05:29:02 1
2 000ibM5x4Jx2f4 9782 425705 心存侥幸 NaN 2021-04-15 1.0 NaN 2022-09-29 01:00:03 1
3 004OL7tM1gklPK 12212 310361 如果在一起 NaN 2021-04-15 1.0 NaN 2022-09-29 00:03:17 1
4 004D5jPe0h8Q6C 12194 413841 钗头凤.十年生死两茫茫 NaN 2021-04-15 1.0 NaN 2022-09-29 00:54:41 1

日期列非index的处理方式

对日期列series进行apply变换处理,得到用于分组的key:

  • 对 pub_time 列进行 year和month的key提取;
  • 然后将其送入 数据框 的groupby;
  • 然后对分组内容进行 相应统计值的方法调用;
# 日期非index的处理方式

key_year = lambda x:x.year
key_month = lambda x:x.month

# 按年
# df1 =  df.groupby(df['pub_time'].apply(key_year)).count()

# 按月
# df1 = df.groupby(df['pub_time'].apply(key_month)).count()

# 按年月
df1 = df.groupby([df['pub_time'].apply(key_year),df['pub_time'].apply(key_month)]).count() # 还可以取first() 及其他统计值

df1['m_id']

pub_time  pub_time
2021      4            567
          5           1026
          6           1163
          7           1337
          8           1386
          9           1465
          10          1498
          11          1478
          12          1482
2022      1           1205
          2            761
          3           1224
          4           1410
          5           1324
          6           1347
          7            966
          8            965
          9            909
          10           639
          11           145
Name: m_id, dtype: int64
# 绘制每 年,月 数量
df1['m_id'].plot()
plt.title('完整时序指数数据每月数量')
plt.xlabel('year,month')
plt.ylabel('m_id count')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JLTHrIi-1668063889609)(output_6_0.png)]

在这里插入图片描述

日期作为index的处理方式

# 日期作为index的处理方式
df.index = pd.to_datetime(df.pub_time)

# df.shape # shape size
# df = df[ df['pub_time'] > '2019-01-01'] # 条件过滤
# df = df[df["count_singer"] == 1] # 条件过滤
# df.drop_duplicates(subset=['record_name'],keep='first',inplace=True) # 去重


df2 = df.groupby([df.index.year, df.index.month]).count()
df2['m_id']

# ym_max = df.groupby([df.index.year, df.index.month]).apply(lambda t: t[t.max_iv==t.max_iv.max()])
# print('ym_max:',ym_max)
 
# ym_min = df.groupby([df.index.year, df.index.month]).apply(lambda t: t[t.max_iv==t.max_iv.min()])
# print('ym_min:',ym_min)
 
ym_agg = df.groupby([df.index.year, df.index.month]).agg({'max_iv':['max','mean','min','count']})
ym_agg

max_iv
max mean min count
pub_time pub_time
2021 4 4211890 66834.209877 6027 567
5 5412956 77094.117934 6005 1026
6 2744863 72879.793637 6000 1163
7 5951717 78934.391922 6003 1337
8 3580162 57704.013709 6008 1386
9 4550319 59929.767235 6008 1465
10 3771055 53772.278371 6008 1498
11 6242104 72782.085250 6001 1478
12 6362646 84906.529690 6008 1482
2022 1 2020534 61655.124481 6007 1205
2 9325015 75054.328515 6016 761
3 1808215 58802.951797 6000 1224
4 10932500 81737.102837 6009 1410
5 4690690 74068.342900 6004 1324
6 4581750 63106.034892 6003 1347
7 15988460 100434.186335 6017 966
8 107315642 211451.452850 6001 965
9 4125236 90661.900990 6007 909
10 1450976 80869.020344 6007 639
11 2586974 133693.703448 6056 145
ym_agg.plot()
plt.xlabel('year,month')
plt.ylabel('max_iv analysis')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GFZFVGr-1668063889611)(output_9_0.png)]

在这里插入图片描述

ym_agg.max_iv['mean'].plot()
plt.xlabel('year,month')
plt.ylabel('max_iv mean')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMWDeO8s-1668063889611)(output_10_0.png)]

在这里插入图片描述

ym_agg.max_iv['max'].plot()
plt.xlabel('year,month')
plt.ylabel('max_iv max')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0cPUHXLn-1668063889612)(output_11_0.png)]

在这里插入图片描述

ym_agg.max_iv['min'].plot()
plt.xlabel('year,month')
plt.ylabel('max_iv min')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0D9D7Il7-1668063889612)(output_12_0.png)]

在这里插入图片描述

ym_agg.max_iv['count'].plot()
plt.xlabel('year,month')
plt.ylabel('max_iv count')
plt.grid()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fi2rCmfL-1668063889613)(output_13_0.png)]

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TOOLS_Pandas根据日期列进行分组统计及绘图的使用示例 的相关文章

随机推荐

  • Vue中的过滤器

    过滤器 定义 对要显示的数据进行特定格式化后再显示 适用于一些简单逻辑的处理 语法 1 注册过滤器 Vue filter name callback 全局 或 new Vue filters 局部 2 使用过滤器 xxx 过滤器名 或 v
  • 动态修改日志级别,太有用了!

    首发于公众号 BiggerBoy 背景 我们在系统中一般都会打印一些日志 并且在开发 测试 生产各个环境中的日志级别可能不一样 在开发过程中为了方便调试打印了很多debug日志 但是生产环境为了性能 为了节约存储资源 我们会将日志级别设置为
  • linux shell进行数值计算

    出于项目需要 需要用脚本执行计算 最简单的方法1 这里写算式 可以写变量 Desktop cat test sh a 102 c a 123 echo a a echo a 123 c Desktop test sh a 102 a 123
  • 【软件测试】用例篇

    一 什么是测试用例 测试用例 向被测试系统发起的一组集合 这组集合包含测试数据 测试步骤 测试平台 预期结果 二 为什么在测试前要设计测试用例 三 基于需求设计测试用例 3 1测试是我们测试人员进行测试的依据 3 2测试人员首先要分析需求
  • A-LOAM总结-(前端+后端)算法流程分析

    文章目录 scanRegistration cpp 雷达信息预处理进程 laserOdometry cpp laserMapping cpp A LOAM算法流程 主要运行以下3个cpp文件 流程框图在文末 scanRegistration
  • (C语言)输出数组的最大值及其对应下标的最小值

    本题源自pintia cn 题目要求 代码 测试结果图 PTA测试结果 题目要求 本题要求编写程序 找出给定的n个数中的最大值及其对应的最小下标 下标从0开始 输入格式 输入在第一行中给出一个正整数n 1
  • 为什么学完Python后的薪资这么高?

    人工智能和大数据概念的兴起 带动了Python的快速增长 Python语言逻辑简洁 入门简单 生态丰富 几乎成为几个新兴领域的不二选择 而除了这两个领域 Python还有更多的适用领域 爬虫 web 自动化运维等领域都非常适合Python发
  • 详细的Python Flask的操作

    本篇文章是Python Flask 建站框架入门课程 编程实战微课 w3cschool微课的学习笔记 根据课程整理而来 本人使用版本如下 Python 3 10 0 Flask 2 2 2 简介 Flask是一个轻量级的可定制的web框架
  • 推荐|5种商业AI产品的技术架构设计!

    来源 达观数据 概要 今天我们就特别推荐达观数据的几个商业产品设计技术架构 希望对于广大技术有帮助 做任何一个商业产品设计 技术架构都是首先要考虑的 特别是面对海量数据的AI商业项目更是如此 今天我们就特别推荐达观数据的几个商业产品设计技术
  • Vue中key

    相信很多小伙伴跟我一样在使用v for的时候对key值的存在和必要性有疑问 通过ESlint进行代码检查的时候不加上key还会报错 想知道key为什么存在可以先想想key为什么产生 会不会是尤雨溪灵光一闪就给Vue添加上了key 也有可能
  • 大数据简介

    预备篇 目录 知识 大数据简介 计算机单位 大数据的五个 v Hadoop Hadoop概述 Hadoop的历史 Hadoop三大发行版本 1 Apache Hadoop 2 Cloudera Hadoop 3 Hortonworks Ha
  • 野外偷拍_野外紧急设计

    关于本系列 本系列文章旨在为人们经常讨论但难以捉摸的软件体系结构和设计概念提供新的视角 通过具体的示例 尼尔 福特为您提供了进化架构和紧急设计的敏捷实践的坚实基础 通过将重要的架构和设计决策推迟到最后一个负责任的时刻 可以防止不必要的复杂性
  • 武汉大学空间智能化处理复习

    空间数据处理智能化的重要性 提高地理信息处理的效率 减轻人在地理信息处理中的劳动量 使一般的地理信息用户也能让专家一样解决问题 大型的空间决策服务需要归纳 分析多种方案 智能化处理方法的来源 常常来自于人工智能学科的研究成果 如 知识工程
  • CTK框架介绍和环境搭建

    CTK框架介绍和环境搭建 概述 本人第一次接触CTK的时候是看的一去 二三里大佬的博客 CTK框架实际应用比较可靠 但网上资料很少 官网提供的API链接也已经无法打开了 目前还没有找到很好的官方的使用介绍 网上目前找到的CTK的介绍或者是博
  • Sklearn笔记--逻辑回归调参指南

    1 逻辑回归概述 p y
  • 建站记录2-CSS文件未加载-已解决-Resource interpreted as Stylesheet but transferred with MIME type text/plain

    网站链接 http 139 199 169 122 在本地加载正常 上传到服务器之后 网页没有样式 10 最终正确方案 重装了服务器系统 在别人的服务器上传同样的文件 发现正确 问题锁定在服务器设置中 找研究后端的马同学检查配置 发现是少了
  • python---collections模块

    目录 namedtuple 具名元组 deque 双端队列 OrderedDict 有序字典 defaultdict 默认值字典 Counter 计数 在内置数据类型 dict list set tuple 的基础上 collections
  • 差分数组及应用

    差分数组是啥 我也不是很清楚 大概就是一个数组吧 b战上有很多讲解的视频 我写下我学到的 差分数组就是 原本有个数组 然后你要修改某个区间的数值 正常人会想到遍历去修改 这是没错的 但吃力不讨好 用差分数组可以很快搞定 例如 有一个全为0的
  • CrimeKgAssitant-master的案件分类模块思路整理(多标签分类模型)

    根据liuhuanyong模型改动 尝试推广到其它领域 原始模型连接 GitHub liuhuanyong CrimeKgAssitant Crime assistant including crime type prediction an
  • TOOLS_Pandas根据日期列进行分组统计及绘图的使用示例

    Pandas根据日期列进行分组统计及绘图的使用示例 导入所需要的库 coding utf 8 from logging import warning import os sys import datetime import numpy as