📌  相关文章
📜  要列出的 value_counts - Python (1)

📅  最后修改于: 2023-12-03 15:41:33.225000             🧑  作者: Mango

要列出的value_counts - Python

在数据分析中,我们常常会需要将数据中每个值出现的次数进行统计。此时,Python中的pandas库提供了一个非常实用的函数value_counts()。

value_counts()的基本用法

value_counts()函数可以直接作用于pandas中的Series和DataFrame类型。它返回一个Series类型的对象,其中包含了每个不同的值出现的次数。

下面是一个简单的例子:

import pandas as pd

data = pd.Series([1, 2, 3, 3, 4, 4, 4])
value_counts = data.value_counts()

print(value_counts)

输出结果为:

4    3
3    2
2    1
1    1
dtype: int64

这个结果告诉我们,数字4出现了3次,数字3出现了2次,数字2和1各出现了1次。

人性化的输出结果

虽然上面的结果告诉我们每个值出现的次数,但是结果的展示格式不太友好。为了便于人眼观察,我们可以使用to_frame()和reset_index()函数将结果转换成DataFrame,并使用rename()函数重命名列名。

下面是示例代码:

import pandas as pd

data = pd.Series([1, 2, 3, 3, 4, 4, 4])
value_counts = data.value_counts().to_frame().reset_index().rename(columns={'index': 'value', 0: 'counts'})

print(value_counts)

输出结果为:

| | value | counts | |---|-------|--------| | 0 | 4 | 3 | | 1 | 3 | 2 | | 2 | 2 | 1 | | 3 | 1 | 1 |

这个结果更加直观,我们可以看到每个值出现的次数以及对应的数字。

按指定列进行value_counts

如果我们要对DataFrame类型的数据按照某个列进行value_counts,则需要指定列名。下面是代码示例:

import pandas as pd

data = pd.DataFrame({'A': [1, 2, 2, 3, 3], 'B': [4, 5, 5, 6, 6]})
value_counts = data['B'].value_counts().to_frame().reset_index().rename(columns={'index': 'value', 'B': 'counts'})

print(value_counts)

输出结果为:

| | value | counts | |---|-------|--------| | 0 | 5 | 2 | | 1 | 6 | 2 | | 2 | 4 | 1 |

这个结果告诉我们,B列中数字5出现了2次,数字6也出现了2次,数字4出现了1次。

计算每个值出现的频率

当我们需要统计每个值出现的频率时,可以将参数normalize设置为True。这样,value_counts()函数返回的结果将不是每个值出现的次数,而是每个值出现的频率。

下面是代码示例:

import pandas as pd

data = pd.Series([1, 2, 3, 3, 4, 4, 4])
value_counts = data.value_counts(normalize=True).to_frame().reset_index().rename(columns={'index': 'value', 0: 'frequency'})

print(value_counts)

输出结果为:

| | value | frequency | |---|-------|-----------| | 0 | 4 | 0.428571 | | 1 | 3 | 0.285714 | | 2 | 2 | 0.142857 | | 3 | 1 | 0.142857 |

这个结果告诉我们,数字4出现的频率为0.428571,数字3出现的频率为0.285714,以此类推。