在本教程中,我将向你展示如何使用Pandas计数技术来计算Pandas数据框中的记录。
我将准确地解释该技术的作用,语法是如何工作的,并将向你展示一步步的例子,以便你能看到Pandas计数的实际应用。
如果你需要特定的东西,只需点击以下任何一个链接。
目录。
好的。 让我们从简单的介绍开始。
潘达斯计数的快速介绍
潘达斯计数函数非常简单。 count() 技术对潘达斯对象中的非缺失记录的数量进行计数。

这个方法适用于
- 潘达斯数据框
- 潘达斯系列对象
- 单独的数据框架列
经常,我们使用count() 技术进行数据探索。
但它对于数据清洗和数据分析也非常有用。 例如,有些情况下,缺失值是不好的,所以我们有时需要识别包含非缺失值的变量。 Pandas计数技术是识别包含大量缺失值的列的一种方法。
说了这么多,该方法究竟如何运作,取决于语法。
考虑到这一点,我们来看看Pandas计数方法的语法。
潘达斯计数法的语法
count方法的语法相当简单,但有几种使用方法和一些参数可以修改其功能。
所以在本节中,我将介绍如何在数据框和数据框列上使用计数方法。 我还将解释最有用的参数。
快速说明
我将要解释的一切都假设你已经导入了Pandas,并且你已经有了一个你正在处理的数据框架。
你可以通过以下代码导入Pandas。
import pandas as pd
如果你需要复习一下数据框架,你可以阅读我们对Pandas数据框架的介绍。
数据框架语法
让我们先来看看如何在数据框架上使用计数技术。
要用一个数据框架调用计数方法,你只需输入数据框架的名字,然后.count() 。
因此,如果你的数据框架被命名为your_dataframe ,你可以使用代码your_dataframe.count() 来计算每一列中的非遗漏值的数量。
还有一些额外的参数,你可以在括号内使用,我们稍后会讨论这些参数。
系列语法
接下来,让我们看看如何在系列中使用Pandas计数的语法。
系列的语法与数据框架的语法非常相似。
只需输入系列的名称,然后.count() 来调用该方法。
同样,你可以调用一些额外的参数来修改该技术。
数据框架列的语法
最后,我们有一个数据框架列的语法。
记住,数据框架列实际上是一个Pandas系列。 此外,我们可以使用所谓的 "点语法 "从数据框架中检索一个列。
因此,在一个列上使用count() 的语法是一个两步过程。
- 使用点状语法检索该列
- 调用计数方法
因此,如果你有一个名为your_dataframe 的数据框架,和一个名为column 的列,你将使用代码your_dataframe.column.count() 来对这一列使用计数技术。
同样,有一些可选参数可以控制该技术如何工作。 让我们看一下这些参数。
潘达斯计数的参数
对于计数方法,有两个参数你应该知道。
axisnumeric_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 = True ,count() 技术只计算数字列的非缺失值的数量。
例子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
解释
在这里,我们计算了三个变量中的非失踪记录:survived ,age ,和embark_town 。
为了做到这一点,我们实际上需要调用两个不同的Pandas方法。
首先,我们调用了过滤器方法,以检索数据框架列的子集。
之后,我们调用count() 方法。
而这只计算了我们子集中的三个选定变量的非遗漏记录。
另外,注意到所有的函数都在不同的行上。 为了使其发挥作用,我们需要将整个表达式放在括号内。
这种风格的Pandas编码是不典型的,但是当你在做数据清理、数据探索或数据分析时,它可以_非常_有用。
这实际上是一种非常强大的Pandas技术,你应该多了解一下(在页面底部的评论区留下你的问题)。
关于KEYWORD的常见问题
现在你已经看到了一些Pandas计数技术的例子,让我们来看看一个常见的问题。
常见的问题。
问题1:为什么axis = 'columns' 会计算行中的非缺失值?
如果你设置axis = 'columns' ,你会发现它实际上是在计算行中的非缺失值_。_
WTF?
好吧。 要理解这一点,你需要理解轴,以及大多数人对轴的_思考_方式。
让我们快速回顾一下。
Pandas数据框(像Numpy数组)有轴。 轴就像沿着数据框架的_方向_。
这里的一个类比是3维笛卡尔坐标系。 有一个X轴、Y轴和Z轴。 这些是三维空间中的_方向_。
数据框架也有轴。 轴就像沿着数据框架的方向。
对于一个数据框架来说,轴0指向下方,轴1指向水平方向。
我不会在这里解释为什么轴是这样编号的原因。 这只是你需要记住的东西:轴-0向下指向,轴-1水平指向。
说到这里,人们通常认为轴-1是 "列 "轴。 为什么呢? 因为当我们像上图那样将其可视化时,我们通常会显示一个箭头,水平地指向列的顶部。 所以人们认为轴-1是 "列 "的轴。
但是这真的很愚蠢,因为当你使用轴-1进行操作时,比如.count(axis = 1) ,它实际上是在计算行_数_。
老实说,我认为这是对人们如何看待轴的误解,并且以一种反直觉的方式使用术语。
既然如此,我强烈建议你避免使用count(axis = "columns") 或count(axis = "rows") 这样的符号。
相反,使用axis = 1 或axis = 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进行数据科学的教程。
给我免费的教程!