c++没有终结符的多行输入如何停止_如何使用iloc和loc 对Pandas Dataframe进行索引和切片...
在这篇文章中,我们将使用iloc和loc来处理数据。更具体地说,我们将通过iloc和loc例子来学习切片和索引。
一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开始访问该数据的特定部分。例如,如果我们的数据集包含比较不同实验组的实验结果,我们可能需要分别计算每个实验组的描述性统计。
更多有关对Pandas dataframes进行分组的内容
如何在Python中进行描述性统计
根据某些标准选择数据的特定行和列的过程通常称为切片。
Pandas Dataframe
在我们学习如何使用loc和iloc之前,我们最好先了解一下Pandas dataframe对象是如何工作的。对于本索引和切片教程的特定目的,我们最好知道dataframe中的每个行和列都有一个数字——一个索引。
这种结构是带有数字索引的行和列结构,这意味着我们可以使用行号和列号来处理数据。这在我们准备使用Pandas loc和iloc方法的时候是非常有用的。
请参阅博文《使用Pandas和pyjanitor——了解一些简单的Python数据清理方法》。
Data
在下面的iloc和loc例子中,我们将使用两个数据集。这些数据集,在许多其他的RDataset中,可以在这里找到,但是下面的代码将把它们加载到Pandas dataframe中:
如果您有兴趣学习更多有关Pandas数据处理的知识,请查看以下文章:
如何将CSV文件读入Pandas
如何将Excel文件读入Pandas
将SPSS文件读入Pandas
使用Python和Pandas处理JSON文件
loc 和 iloc之间有什么不同?
在继续使用Pandas iloc和Pandas loc之前,我们将回答有关loc和iloc之间的区别的问题。
首先,.loc是一个基于标签的方法,而.iloc是一个基于整数的方法。这意味着当我们对dataframe进行切片时,loc将考虑索引的名称或标签。
Pandas loc 示例链接
例如,如果“case”在一个dataframe(例如,df)的索引中,那么df.loc['case']将导致第三行被选中。注意,在下面的loc和iloc例子中,我们将使用数据集中的第一列作为索引(参见第一个代码块)。
另一方面,Pandas .iloc会根据索引的位置进行切片。与.loc不同,.iloc的行为类似于常规的Python切片。也就是说,我们只需要指定位置索引数字,就会得到我们想要的切片。
例如,df.iloc[2]会为我们提供dataframe的第三行。这是因为,就像在Python中一样,.iloc是基于0位置的,也就是说,它从0开始。我们将在下面的文章中学习如何使用loc和iloc。
iloc在Pandas中能做什么?
如前所述,Pandas iloc主要基于整数位置。也就是说,可以使用0到长度-1来对一个dataframe建立索引,无论它是行索引还是列索引。
此外,正如我们将在后面的Pandas iloc 例子中所看到的,该方法也可以与一个布尔数组一起使用。
在这个Pandas iloc教程中,我们将使用以下输入方法:
一个整数,例如2
一个整数列表,例如 [7, 2, 0]
一个带有整数的切片对象,例如0:7, 如上图所示
一个布尔型数组。
如何使用Pandas iloc
现在您可能想知道“如何使用iloc?”,当然,我们会回答这个问题。以最简单的形式,我们只需在括号中键入一个整数。
正如您在上面的Pandas iloc例子中所看到的,我们在iloc方法之后键入了一组方括号。
此外,我们还添加了一个整数(0)作为索引值,以指明我们想要获取我们的dataframe的第一行。注意,在使用.iloc时,一定要知道方括号内索引的顺序显然很重要。
第一个索引号将是我们要检索的行。如果我们要检索一个特定的列,或者某些特定的列,使用iloc,我们会输入第二个索引(或多个索引)。但是,这是可选的,并且没有第二个索引时,iloc将默认检索所有列。
如前所述,Pandas iloc语法是: DataFrame.iloc[,]。
这可能会让R统计编程环境的用户感到困惑。要进行迭代,我们可以使用Pandas中的iloc方法来以行和列在dataframe中出现的顺序按数字选择它们。
>>> 今日签到口令:ipd5 <<<
Pandas iloc 例子
在下一节中,我们将通过查看如何使用iloc的不同例子来继续这个Pandas 索引和切片教程。当然,我们已经从最基本的方法开始了;即选择单个行:
索引一个Pandas dataframe的最后一行
在下一个例子中,我们将继续使用一个整数来索引dataframe。然而,如果我们想要检索一个Pandas dataframe的最后一行,我们使用“-1”:
当我们使用iloc时,我们还可以输入一个只有一个索引整数的列表。这将会索引一行,但输出将不同于上面的例子:
使用iloc选择多行
当然,我们也可以使用iloc从一个pandas dataframe中选择很多行。例如,如果我们向列表中添加更多的索引整数,就像上面的例子一样,我们就可以选择很多行。
在Pandas中使用iloc对行进行切片
在下一个Pandas iloc例子中,我们将学习有关切片的知识。注意,稍后我们将进一步熟悉使用切片字符“:”。要选择第11行到第15行,我们只需输入以下代码:
使用Pandas iloc选择列
如前所述,当然,在使用iloc方法中的第二个参数时,我们也可以选择或切片列。在下一个iloc例子中,我们可能希望只检索dataframe中的第一列,即索引位置为0的列。
为此,我们将在使用iloc时在括号内的第二个位置使用一个整型索引值。注意,第二个位置的整数索引指定了我们要检索的列。那行是怎样呢?
注意,当我们想使用iloc选择所有行和一列(或多个列)时,我们需要使用“:”字符。
在上面的 Pandas iloc例子中,我们在括号内的第一个位置使用了“:”字符。这表明我们想要检索所有的行。提醒一下,[]内的第一个索引位置用来指定行,并且我们使用了“:”字符,因为我们希望从一个Pandas dataframe获取所有行。
在下一个关于如何使用Pandas iloc的例子中,我们将获取一个一些列和所有行的切片。这可以用与上面类似的方法来完成。然而,我们使用了一个Python切片来获取所有行和前6列,而不是使用一个整数:
使用iloc选择一个特定的单元格
在Pandas iloc教程的这一节中,我们将学习如何选择一个特定的单元格。
当然,这非常简单,我们只需要对我们希望从dataframe中获取的行和列使用一个整型索引值即可。例如,如果我们要选择第0行和第0列中的数据,我们只需键入df1.iloc[0, 0]。
当然,我们也可以选择多行和/或多列。为此,我们只需添加一个包含我们希望iloc为我们选择的整数索引的列表。
例如,如果我们想要选择第4行和第2、3、4列中的数据,我们只需使用以下代码:
检索单元格的子集
在下一个iloc例子中,我们将从来自dataframe的单元格中获取一个子集。
要实现这一点,我们需要组合使用iloc获取一个列切片和一个行切片:
使用布尔掩码选择列
在最后一个例子中,我们将使用一个布尔掩码来选择列。要这样做,我们当然需要知道有多少列,以及我们想要选择哪些列。
如何使用Pandas loc
在本节中,我们将介绍另一个Pandas方法,即用于从dataframe中选择数据的loc。
何时使用loc?
记住,iloc使用位置引用作为参数输入,而loc使用索引作为参数。由于loc接受索引,我们可以传递字符串(例如列名)作为一个参数,而如果我们在iloc中使用字符串时,它会抛出一个错误。因此,什么时候使用Pandas loc呢?答案就是当我们知道了索引名时。
在本loc教程中,我们将使用以下输入:
单个标签,例如2或' b '。
值得注意的是,Pandas会将2解释为一个索引的标签,而不是索引上的整数位置(与iloc相反)
一个标签列表,例如[‘a’, ‘b’, c’]
一个带有标签的切片对象,例如‘shortname’:’SASname’。重要的是,当涉及到切片时,当我们使用loc时,开始和停止位置都包括在内
使用Pandas loc选择一行
在第一个Pandas loc例子中,我们将从索引为1的行中选择数据。
注意,在上面的例子中,第一行的名称为“1”。也就是说,这个“1”不是索引整数,而是该行的名字。
Pandas loc的行为方式与iloc相同,我们单个行作为series进行检索。与使用Pandas iloc一样,我们可以更改输出,以便以一个 dataframe来获取单个行。我们通过在一个列表中放入行名来做到这一点:
使用loc对行进行切片
在下一个代码例子中,我们将使用行名称来获取一个行切片。
我们还可以将一个索引列表传递给它,以选择所需的索引。
使用loc通过列名进行选择
与Pandas iloc不同,loc则进一步采用列名作为列参数。这意味着我们可以给它传递一个列名来从该列中选择数据。
在下一个loc例子中,我们将从' SASname '列中选择所有数据。
当然,另一个选项是在使用loc时将多个列名传入一个列表中。在下一个例子中,我们将从“SASname”和“longname”列中选择数据,其中行名是从1到5。
在Pandas中使用loc进行切片
在本节中,我们将会看到如何使用loc对一个Pandas dataframe进行切片。记住,“:”字符是在切片时使用的。与iloc一样,我们也可以进行切片,只不过这里我们可以使用列名和行名(如下面的例子所示)。
在下面的loc例子中,我们再次使用了第一个dataframe(即df1),对前5行切片,并获取从“Film”列到“EA1”列的所有列。
Pandas iloc 和条件
很多时候,我们想要通过使用布尔数组来索引一个Pandas dataframe。也就是说,我们可能希望根据某些条件来选择数据。当然,这很容易用Pandas loc来实现。我们只需要向.loc方法传递一个包含真/假值的数组或Seris。
例如,如果我们想要选择Study列中值为“flat”的所有行,我们将按照以下步骤来创建一个Pandas Series,其中的dataframe中的每一行都有一个真值,其中存在“flat”。
使用多条件Pandas iloc选择行
此外,有时我们可能希望基于多个条件进行选择。例如,如果我们想要选择Study列是“flat”并且neur列大于18的所有行,我们可以按下一个例子来做:
与前面一样,我们可以使用第二个参数从dataframe中选择特定的列。请记住,在使用Pandas loc时,列是通过名称被loc索引器引用的,我们可以使用一个单个字符串、一个列的列表或一个切片“:”操作。在下一个例子中,我们将选择从EA1到NA2的列:
使用 .loc设置dataframe中的值
在本loc和iloc教程的最后一节中,我们将学习如何使用loc对dataframe设置值。
对一个dataframe设置值是非常简单的,我们需要做的只是稍微更改一下语法,并且我们实际上可以在使用.loc 索引器选择和筛选的同一语句中来更新数据。这很方便,因为我们可以根据不同的条件来更新列中的值。
在最后一个loc例子中,我们将创建一个新列(NewCol),并在neur大于18的行中添加单词“BIG”:
结论
在这个Pandas iloc和loc教程中,我们学习了使用loc和iloc方法建立索引、选择数据和选取子集。更具体地说,我们已经了解了这些方法是如何工作的。当谈到loc时,我们已经学习了如何根据条件语句(例如,大于或等于)去选择数据,以及如何使用loc去设置值。
英文原文:https://www.marsja.se/how-to-use-iloc-and-loc-for-indexing-and-slicing-pandas-dataframes/
译者:测试
c++没有终结符的多行输入如何停止_如何使用iloc和loc 对Pandas Dataframe进行索引和切片...相关推荐
- 不知道输入何时停止_知道何时停止
不知道输入何时停止 In predictive analytics, it can be a tricky thing to know when to stop. 在预测分析中,知道何时停止可能是一件 ...
- pandas的iloc、loc、ix的使用(列切片及行切片)
loc:通过选取行(列)标签索引数据 iloc:通过选取行(列)位置编号索引数据 ix:既可以通过行(列)标签索引数据,也可以通过行(列)位置编号索引数据df是一个dataframe,列名为A B C ...
- python如何读取csv文件某几行某几列_扣丁学堂简述如何实现pandas读取csv文件指定的前几行...
扣丁学堂简述如何实现pandas读取csv文件指定的前几行 2018-08-01 14:16:55 1620浏览 今天扣丁学堂 用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要 ...
- C++ OJ 中多行数据输入(大小写转换、通过移位运算实现2的n次方、多组输入,每行输入数量不一样)
1. 多组输入,输出每行最大值 while(cin>>a>>b) 主要解决的是两个为一组的多组数据输入,当一次只输入一个数据时就用 while(cin>>a) 输入 ...
- 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
简介 在做Python开发时,安装需要的第三方库时,大多数人喜欢选择在命令行用pip进行安装. 然而有时敲入pip命令会提示'pip'不是内部或外部命令..如图: 解决办法 1.在python安装目录 ...
- java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...
设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为"XYZ",则抛出一个异常信息"This is a XYZ",如果从命令 ...
- webpack源码阅读——npm脚本运行webpack与命令行输入webpack的区别
原文地址:webpack源码阅读--npm脚本执行webpack与命令行输入webpack执行的区别 如有错误,欢迎指正! webpack是目前被大家广为使用的模块打包器.从命令行输入webpack或 ...
- 安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法
安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 参考文章: (1)安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 (2)https:// ...
- python获取输入数字_python获取从命令行输入数字的方法
本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numeri ...
最新文章
- hive lock命令的使用
- windows下利用IIS搭建web和ftp服务以及防火墙配置
- 编写自己的Arduino库
- go context之WithCancel的使用
- 跳出IT运维怪圈 看南方报业如何主动出击
- pod中mysql配置文件修改_通过configmap更新k8s里的mysql配置文件
- SpringCloud Hoxton版微服务-入门篇
- ajax请求成功后返回值如何赋值给js变量
- appium使用真机做安卓移动端自动化测试
- Admin.Admin/Login --- 后台项目中的管理员及登录模块
- unity 改变ui文字_如何在Unity中实现逐字打印UI中的Text文字
- java canvas画矩形,HTML5 编程之Canvas
- 探索App保活黑科技
- 芒果iOS开发之Swift教程01-Swift基础
- IT项目开发管理与绩效考核
- 基于Pytorch构建一个可训练的BNN
- 计算机u盘 硬盘无法读取,U盘在电脑上读取不出来怎么办?
- Error: The required parameter ‘channelID‘ is empty. Rerun the command with -C flag
- 国医中药,人参神秘而又独特的地位
- 【详细整理】广度优先算法
热门文章
- VM虚拟机中 localhost login_UTM 2.0 虚拟机来了,解决上网和无声音问题
- OpenCV中HoughLinesP( )检测直线函数返回的坐标的原点
- TypeError: 'numpy.int64' object is not iterable ,'int' object is not iterable
- 数字图像处理-1.图像获取
- PostgreSQL 常见操作
- 电路板上的插头怎么拔下来_空调插头一直不拔费电吗?实测一周竟然发现了真相!...
- map集合的常用方法和遍历
- 中音萨克斯指法表图_初学萨克斯一定要了解这6点基础知识
- python3多进程写时拷贝_python多进程实现复制文件
- 协议簇:Ethernet Address Resolution Protocol (ARP) 解析