Pandas 计算特定值的出现次数

Pandas 计算特定值的出现次数

在本文中,我们将介绍如何使用Pandas库计算一个DataFrame中特定值的出现次数。

假设我们有以下的DataFrame:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
                   'B': ['a', 'a', 'b', 'c', 'c']})
Python

它长这样:

   A  B
0  1  a
1  2  a
2  3  b
3  4  c
4  5  c
Python

我们想知道’B’列中每个值出现的次数。这个时候,可以使用.value_counts()函数来实现:

value_counts = df['B'].value_counts()
Python

这一行代码将会返回一个Series,长这样:

a    2
c    2
b    1
Name: B, dtype: int64
Python

Series中每个值的行索引是DataFrame中’B’列的唯一值,而每个值的行数据是该值在’B’列中出现的次数。在这个例子中,我们可以发现’a’出现了两次,’c’出现了两次,而’b’仅出现了一次。

如果我们想在新的一列中为DataFrame添加这些值,可以使用.map()函数:

df['B_counts'] = df['B'].map(value_counts)
Python

这一行代码将会添加一个’B_counts’列到DataFrame中,它的每个值都是’B’列中对应唯一值出现的次数。结果如下:

   A  B  B_counts
0  1  a         2
1  2  a         2
2  3  b         1
3  4  c         2
4  5  c         2
Python

阅读更多:Pandas 教程

处理缺失值

当DataFrame中存在缺失值时,我们会遇到一些问题。如果一个值在’B’列中缺失,那么.value_counts()函数将不会统计它的出现次数。以以下的DataFrame为例:

df_missing = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6],
                           'B': ['a', 'a', 'b', None, 'c', None]})
Python

它长这样:

   A     B
0  1     a
1  2     a
2  3     b
3  4  None
4  5     c
5  6  None
Python

如果我们仍使用.value_counts()函数,它将会返回以下的结果:

a    2
c    1
b    1
Name: B, dtype: int64
Python

我们可以发现,缺失值并没有被统计。为了解决这个问题,我们需要使用.fillna()函数将缺失值填充为一个非空值:

df_missing['B'] = df_missing['B'].fillna('missing')
value_counts = df_missing['B'].value_counts()
Python

这一行代码将会将缺失值全部填充为’missing’,然后计算值出现的次数。结果如下:

a         2
missing   2
c         1
b         1
Name: B, dtype: int64
Python

现在所有的值都被正确地统计了,’missing’出现了两次。

统计多列的值

如果我们想同时统计多个列出现的值,可以使用.melt()函数将DataFrame的多列转换为一列,并在新列中统计值的出现情况。以以下的DataFrame为例:

df_multi = pd.DataFrame({'A': [1, 2, 3, 4, 5],
                         'B': ['a', 'a', 'b', 'c', 'c'],
                         'C': ['x', 'y', 'y', 'z', 'z']})

它长这样:
Python

A B C
0 1 a x
1 2 a y
2 3 b y
3 4 c z
4 5 c z

假设我们想同时统计'B''C'列中的值,可以使用`.melt()`函数将这两列转换为一列,并在新列中统计值的出现情况:

```python
df_multi_melt = df_multi.melt(value_vars=['B', 'C'], var_name='Column', value_name='Value')
value_counts = df_multi_melt['Value'].value_counts()
Python

这一行代码将会把’B’和’C’列转换为一个名为’Column’的新列,同时保留每个值在原列中的来源,如下所示:

  Column Value
0      B     a
1      B     a
2      B     b
3      B     c
4      B     c
5      C     x
6      C     y
7      C     y
8      C     z
9      C     z
Python

然后我们可以使用.value_counts()函数统计’Value’列中每个值的出现次数:

z    2
a    2
y    2
c    2
b    1
x    1
Name: Value, dtype: int64
Python

我们可以发现,’a’和’c’在’B’和’C’列中各出现了一次,而’y’和’z’在’C’列中各出现了两次。

总结

本文介绍了如何使用Pandas库来计算DataFrame中特定值的出现次数。我们讨论了如何使用.value_counts()函数来统计单列和多列中每个值的出现次数,并且解决了处理缺失值时的问题。Pandas的强大功能可以帮助我们在处理数据时快速统计关键信息,为数据分析和处理提供便利。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册