Python – 计算 Pandas DataFrame 列值的数量

Python – 计算 Pandas DataFrame 列值的数量

在数据分析或机器学习中,我们经常需要对数据进行一些基本统计分析,如计算某列值的频数。Pandas DataFrame 是数据分析中常用的数据类型,它提供了丰富的函数用于数据处理和分析。本文将介绍如何使用 Pandas 来计算 DataFrame 中某列值的数量。

1. 读取数据

首先,我们需要读取一个具有多列数据的数据集。Pandas 提供了多种读取文件格式的函数,如 read_csv() 用于读取 csv 文件,read_excel() 用于读取 excel 文件等。本文我们使用 read_csv() 函数读取一个 csv 文件:

import pandas as pd

df = pd.read_csv('data.csv', header=0)
df.head()

通过 header 参数指定第一行为列名,并使用 head() 函数查看读取的数据前五行:

   ID Gender   Age  Grade
0   1      F  19.0     A
1   2      M  21.0     A
2   3      F  20.0  None
3   4      M   NaN     B
4   5      F  22.0     A

2. 计算列值数量

接下来,我们将使用 Pandas 的 value_counts() 函数来计算某列值的数量。这个函数可以统计 DataFrame 中某一列的每个值出现的次数,并返回一个 Series 类型的对象,其中每个值为索引,对应的值为出现的次数。

例如,我们要计算 DataFrame 中 Gender 列不同值的数量,可以使用以下代码:

gender_counts = df['Gender'].value_counts()

print(gender_counts)

运行结果如下:

F    8
M    7
Name: Gender, dtype: int64

这里我们使用 value_counts() 函数计算 Gender 列不同值的数量,并将结果保存在 gender_counts 变量中。然后使用 print() 函数输出结果。我们可以看到,Gender 列中共有 2 种不同的值,分别是 F 和 M,其中 F 出现了 8 次,M 出现了 7 次。

我们还可以指定计算 DataFrame 中其他列的值数量,比如 Age 列:

age_counts = df['Age'].value_counts()

print(age_counts)

输出结果如下:

20.0    3
22.0    3
19.0    2
21.0    2
Name: Age, dtype: int64

这里我们可以看到,Age 列中共有 4 种不同的值,分别是 20.0、22.0、19.0 和 21.0,其中 20.0 出现了 3 次,22.0 也出现了 3 次,19.0 和 21.0 分别出现了 2 次。

3. 过滤缺失值

在实际数据处理中,我们可能需要过滤掉缺失值,只统计 DataFrame 中非空列的值数量。Pandas 的 value_counts() 函数可以接受多个参数,其中 dropna 参数用于指定是否过滤空值,默认值为 True。

例如,我们可以计算 DataFrame 中 Grade 列非空值的数量:

grade_counts = df['Grade'].value_counts(dropna=True)

print(grade_counts)

输出结果如下:

A    6
B    2
Name: Grade, dtype: int64

这里我们使用 value_counts() 函数计算 Grade 列非空值的数量,并将结果保存在 grade_counts 变量中。由于 Grade 列中有缺失值,我们将 dropna 参数设为 True,表示过滤掉缺失值。

4. 按条件统计

有时候,我们需要统计 DataFrame 中某列满足特定条件的值的数量。可以使用 Pandas 的groupby() 函数分组计数。它可以按照指定的列对 DataFrame 进行分组,并统计每组中特定条件的值的数量。

例如,我们要统计 Gender 列中各个值对应的 Grade 值的数量,可以使用以下代码:

gender_grade_counts = df.groupby('Gender')['Grade'].value_counts()

print(gender_grade_counts)

输出结果如下:

Gender  Grade
F       A        4
        B        2
M       A        2
        B        1
        C        1
        D        1
Name: Grade, dtype: int64

这里我们使用 groupby() 函数对 Gender 列进行分组,然后统计每组中 Grade 值的数量,并将结果保存在 gender_grade_counts 变量中。我们可以看到,Female 学生中有 4 人获得 A 级别,2 人获得 B 级别;Male 学生中有 2 人获得 A 级别,1 人获得 B 级别,1 人获得 C 级别,1 人获得 D 级别。

5. 按值排序

有时候,我们需要对 DataFrame 中的值按照数量进行排序,以便更好地可视化结果。可以使用 Pandas 的 sort_values() 函数对 Series 类型的对象按值进行排序。

例如,我们想对 Age 列中出现次数进行排序,可以使用以下代码:

age_counts = df['Age'].value_counts().sort_values(ascending=False)

print(age_counts)

输出结果如下:

20.0    3
22.0    3
19.0    2
21.0    2
Name: Age, dtype: int64

这里我们使用 value_counts() 函数计算 Age 列中不同值的数量,并使用 sort_values() 函数进行排序。由于 sort_values() 函数默认是按照升序排列,因此我们将参数 ascending 设为 False,表示按降序排列。

结论

本文介绍了使用 Pandas 计算 DataFrame 中某列值的数量的方法。我们可以使用 value_counts() 函数统计某列不同值的数量,dropna 参数过滤掉缺失值,groupby() 函数按列分组并统计数量。同时,我们还可以使用 sort_values() 函数按照数量排序,以便更好地可视化结果。这些方法对于数据分析和机器学习中的数据处理非常有用,可以帮助我们更深入地了解数据的分布情况和特征。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程