[Python]将已有DataFrame分组聚合后(group by)的统计信息(describe())导入到新的 DataFrame

描述

在数理统计中,百分位对数据有很好的描述性,并且也能帮助判断数据的异常值的状态。

本文以时间维度来切入讲解如何使用python拉取dataframe分组聚合后统计信息

事例(前提介绍)

小明在日常生活中想要寻找出,快递送达的时间是否会因为不可避免的因素而增加,比如这次全球性的疫情。因此,她决定通过观察近一年来每日快递送达时间各百分位下的变化状态,从而通过线性图初步观察快递送达的时间是否会因为全球性的疫情受到影响

但是面多海量的数据小明遇到了难题:如何将数据在聚合到每日的情况下找出每日各百分位的值?

解决方案

小明遇到的问题在python 中很好解决。

利用到Python的函数

将数据在聚合到每日的情况下找出每日各百分位的值用到的主要函数

  1. groupby():用于对数据进行一至多列聚合
  2. describe():统计一个series中的信息:
    a. Count
    b.mean
    c.min # 最小即 0百分位的数
    d.25% # 25百分位的数
    e.50% # 50百分位的数
    f.75% # 75百分位的数
    g.max # 最大即 100百分位的数
    h.std

演示

本文所用包的导入

import pyodbc
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

原始数据如下图所示
在这里插入图片描述

首先,将快递寄出时间点通过pandas自带的to_datetime函数转化成时间类型

send_raw_cr['寄出时间']=pd.to_datetime(send_raw_cr['寄出时间'])

第二步,将快递的配送时长根据寄出时间进行聚类的同时,利用describe()统计每个serie的信息

send_cr = send_raw_cr.set_index([send_raw_cr.groupby(send_raw_cr['寄出时间']).cumcount(),'寄出时间'])['配送时长'].unstack().describe().T

第二步中用到的函数解释:

  1. set_index:将普通列设置成索引列
  2. cumcount():各组组内取出索引,然后索引进行排序
  3. unstack():将列索引转变成行索引,简单点理解即列转行
  4. describe().T:行列转置
    a.describe()输出为下图状态
    在这里插入图片描述
    b. describe().T输出为下图:
    在这里插入图片描述

第三步,根据的得出的新的dataframe制图。

第二步得出的最终 dataframe
在这里插入图片描述
制图

plt.figure(figsize=(30,20)) #确定图表大小
plt.plot(send_cr['min'],label = 'min')
plt.plot(send_cr['25%'],label = '25%')
plt.plot(send_cr['50%'],label = '50%')
plt.plot(send_cr['75%'],label = '75%')
plt.plot(send_cr['max'],label = 'max')
plt.title('send_cr(25%,50%,75%)') #设置title
plt.legend() #展示label
plt.savefig('send_cr(25%,50%,75%)') #保存图片
plt.show() #展示图片

现在小明可以根据展示出来的图表来进行初步分析是否全球疫情期间快递的配送时间会较长。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中有多个库可以用来处理DataFrame,其中最常用的是pandas库。pandas是一个强大的数据分析工具,提供了灵活且高效的数据结构,特别是DataFrame,用于处理和分析结构化数据。 要使用pandas处理DataFrame,首先需要导入pandas库: ``` import pandas as pd ``` 然后,可以使用pandas的`read_csv()`函数读取CSV文件或者使用`read_excel()`函数读取Excel文件,并将其转换为DataFrame对象。例如: ``` df = pd.read_csv('data.csv') ``` 一旦数据加载到DataFrame中,就可以使用各种方法和函数对数据进行操作和分析。以下是一些常用的DataFrame操作: 1. 查看数据:可以使用`head()`函数查看DataFrame的前几行数据,默认显示前5行;使用`tail()`函数查看DataFrame的后几行数据。 2. 列选择:可以使用列名或者列索引来选择DataFrame中的列。例如,`df['column_name']`选择指定列,`df[['column1', 'column2']]`选择多个列。 3. 行选择:可以使用`loc[]`或者`iloc[]`来选择DataFrame中的行。`loc[]`根据标签选择行,`iloc[]`根据索引选择行。 4. 添加列:可以使用赋值语句给DataFrame添加的列。例如,`df['new_column'] = values`。 5. 缺失值处理:可以使用`dropna()`函数删除包含缺失值的行或列;使用`fillna()`函数填充缺失值。 6. 数据排序:可以使用`sort_values()`函数对DataFrame中的数据进行排序。 7. 数据聚合:可以使用`groupby()`函数对DataFrame中的数据进行分组聚合操作。 8. 数据统计:可以使用`describe()`函数获取DataFrame中数值列的统计信息,如均值、标准差等。 以上只是一些常用的DataFrame操作,pandas还提供了更多功能丰富的方法和函数。你可以参考pandas官方文档来深入学习和了解更多关于DataFrame的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AutismThyself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值