【pandas基础】--数据统计

pandas,基础,数据,统计 · 浏览次数 : 238

小编点评

**统计工具介绍** pandas提供了多种工具来帮助我们理解数据,包括: * **平均值 (mean)**:计算对象的平均值。 * **标准差 (std)**:计算对象的标准差。 * **最大值 (max)**:计算对象的最大值。 * **最小值 (min)**:计算对象的最小值。 * **数量 (count)**:计算对象数量。 * **统计 (stats)**:统计函数,可以用于计算各种统计信息,例如平均值、标准差、最大值、最小值等。 **分组统计** 如果要分析的数据集中不同的多个行存在同属于一个分类时,可以先分组之后再用上面的统计分析方法。例如,可以按年级分组统计,然后使用平均值来计算各年级的平均成绩。 **透视表** 透视表是数据分析中的一种非常强大的功能,可以实现数据的按列汇总、按行汇总、按列和行同时汇总、数据透视和数据分析等功能。 **同比和环比** 同比一般指跟上一年度同一时期统计的数据的比较,环比一般指跟上一次统计的数据的比较。

正文

在进行统计分析时,pandas提供了多种工具来帮助我们理解数据。
pandas提供了多个聚合函数,其中包括均值、标准差、最大值、最小值等等。
此外,pandas还可以进行基于列的统计分析,例如通过groupby()函数对数据进行聚合,并计算每组的统计分析结果。

除了基本的统计分析之外,pandas还可以进行更高级的分析,例如基于时间序列的分析等。
总之,pandas是一个非常强大的数据处理工具,可以帮助我们更轻松地进行数据分析和探索。

1. 一般统计

拿到数据之后,第一步我们会通过一些常用的统计信息来大体了解下数据的整体情况。
pandas中常用的统计函数有:

  1. .sum():计算对象的总和
  2. .mean():计算对象的平均值
  3. .median():计算对象的中位数
  4. .max():计算对象的最大值
  5. .min():计算对象的最小值
  6. .count():计算对象数量
  7. .std():计算对象标准差
  8. .var():计算对象方差

通过agg函数可以一次将所有的统计信息分析出来。

import pandas as pd

df = pd.DataFrame(
    {
        "数学": [100, 88, 94, 76, 84],
        "语文": [98, 80, 86, 76, 90],
        "英语": [95, 91, 86, 95, 83],
    },
    index=["小红", "小明", "小汪", "小李", "小张"],
)

df.agg(["sum", "mean", "median","max", "min", "count", "std", "var"])

image.png

2. 分组统计

如果要分析的数据集中不同的多个行存在同属于一个分类时,可以先分组之后再用上面的统计分析方法。
比如下面的示例,按年级分组统计的是同一个年级中所有学生的成绩情况,而按学生分组统计的则是该学生在各个年级阶段的成绩情况。

按年级分组统计:
agg函数除了可以指定统计函数,还可以指定统计的列,下面的示例只统计了语文和数学情况)

df = pd.DataFrame(
    {
        "姓名": ["小红", "小明", "小红", "小明", "小汪", "小汪"],
        "年级": ["初二", "初一", "初一", "初二", "初一", "初二"],
        "数学": [100, 88, 94, 76, 84, 78],
        "语文": [98, 80, 86, 76, 90, 88],
        "英语": [95, 91, 86, 95, 83, 65],
    },
)

agg_funcs = ["max", "min", "mean"]
df.groupby(by="年级").agg({"语文": agg_funcs, "数学": agg_funcs})

image.png

按学生分组统计:

df.groupby(by="姓名").agg({"语文": agg_funcs, "数学": agg_funcs})

image.png

3. 透视表

pandas透视表(Pivot Table)是数据分析中的一种非常强大的功能,可以实现数据的按列汇总、按行汇总、按列和行同时汇总、数据透视和数据分析等功能。

同样使用上一节中的示例数据,原始数据中,年级,姓名和分数混在一起,要看按人或者按年级查看成绩情况的时候,需要进行过滤和排序等操作。
image.png

如果使用透视表的话,可以将原始数据中的某些列的值作为新的索引,某些列的值作为新的列,那么数据会更加一目了然。
另外,透视表的结果用来绘制折线图,柱状图等也非常方便。

年级作为索引,姓名作为列名的透视表:

df = pd.DataFrame(
    {
        "姓名": ["小红", "小明", "小红", "小明", "小汪", "小汪"],
        "年级": ["初二", "初一", "初一", "初二", "初一", "初二"],
        "数学": [100, 88, 94, 76, 84, 78],
        "语文": [98, 80, 86, 76, 90, 88],
        "英语": [95, 91, 86, 95, 83, 65],
    },
)

pd.pivot_table(df, values=["数学", "语文", "英语"], index=["年级"], columns=["姓名"])

image.png

姓名作为索引,年级作为列名的透视表:

pd.pivot_table(df, values=["数学", "语文", "英语"], index=["姓名"], columns=["年级"])

image.png

4. 同比和环比

同比和环比是统计中经常用到的概念,用来评估数据的变化情况。
同比一般指跟上一年度同一时期统计的数据的比较,环比一般指跟上一次统计的数据的比较。

原始数据如下(某同学初中三年每学期的平均分):

df = pd.DataFrame(
    {
        "年级": ["初一上", "初一下", "初二上", "初二下", "初三上", "初三下"],
        "平均分": [90, 85, 86, 80, 90, 88],
    },
)

df

image.png

环比就是看每个学期比上个学期是否进步:

df["平均分环比"] = df["平均分"].pct_change(periods=1)
df

image.png
第一条数据是NaN,因为它没有上一条数据可以参考。
pct_change 得出的数值就是同比增长的百分比,负数表示下降的百分比。

同比就是比较每个学年同学期的成绩变化,比如初二上初一上比较,初三下初二下比较等等。

df["平均分同比"] = df["平均分"].pct_change(periods=2)
df

image.png
我们观察这个示例数据,同比环比的差别仅仅在于:同比是隔一个数据比较,而环比是相邻的数据比较。

所以,用pct_change来计算同比的时候,只要设置periods参数为2即可。
periods参数默认为1,所以其实计算环比的时候也可以不设置periods参数。

5. 总结回顾

本篇介绍的数据统计时常用的几种方法,其中分组统计透视表是使用比较频繁的。
上面的示例主要介绍统计的函数,假造的数据非常简单,其实在数据统计时,统计前清理数据,排序数据等才是耗费时间最长的过程。

与【pandas基础】--数据统计相似的内容:

【pandas基础】--数据统计

在进行统计分析时,`pandas`提供了多种工具来帮助我们理解数据。 `pandas`提供了多个聚合函数,其中包括均值、标准差、最大值、最小值等等。 此外,`pandas`还可以进行基于列的统计分析,例如通过`groupby()`函数对数据进行聚合,并计算每组的统计分析结果。 除了基本的统计分析之外

【pandas基础】--日期处理

时间序列数据是数据分析中一类常见且重要的数据。 它们按照时间顺序记录,通常是从某些现象的观察中收集的,比如经济指标、气象数据、股票价格、销售数据等等。 时间序列数据的特点是有规律地随着时间变化而变化,它们的变化趋势可以被分析和预测。时间序列分析是一种用于预测未来值或评估过去值的统计方法,常常被用于预

【pandas基础】--数据读取

数据读取是第一步,只有成功加载数据之后,后续的操作才有可能。 pandas可以读取和导入各种数据格式的数据,如CSV,Excel,JSON,SQL,HTML等,不需要手动编写复杂的读取代码。 1. 各类数据源 pandas提供了导入各类常用文件格式数据的接口,这里介绍3种最常用的加载数据的接口。 1

【pandas基础】--数据整理

pandas进行数据整理的意义在于,它是数据分析、数据科学和机器学习的前置步骤。 通过数据整理可以提前了解数据的概要,缺失值、重复值等情况,为后续的分析和建模提供更为可靠的数据基础。 本篇主要介绍利用pandas进行数据整理的各种方法。 1. 数据概要 获取数据概要信息可以帮助我们了解数据的基本情况

【pandas基础】--数据修改

pandas 作为一种常用的数据分析工具,提供了广泛的数据修改方法。 既可以针对行或者列的数据进行修改,也可以对具体单个元素进行修改,还可以基于条件选择要修改的行或者列的数据。 1. 增加数据 1.1 增加行数据 pandas的DataFrame增加一行或者多行数据之前是使用append方法。 im

【pandas基础】--数据拆分与合并

数据集拆分是将一个大型的数据集拆分为多个较小的数据集,可以让数据更加清晰易懂,也方便对单个数据集进行分析和处理。 同时,分开的数据集也可以分别应用不同的数据分析方法进行处理,更加高效和专业。 数据集合并则是将多个数据集合并成一个大的数据集,可以提供更全面的信息,也可以进行更综合的数据分析。 同时,数

【pandas基础】--数据排序

`pandas`的数据排序可以帮助我们更好地理解和分析数据。 通过对数据进行排序,我们可以提取出特定的信息,例如最大值、最小值、中位数、众数等等,从而更准确地识别数据的特征和特点。 此外,数据排序还可以帮助我们更好地进行数据可视化,例如绘制直方图、箱线图等等,进一步帮助我们对数据进行解读和分析。 总

【pandas基础】--核心数据结构

pandas中用来承载数据的两个最重要的结构分别是: Series:相当于增强版的一维数组 DataFrame:相当于增强版的二维数组 pandas最大的优势在于处理表格类数据,如果数据维度超过二维,一般我们会使用另一个 python的库 numpy。 本篇主要介绍这两种核心数据结构的创建方式。 1

【pandas基础】--数据类型

数据类型是计算机编程中将不同类型的数据值分类和定义的方式。 通过数据类型,可以确定数据的存储方式和内存占用量,了解不同类型的数据进行各种运算的能力。 使用`pandas`进行数据分析时,最常用到的几种类型是: 1. 字符串类型,各类文本内容都是字符串类型 2. 数值类型,包括整数和浮点数,可用于计算

【pandas基础】--索引和轴

在`pandas`中,索引(`index`)是用于访问数据的关键。 它为数据提供了基于标签的访问能力,类似于字典,可以根据标签查找和访问数据。 而`pandas`的轴(`axis`)是指数据表中的一个维度,可以理解为表格中的行和列。 通过指定轴,我们可以对数据进行切片、筛选、聚合等操作。 下面简要介