学习使用 Python 汇总数据的不同方法。

数据就是力量。我们拥有的数据越多,我们创造的产品就越好、越强大。然而,处理大量数据也存在挑战。我们需要软件工具和软件包来获得洞察力,例如在 Python 中创建数据摘要。

大量基于数据的解决方案和产品使用表格数据,即以表格形式存储的数据,其中行和列均有标签。每行代表一个观察结果(即一个数据点),列代表该观察结果的特征或属性。

随着行数和列数的增加,手动检查数据变得越来越困难。由于我们几乎总是处理大型数据集,因此使用软件工具来汇总数据是一项基本要求。

数据摘要对于各种任务都很有用:

  • 学习数据集的底层结构。
  • 了解特征(即列)的分布。
  • 探索性数据分析。

的 库。用于此目的的最流行和最常用的库是 pandas。LearnPython 有一 门“数据科学 Python 简介” 课程,其中详细介绍了 pandas 库。

pandas 是 Python 的一个数据分析和处理库。在本文中,我们将通过几个示例来演示如何使用 pandas 创建和显示数据摘要。

开始使用 pandas

让我们从导入熊猫开始。

import pandas as pd

考虑一个 CSV 格式的销售数据集,其中包含某些产品及其产品组的销售和库存数量。我们为此文件中的数据创建一个 pandas DataFrame,并显示前 5 行,如下所示:

df = pd.read_csv(“sales.csv”)
df.head()

输出:

产品组 产品代码 销售数量 库存数量
0 A 1000 337 791
1 C 1001 502 757
2 A 1002 402 827
3 A 1003 411 1227
4 C 1004 186 361

pandas 中的数据汇总首先检查数据的大小。该 shape 方法返回一个包含 DataFrame 的行数和列数的元组。

>>> df.shape
(300, 4)

它包含 300 行和 4 列。这是一个干净的数据集,可以进行分析。但是,大多数现实生活中的数据集都需要清理。这里有一篇文章解释了 最有用的 Python 数据清理模块。

我们继续通过分别关注每一列来总结数据。pandas 有两种主要数据结构:DataFrame 和 Series。DataFrame 是二维数据结构,而 Series 是一维数据结构。DataFrame 中的每一列都可以被视为一个 Series。

由于分类数据和数字数据的特点非常不同,因此最好分别介绍它们。

分类列

如果某一列包含分类数据(如 DataFrame 中的产品组列),我们可以检查其中不同值的数量。我们使用 unique() nunique() 函数来执行此操作。

>>> df["product_group"].unique()
array(['A', 'C', 'B', 'G', 'D', 'F', 'E'], dtype=object)
>>> df["product_group"].nunique()
7

函数 nunique() 返回不同值的计数,而函数 unique() 显示不同值。分类列上另一个常用的汇总函数是 value_counts() 。它显示列中的不同值及其出现的计数。因此,我们可以概览数据的分布。

>>> df["product_group"].value_counts()
A    102
B     75
C     63
D     37
G      9
F      8
E      6
Name: product_group, dtype: int64

A 组的产品数量最多,其次是 B 组,有 75 种产品。函数的输出 value_counts() 按出现次数降序排列。

数字列

处理数字列时,我们需要不同的方法来汇总数据。例如,检查销售数量列的不同值的数量是没有意义的。相反,我们会计算统计指标,例如平均值、中位数、最小值和最大值。

我们先来计算一下销售数量列的平均值。

>>> df["sales_qty"].mean()
473.557

我们只需选择感兴趣的列并应用该 mean() 函数即可。我们也可以对多列执行此操作。

>>> df[["sales_qty","stock_qty"]].mean()
sales_qty     473.557
stock_qty    1160.837
dtype: float64

从 DataFrame 中选择多列时,请确保将它们指定为列表。否则,pandas 会产生键错误。

就像我们可以通过一次操作计算多个列上的单个统计数据一样,我们也可以一次计算多个统计数据。一种选择是使用 apply() 以下函数:

>>> df[["sales_qty","stock_qty"]].apply(["mean","median"])

输出:

销售数量 库存数量
意思是 473.556667 1160.836667
中位数 446.000000 1174.000000

这些函数写在一个列表中,然后传递给 apply() 。中位数是值排序后位于中间的值。比较平均值和中位数可以让我们了解分布的偏度。

在 Pandas 中,我们有很多方法可以创建数据摘要。例如,我们可以使用字典来计算不同列的单独统计数据。以下是示例:

df[["sales_qty","stock_qty"]].apply(
    {
        "sales_qty":["mean","median","max"],
        "stock_qty":["mean","median","min"]
    }
)

输出:

销售数量 库存数量
意思是 473.556667 1160.836667
中位数 446.000000 1174.000000
最大限度 999.000000
分钟 302.000000

字典的键表示列名,值表示要为该列计算的统计数据。

函数而不是 来 agg() 执行相同的操作 apply() 。语法是相同的,因此如果您遇到使用 函数的教程,请不要感到惊讶 agg()

pandas 在很多方面都是一个非常有用和实用的库。例如,我们只需一个函数就可以计算所有数字列的各种统计数据 describe()

>>> df.describe()

输出:

销售数量 库存数量
数数 300.000000 300.000000
意思是 473.556667 1160.836667
标准 295.877223 480.614653
分钟 4.000000 302.000000
25% 203.000000 750.500000
50% 446.000000 1174.000000
75% 721.750000 1590.500000
最大限度 999.000000 1988.000000

此 DataFrame 中的统计数据为我们提供了值分布的总体概述。计数是值(即行)的数量。“25%”、“50%”和“75%”分别表示第一、第二和第三四分位数。第二四分位数(即 50%)也称为中位数。最后,“std”是列的标准差。

在 Python 中,可以针对 DataFrame 的特定部分创建数据摘要。我们只需在应用函数之前过滤相关部分即可。

例如,我们仅描述产品组 A 的数据如下:

df[df["product_group"]=="A"].describe()

我们首先选择产品组值为 A 的行,然后使用该 describe() 函数。输出的格式与上一个示例相同,但仅针对产品组 A 计算值。

我们也可以在数字列上应用过滤器。例如,以下代码行计算库存大于 500 的产品的平均销售数量。

df[df["stock_qty"]>500]["sales_qty"].mean()

输出:

476.951

pandas 可以非常高效地创建更复杂的过滤器。这里有一篇文章详细解释了 如何使用 pandas 根据行和列进行过滤 .

汇总数据组

我们可以为数据中的不同组分别创建数据摘要。这与我们在上一个示例中所做的非常相似。唯一的不同是对数据进行分组。

我们用函数按列中的不同值对行进行分组 groupby() 。以下代码按产品组对行进行分组。

df.groupby("product_group")

一旦分组形成,我们就可以计算任何统计数据并描述或总结数据。让我们计算每个产品组的平均销售量。

df.groupby("product_group")["sales_qty"].mean()

输出:

product_group
A    492.676471
B    490.253333
C    449.285714
D    462.864865
E    378.666667
F    508.875000
G    363.444444
Name: sales_qty, dtype: float64

我们还可以在单​​个操作中执行多个聚合。除了平均销售量之外,我们还要计算每个组中的产品数量。我们使用函数 agg() ,它还允许为聚合列分配名称。

df.groupby("product_group").agg(
    avg_sales_qty = ("sales_qty", "mean"),
    number_of_products = ("product_code","count")
)

输出:

产品组 平均销售数量 产品数量
A 492.676471 102
490.253333 75
C 449.285714 63
462.864865 三十七
378.666667 6
F 508.875000 8
G 363.444444 9

使用 Matplotlib 直方图呈现数据分布

数据可视化是另一种高效的数据汇总技术。Matplotlib 是 Python 中用于可视化探索和汇总数据的流行库。

数据可视化有很多种类型。直方图用于检查数字列的数据分布。它将整个值范围划分为离散的箱体,并计算每个箱体中的值数量。因此,我们可以概览数据的分布。

让我们创建销售数量列的直方图。

import matplotlib.pyplot as plt
plt.figure(figsize=(10,6))
plt.hist(df["sales_qty"], bins=10)

第一行我们引入了 pyplot Matplotlib 的接口,第二行创建一个指定大小的空的图形对象,第三行在对象上绘制销售数量列的直方图 figure ,bins 参数决定了 bins 的数量。

以下是该代码生成的图表:

How to Generate a Data Summary in Python

x 轴上的值表示箱边界。y 轴上的值表示每个箱中的值的数量。例如,有超过 40 种产品的销售数量在 100 到 200 之间。

Python 中的数据汇总

在着手创建基于数据的产品之前,了解手头的数据至关重要。你可以从 Python 中的数据摘要开始。在本文中,我们回顾了几个使用 pandas 和 Matplotlib 库来汇总数据的示例。

Python 拥有丰富的库选择,可加快和简化数据科学中的任务。Python 数据科学 课程是您数据科学之旅的良好开端。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部