https://www.ytyzx.org/index.php?title=%E9%AB%98%E6%95%88%E4%BD%BF%E7%94%A8pandas%E7%9A%84value_counts()&feed=atom&action=history
高效使用pandas的value counts() - 版本历史
2024-03-29T16:02:38Z
本wiki的该页面的版本历史
MediaWiki 1.28.2
https://www.ytyzx.org/index.php?title=%E9%AB%98%E6%95%88%E4%BD%BF%E7%94%A8pandas%E7%9A%84value_counts()&diff=8208&oldid=prev
Ytyzx:创建页面,内容为“数据科学家通常将大部分时间花在探索和预处理数据上。当谈到数据分析和理解数据结构时,Pandas value_counts() 是最受欢迎的...”
2022-03-20T10:34:14Z
<p>创建页面,内容为“数据科学家通常将大部分时间花在探索和预处理数据上。当谈到数据分析和理解数据结构时,Pandas value_counts() 是最受欢迎的...”</p>
<p><b>新页面</b></p><div>数据科学家通常将大部分时间花在探索和预处理数据上。当谈到数据分析和理解数据结构时,Pandas value_counts() 是最受欢迎的函数之一。该函数返回一个包含唯一值计数的系列。生成的Series可以按降序或升序排序,通过参数控制包括或排除NA。<br />
<br />
在本文中,我们将探讨 Pandas value_counts() 的不同用例。您将学习如何使用它来处理以下常见任务。<br />
<br />
默认参数<br />
按升序对结果进行排序<br />
按字母顺序排列结果<br />
结果中包含空值<br />
以百分比计数显示结果<br />
将连续数据分入离散区间<br />
分组并调用 value_counts()<br />
将结果系列转换为 DataFrame<br />
应用于DataFrame<br />
1、默认参数<br />
Pandas value_counts() 函数返回一个包含唯一值计数的系列。默认情况下,结果系列按降序排列,不包含任何 NA 值。例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。<br />
<br />
>>> df['Embarked'].value_counts()<br />
<br />
S 644<br />
C 168<br />
Q 77<br />
Name: Embarked, dtype: int64<br />
2、按升序对结果进行排序<br />
value_count() 返回的系列默认按降序排列。对于升序结果,我们可以将参数升序设置为 True。<br />
<br />
>>> df['Embarked'].value_counts(ascending=True)<br />
<br />
Q 77<br />
C 168<br />
S 644<br />
Name: Embarked, dtype: int64<br />
3、按字母顺序排列结果<br />
我们已经学习了参数升序以获得按值计数 ASC 或 DESC 排序的结果。在某些情况下,最好按字母顺序显示我们的结果。这可以通过在 value_counts() 之后调用 sort_index(ascending=True) 来完成,例如<br />
<br />
>>> df['Embarked'].value_counts(ascending=True).sort_index(ascending=True)<br />
<br />
C 168<br />
Q 77<br />
S 644<br />
Name: Embarked, dtype: int64<br />
4、包括结果中的 NA<br />
默认情况下,结果中会忽略包含任何 NA 值的行。有一个参数 dropna 来配置它。我们可以将该值设置为 False 以包含 NA 的行数。<br />
<br />
df['Embarked'].value_counts(dropna=False)<br />
S 644<br />
C 168<br />
Q 77<br />
NaN 2<br />
Name: Embarked, dtype: int64<br />
5、以百分比计数显示结果<br />
在进行探索性数据分析时,有时查看唯一值的百分比计数会更有用。这可以通过将参数 normalize 设置为 True 来完成,例如:<br />
<br />
df['Embarked'].value_counts(normalize=True)<br />
<br />
S 0.724409<br />
C 0.188976<br />
Q 0.086614<br />
Name: Embarked, dtype: float64<br />
如果我们更喜欢用百分号 (%) 格式化结果,我们可以设置 Pandas 显示选项如下:<br />
<br />
>>> pd.set_option('display.float_format', '{:.2f}%'.format)<br />
>>> df['Embarked'].value_counts(normalize = True)<br />
<br />
S 0.72%<br />
C 0.19%<br />
Q 0.09%<br />
Name: Embarked, dtype: float64<br />
6、将连续数据分入离散区间<br />
Pandas value_counts() 可用于使用 bin 参数将连续数据分入离散区间。与 Pandas cut() 函数类似,我们可以将整数或列表传递给 bin 参数。<br />
<br />
当整数传递给 bin 时,该函数会将连续值离散化为大小相等的 bin,例如:<br />
<br />
>>> df['Fare'].value_counts(bins=3)<br />
(-0.513, 170.776] 871<br />
(170.776, 341.553] 17<br />
(341.553, 512.329] 3<br />
Name: Fare, dtype: int64<br />
当列表传递给 bin 时,该函数会将连续值划分为自定义组,例如:<br />
<br />
>>> df['Fare'].value_counts(bins=[-1, 20, 100, 550])<br />
(-1.001, 20.0] 515<br />
(20.0, 100.0] 323<br />
(100.0, 550.0] 53<br />
Name: Fare, dtype: int64<br />
7、分组并执行 value_counts()<br />
Pandas groupby() 允许我们将数据分成不同的组来执行计算以进行更好的分析。一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。<br />
<br />
>>> df.groupby('Embarked')['Sex'].value_counts()<br />
<br />
Embarked Sex <br />
C male 95<br />
female 73<br />
Q male 41<br />
female 36<br />
S male 441<br />
female 203<br />
Name: Sex, dtype: int64<br />
8、将结果系列转换为 DataFrame<br />
Pandas value_counts() 返回一个Series,包括前面带有 MultiIndex 的示例。如果我们希望我们的结果显示为 DataFrame,我们可以在 value_count() 之后调用 to_frame()。<br />
<br />
>>> df.groupby('Embarked')['Sex'].value_counts().to_frame()<br />
<br />
9、应用于DataFrame<br />
到目前为止,我们一直将 value_counts() 应用于 Pandas Series,在 Pandas DataFrame 中有一个等效的方法。Pandas DataFrame.value_counts() 返回一个包含 DataFrame 中唯一行计数的系列。<br />
<br />
让我们看一个例子来更好地理解它:<br />
<br />
df = pd.DataFrame({<br />
'num_legs': [2, 4, 4, 6],<br />
'num_wings': [2, 0, 0, 0]},<br />
index=['falcon', 'dog', 'cat', 'ant']<br />
)<br />
>>> df.value_counts()<br />
<br />
num_legs num_wings<br />
4 0 2<br />
6 0 1<br />
2 2 1<br />
dtype: int64<br />
通过在 df 上调用 value_counts(),它返回一个以 num_legs 和 num_wings 作为索引的 MultiIndex 系列。从结果中,我们可以发现有 2 条记录的 num_legs=4 和 num_wing=0。<br />
<br />
同样,我们可以调用 to_frame() 将结果转换为 DataFrame<br />
<br />
>>> df.value_counts().to_frame()</div>
Ytyzx