Pandas计数详细教程

303 阅读15分钟

在本教程中,我将向你展示如何使用Pandas计数技术来计算Pandas数据框中的记录。

我将准确地解释该技术的作用,语法是如何工作的,并将向你展示一步步的例子,以便你能看到Pandas计数的实际应用。

如果你需要特定的东西,只需点击以下任何一个链接。

目录。

好的。 让我们从简单的介绍开始。

潘达斯计数的快速介绍

潘达斯计数函数非常简单。 count() 技术对潘达斯对象中的非缺失记录的数量进行计数。

An image showing how the Pandas count method counts the number of non-missing values in a Pandas dataframe or Series.

这个方法适用于

  • 潘达斯数据框
  • 潘达斯系列对象
  • 单独的数据框架列

经常,我们使用count() 技术进行数据探索。

但它对于数据清洗和数据分析也非常有用。 例如,有些情况下,缺失值是不好的,所以我们有时需要识别包含非缺失值的变量。 Pandas计数技术是识别包含大量缺失值的列的一种方法。

说了这么多,该方法究竟如何运作,取决于语法。

考虑到这一点,我们来看看Pandas计数方法的语法。

潘达斯计数法的语法

count方法的语法相当简单,但有几种使用方法和一些参数可以修改其功能。

所以在本节中,我将介绍如何在数据框和数据框列上使用计数方法。 我还将解释最有用的参数。

快速说明

我将要解释的一切都假设你已经导入了Pandas,并且你已经有了一个你正在处理的数据框架。

你可以通过以下代码导入Pandas。

import pandas as pd

如果你需要复习一下数据框架,你可以阅读我们对Pandas数据框架的介绍

数据框架语法

让我们先来看看如何在数据框架上使用计数技术。

要用一个数据框架调用计数方法,你只需输入数据框架的名字,然后.count()

An image that shows the syntax for how to use Pandas count on a dataframe.

因此,如果你的数据框架被命名为your_dataframe ,你可以使用代码your_dataframe.count() 来计算每一列中的非遗漏值的数量。

还有一些额外的参数,你可以在括号内使用,我们稍后会讨论这些参数。

系列语法

接下来,让我们看看如何在系列中使用Pandas计数的语法。

系列的语法与数据框架的语法非常相似。

只需输入系列的名称,然后.count() 来调用该方法。

An explanation of how to use count on a Pandas series.

同样,你可以调用一些额外的参数来修改该技术。

数据框架列的语法

最后,我们有一个数据框架列的语法。

记住,数据框架列实际上是一个Pandas系列。 此外,我们可以使用所谓的 "点语法 "从数据框架中检索一个列。

因此,在一个列上使用count() 的语法是一个两步过程。

  • 使用点状语法检索该列
  • 调用计数方法

An explanation of how to use Pandas count on a dataframe column.

因此,如果你有一个名为your_dataframe 的数据框架,和一个名为column 的列,你将使用代码your_dataframe.column.count() 来对这一列使用计数技术。

我将在例4中向你展示这个例子

同样,有一些可选参数可以控制该技术如何工作。 让我们看一下这些参数。

潘达斯计数的参数

对于计数方法,有两个参数你应该知道。

  • axis
  • numeric_only

让我们分别谈谈这些参数。

axis (可选)

axis 参数控制count() 是对行还是对列进行操作。

默认情况下,这个参数被设置为axis = 0 ,所以count() 计数轴0方向上的非缺失值的数量。 这实际上是列计数。

你可以改变这一点,将参数设置为axis = 1 。 这将计算出轴-1方向上的非遗漏值(行数)。

你也可以使用另一种符号,用axis = "columns"axis = "rows" 。我强烈建议你不要使用这种符号,因为它非常令人困惑。 我在常见问题部分解释了原因。

关于axis 参数的最后一点评论:要理解这个参数,你真的需要理解轴。 对于轴的工作原理的解释,你应该阅读我们关于Numpy轴的教程(Numpy轴与数据框架轴非常相似)。

numeric_only (可选)

numeric_only 参数使你可以强制count方法只返回数字变量的计数。

默认情况下,该参数被设置为numeric_only = False ,所以count方法会返回_所有_变量的计数。

但是如果你设置了numeric_only = True ,计数方法将只返回数字变量的计数(整数、浮点数等)。

在例3中展示了一个例子。

例子:如何计算潘达斯数据框架或潘达斯系列中的记录

现在我们已经看过了语法,让我们来看看一些如何使用Pandas计数技术的例子。

我们将看看如何计算数据框架中的记录,如何计算单列中的记录,以及其他一些用途的例子。

例子。

先运行此代码

在你运行这些例子之前,你需要运行一些初步的代码。

特别是,你需要

  • 导入必要的包
  • 加载一个数据框架

让我们一个一个来做这些事情。

导入软件包

首先,让我们导入几个包。

我们需要导入Pandas(因为count() 方法是Pandas的一部分)。

import pandas as pd
import seaborn as sns

我们还需要导入Seaborn,因为我们将使用titanic 数据框,它包含在Seaborn包中。

接下来让我们加载该数据集。

加载数据框架

在这里,我们将加载titanic 数据框架。

titanic = sns.load_dataset('titanic')

让我们也把它打印出来,这样我们就可以看到内容了。

print(titanic)

OUT:

     survived  pclass     sex   age  sibsp  parch     fare embarked   class       who  adult_male deck  embark_town alive  alone  
0           0       3    male  22.0      1      0   7.2500        S   Third      man        True  NaN  Southampton    no  False    
1           1       1  female  38.0      1      0  71.2833        C   First    woman       False    C    Cherbourg   yes  False     
2           1       3  female  26.0      0      0   7.9250        S   Third    woman       False  NaN  Southampton   yes   True  
3           1       1  female  35.0      1      0  53.1000        S   First    woman       False    C  Southampton   yes  False  
4           0       3    male  35.0      0      0   8.0500        S   Third      man        True  NaN  Southampton    no   True  
..        ...     ...     ...   ...    ...    ...      ...      ...     ...      ...         ...  ...          ...   ...    ...  
886         0       2    male  27.0      0      0  13.0000        S  Second      man        True  NaN  Southampton    no   True     
887         1       1  female  19.0      0      0  30.0000        S   First    woman       False    B  Southampton   yes   True  
888         0       3  female   NaN      1      2  23.4500        S   Third    woman       False  NaN  Southampton    no  False  
889         1       1    male  26.0      0      0  30.0000        C   First      man        True    C    Cherbourg   yes   True  
890         0       3    male  32.0      0      0   7.7500        Q   Third      man        True  NaN   Queenstown    no   True   

[891 rows x 15 columns]

这个数据框架有15列。 如果你仔细看一下上面的输出,你实际上会看到一些NaN 的值。 我们就可以用count() 来计算非NaN 的值。

例子1:计算一个数据框架中所有列的记录

首先,我们将计算数据框架中每一列的非空记录的数量。

这是在数据框架上使用计数方法的最简单方法。

让我们来看看,然后我会解释。

titanic.count()

输出。

survived       891
pclass         891
sex            891
age            714
sibsp          891
parch          891
fare           891
embarked       889
class          891
who            891
adult_male     891
deck           203
embark_town    889
alive          891
alone          891
dtype: int64

解释

这真的很简单。

这里,我们在整个titanic 数据框上使用count()

要做到这一点,我们只需输入数据框架的名称,titanic ,然后再输入.count()

在输出中,我们可以看到每一列的非遗漏记录的数量。

我们知道该数据框架共有891行(我们在打印出数据时看到了这一点)。

而在这里,我们可以看到许多变量--如survived,pclass, 和class --有891个值。 这些变量是完全填充的。

但是我们也看到,有些数值少于891。 例如,deck 只有203条非遗漏记录。age 有714条。

这可能是数据清理过程中的有用信息。 如果你正在建立一个机器学习模型,它也可能是有用的因为一些模型类型不会容忍缺失值。

实例2:计算行中非缺失值的数量

接下来,让我们来计算每一行中的非缺失值的数量。

通常情况下,我使用count() 技术来计算columns 的非缺失值。但是,可能有的时候,你需要代替检查行。

要做到这一点,我们需要使用轴参数。

让我们来看看。

titanic.count(axis = 1)

OUT:

0      14
1      15
2      14
3      15
4      14
       ..
886    14
887    15
888    13
889    15
890    14
Length: 891, dtype: int64

解释

在这里,我们可以看到行的非缺失值的数量。

现在请记住:我们从先前的数据检查中知道,数据框架有15列。 所以一个完整的行应该有15个非遗漏值。

但是我们可以看到,有几行显示的非缺失值是13或14。 事实上,第一行只有14个值。 这意味着这些行中有一些有缺失的值。这可能是好的,但也许不是,这取决于你在做什么。

在语法方面,注意到我们需要设置axis = 1 来计算行中缺失值的数量。 理解Pandas的 "轴 "是很困难的,但如果你回顾一下Numpy的轴,肯定会有帮助 Pandas的轴与二维Numpy数组的轴基本相同。

请注意,如果你设置axis = 'columns' ,你也可以做同样的事情。axis = 'columns'axis = 1 是一样的。 说到这里,我强烈建议不要使用这种符号,因为它非常容易混淆。 设置axis = 'columns' ,实际上是为你提供了行的非遗漏值的数量。
,潘达斯的开发者这样命名是有原因的,但是只有当你真正理解了轴是什么的时候,它才有意义。 再次强调,我强烈建议你避免使用这种备用符号,而只需使用axis = 1 。 我在 "常见问题 "部分对此有更多的解释。

实例3:只获取数字变量的计数

接下来,让我们只获取数字变量的计数。

要做到这一点,我们可以设置numeric_only = True

titanic.count(numeric_only = True)

OUT。

survived      891
pclass        891
age           714
sibsp         891
parch         891
fare          891
adult_male    891
alone         891
dtype: int64

解释

这里,通过设置numeric_only = Truecount() 技术只计算数字列的非缺失值的数量。

例子4:计算特定列中的非遗漏值

在这里,让我们来计算一个特定列的非遗漏值。

特别是,我们将计算deck 变量中的非遗漏值的数量。

titanic.deck.count()

输出。

203

解释

为了获得单列中的非遗漏值的数量,我们需要使用两步程序。

  • 使用 "点语法 "来检索特定的列
  • 调用.count() 方法

所以语法titanic.deck ,从titanic 数据框中检索deck 变量。

然后,通过使用.count() ,Python将只计算该列的非遗漏记录。

例子5:计算一个列的子集的记录

最后,让我向你展示一个 "特殊 "的技术。

在这里,我们将计算一些列的子集中的非失踪记录。

要做到这一点,我们需要使用一些你在其他地方不太可能看到的语法。

让我们来看看,然后我再解释。

(titanic
 .filter(['survived','age','embark_town'])
 .count()
)

OUT。

survived       891
age            714
embark_town    889
dtype: int64

解释

在这里,我们计算了三个变量中的非失踪记录:survivedage ,和embark_town

为了做到这一点,我们实际上需要调用两个不同的Pandas方法。

首先,我们调用了过滤器方法,以检索数据框架列的子集

之后,我们调用count() 方法。

而这只计算了我们子集中的三个选定变量的非遗漏记录。

另外,注意到所有的函数都在不同的行上。 为了使其发挥作用,我们需要将整个表达式放在括号内。

这种风格的Pandas编码是不典型的,但是当你在做数据清理、数据探索或数据分析时,它可以_非常_有用

这实际上是一种非常强大的Pandas技术,你应该多了解一下(在页面底部的评论区留下你的问题)。

关于KEYWORD的常见问题

现在你已经看到了一些Pandas计数技术的例子,让我们来看看一个常见的问题。

常见的问题。

问题1:为什么axis = 'columns' 会计算行中的非缺失值?

如果你设置axis = 'columns' ,你会发现它实际上是在计算行中的非缺失值_。_

WTF?

好吧。 要理解这一点,你需要理解轴,以及大多数人对轴的_思考_方式。

让我们快速回顾一下。

Pandas数据框(像Numpy数组)有轴。 轴就像沿着数据框架的_方向_。

这里的一个类比是3维笛卡尔坐标系。 有一个X轴、Y轴和Z轴。 这些是三维空间中的_方向_。

数据框架也有轴。 轴就像沿着数据框架的方向。

对于一个数据框架来说,轴0指向下方,轴1指向水平方向。

An image that shows the axes of a dataframe

我不会在这里解释为什么轴是这样编号的原因。 这只是你需要记住的东西:轴-0向下指向,轴-1水平指向。

说到这里,人们通常认为轴-1是 "列 "轴。 为什么呢? 因为当我们像上图那样将其可视化时,我们通常会显示一个箭头,水平地指向列的顶部。 所以人们认为轴-1是 "列 "的轴。

但是这真的很愚蠢,因为当你使用轴-1进行操作时,比如.count(axis = 1) ,它实际上是在计算行_数_。

老实说,我认为这是对人们如何看待轴的误解,并且以一种反直觉的方式使用术语。

既然如此,我强烈建议你避免使用count(axis = "columns")count(axis = "rows") 这样的符号。

相反,使用axis = 1axis = 0

关于坐标轴的更多信息,请阅读我们的Numpy坐标轴教程。 关于2D Numpy数组的细节适用于Pandas数据帧。

在下面的评论中留下你的其他问题

你对Pandas计数技术还有其他问题吗?

是否有一些你仍然感到困惑的东西,而我在这里没有涉及?

如果是,请在下面的评论区留下你的问题。

想了解更多关于Pandas的信息,请注册我们的邮件列表

本教程应该已经帮助你了解了潘达斯计数技术,以及它是如何工作的。

但如果你想掌握用Pandas进行数据处理和数据探索,还有很多东西要学。

如果你想在Python中学习数据科学,甚至还有更多东西要学。

也就是说,如果你已经准备好学习更多关于Pandas和Python中的数据科学,那么请注册我们的电子邮件列表。

当你注册时,你会得到以下方面的免费教程。

  • NumPy
  • Pandas
  • 基础Python
  • Scikit learn
  • 机器学习
  • 深度学习
  • ...以及更多。

我们每周都会发布免费的数据科学教程。 当你注册我们的电子邮件列表时,我们将把这些免费教程直接送到你的收件箱。

.et_bloom .et_bloom_optin_7 .et_bloom_form_content { 背景色。#999999 !important; } .et_bloom .et_bloom_optin_7 .et_bloom_form_container .et_bloom_form_header { 背景色。#2a2b2d !important; } .et_bloom .et_bloom_optin_7 .carrot_edge .et_bloom_form_content:before { border-top-color:#2a2b2d !important; } .et_bloom .et_bloom_optin_7 .carrot_edge.et_bloom_form_right .et_bloom_form_content:before, .et_bloom .et_bloom_optin_7 .carrot_edge.et_bloom_form_left .et_bloom_form_content:before { border-top-color : transparent !important; border-left-color:#2a2b2d !important; } @media only screen and ( max-width: 767px ) {.et_bloom .et_bloom_optin_7 .carrot_edge.et_bloom_form_right .et_bloom_content:before { border-top-color:#2a2b2d !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_7 .carrot_edge.et_bloom_form_left .et_bloom_form_content:after { border-bottom-color :#2a2b2d !important; border-left-color: transparent !important; }.et_bloom .et_bloom_optin_7 .et_bloom_form_content button { 背景色。#4598ab !important; } .et_bloom .et_bloom_optin_7 .et_bloom_form_content .et_bloom_fields i { color:#4598ab !important; } .et_bloom .et_bloom_optin_7 .et_bloom_form_content .et_bloom_custom_field_radio i: before { background:#4598ab !important; } .et_bloom .et_bloom_optin_7 .et_bloom_form_content button { background-color:#4598ab !important; } .et_bloom .et_bloom_optin_7 .et_bloom_form_container h2, .et_bloom .et_bloom_optin_7 .et_bloom_form_container h2 span, .et_bloom .et_bloom_optin_7 .et_bloom_form_container h2 strong { 字体-family:"Open Sans", Helvetica, Arial, Lucida, sans-serif; }.et_bloom .et_bloom_optin_7 .et_bloom_form_container p, .et_bloom .et_bloom_optin_7 .et_bloom_form_container span, .et_bloom .et_bloom_optin_7 .et_bloom_form_container p strong, .et_bloom .et_bloom_optin_7 .et_bloom_form_container form input, .et_bloom .et_bloom_optin_7 .et_bloom_form_container form button span{字体:"Open Sans", Helvetica, Arial, Lucida, sans-serif; }

注册获取免费的数据科学教程

如果你想快速掌握数据科学,请注册我们的电子邮件列表。

当你注册时,你将会收到每周免费的关于如何用R和Python进行数据科学的教程。

给我免费的教程!

检查您的电子邮件收件箱,确认您的订阅 ...