首页 云计算

送你一个Python 数据排序的好方法

 

ѧϰ Pandas 排序方法 是开始或练习使用 Python进行基本数据分析的好方法。最常见的数据分析是使用电子表格、SQL或pandas 完成的。使用 Pandas 的一大优点是它可以处理大量数据并提供高性能的数据操作能力。

在本教程中,您将学习如何使用.sort_values()和.sort_index(),这将使您能够有效地对 DataFrame 中的数据进行排序。

在本教程结束时,您将知道如何: 按一列或多列的值对Pandas DataFrame进行排序 使用ascending参数更改排序顺序 通过index使用对 DataFrame 进行排序.sort_index() 在对值进行排序时组织缺失的数据 使用set to 对DataFrame进行就地排序inplaceTrue

要学习本教程,您需要对Pandas DataFrames有基本的了解,并对从文件中读取数据有一定的了解。

Pandas 排序方法入门

快速提醒一下, DataFrame 是一种数据结构,行和列都带有标记的轴。您可以按行或列值以及行或列索引对 DataFrame 进行排序。

行和列都有索引,它是数据在 DataFrame 中位置的数字表示。您可以使用 DataFrame 的索引位置从特定行或列中检索数据。默认情况下,索引号从零开始。您也可以手动分配自己的索引。

准备数据集

在本教程中,您将使用美国环境保护署 (EPA) 为 1984 年至 2021 年间制造的车辆编制的燃油经济性数据。EPA 燃油经济性数据集非常棒,因为它包含许多不同类型的信息,您可以对其进行排序上,从文本到数字数据类型。该数据集总共包含八十三列。

要继续,您需要安装pandas Python 库。本教程中的代码是使用 pandas 1.2.0 和Python 3.9.1 执行的。

注意:整个燃油经济性数据集约为 18 MB。将整个数据集读入内存可能需要一两分钟。限制行数和列数有助于提高性能,但下载数据仍需要几秒钟的时间。

出于分析目的,您将按品牌、型号、年份和其他车辆属性查看车辆的 MPG(每加仑英里数)数据。您可以指定要读入 DataFrame 的列。对于本教程,您只需要可用列的子集。

以下是将燃油经济性数据集的相关列读入 DataFrame 并显示前五行的命令:

>>> >>> import pandas as pd  >>> column_subset = [ ...     "id", ...     "make", ...     "model", ...     "year", ...     "cylinders", ...     "fuelType", ...     "trany", ...     "mpgData", ...     "city08", ...     "highway08" ... ]  >>> df = pd.read_csv( ...     "https://www.fueleconomy.gov/feg/epadata/vehicles.csv", ...     usecols=column_subset, ...     nrows=100 ... )  >>> df.head()    city08  cylinders fuelType  ...  mpgData            trany  year 0      19          4  Regular  ...        Y     Manual 5-spd  1985 1       9         12  Regular  ...        N     Manual 5-spd  1985 2      23          4  Regular  ...        Y     Manual 5-spd  1985 3      10          8  Regular  ...        N  Automatic 3-spd  1985 4      17          4  Premium  ...        N     Manual 5-spd  1993 [5 rows x 10 columns] 

通过.read_csv()使用数据集 URL 进行调用,您可以将数据加载到 DataFrame 中。缩小列会导致更快的加载时间和更少的内存使用。为了进一步限制内存消耗并快速了解数据,您可以使用 指定要加载的行数nrows。

熟悉 .sort_values()

您用于.sort_values()沿任一轴(列或行)对 DataFrame 中的值进行排序。通常,您希望通过一列或多列的值对 DataFrame 中的行进行排序:

上图显示了使用.sort_values()根据highway08列中的值对 DataFrame 的行进行排序的结果。这类似于使用列对电子表格中的数据进行排序的方式。

熟悉 .sort_index()

您用于.sort_index()按行索引或列标签对 DataFrame 进行排序。与 using 的不同之处.sort_values()在于您是根据其行索引或列名称对 DataFrame 进行排序,而不是根据这些行或列中的值:

DataFrame 的行索引在上图中以蓝色标出。索引不被视为一列,您通常只有一个行索引。行索引可以被认为是从零开始的行号。

在单列上对 DataFrame 进行排序

要根据单列中的值对 DataFrame 进行排序,您将使用.sort_values(). 默认情况下,这将返回一个按升序排序的新 DataFrame。它不会修改原始 DataFrame。

按升序按列排序

要使用.sort_values(),请将单个参数传递给包含要作为排序依据的列的名称的方法。在此示例中,您按city08列对 DataFrame 进行排序,该列表示纯燃料汽车的城市 MPG:

>>> >>> df.sort_values("city08")     city08  cylinders fuelType  ...  mpgData            trany  year 99       9          8  Premium  ...        N  Automatic 4-spd  1993 1        9         12  Regular  ...        N     Manual 5-spd  1985 80       9          8  Regular  ...        N  Automatic 3-spd  1985 47       9          8  Regular  ...        N  Automatic 3-spd  1985 3       10          8  Regular  ...        N  Automatic 3-spd  1985 ..     ...