Pandas的iloc和loc的区别
pandas以类似字典的方式来获取某一列的值,比如df[‘A’],这会得到df的A列。如果我们对某一行感兴趣呢?这个时候有两种方法,一种是iloc方法,另一种方法是loc方法。loc是指location的意思,iloc中的i是指integer。这两者的区别如下:loc:works on labels in the index.iloc:works on the positions in the i
pandas以类似字典的方式来获取某一列的值,比如df[‘A’],这会得到df的A列。如果我们对某一行感兴趣呢?这个时候有两种方法,一种是iloc方法,另一种方法是loc方法。loc是指location的意思,iloc中的i是指integer。这两者的区别如下:
loc:works on labels in the index.
iloc:works on the positions in the index (so it only takes integers).
也就是说loc是根据index来索引,比如下边的df定义了一个index,那么loc就根据这个index来索引对应的行。iloc并不是根据index来索引,而是根据行号来索引,行号从0开始,逐次加1。
一、数据集描述
西瓜书2.0数据集
| 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
| 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
| 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
| 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
| 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
| 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
| 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 是 |
| 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 是 |
| 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 是 |
| 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
| 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 否 |
| 浅白 | 硬挺 | 清脆 | 模糊 | 平坦 | 硬滑 | 否 |
| 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 否 |
| 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 否 |
| 浅白 | 稍蜷 | 沉闷 | 稍糊 | 凹陷 | 硬滑 | 否 |
| 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 否 |
| 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 否 |
| 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
二、Pandas数据分析
读取数据
import pandas as pd
dataSet1 = pd.read_csv('E:/data/xiguashu/watermelon2.0.csv', encoding='gbk')
dataSet1.values
array([['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '是'],
['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '是'],
['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', '是'],
['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', '否'],
['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '否'],
['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', '否'],
['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', '否'],
['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '否'],
['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '否'],
['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '否'],
['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '否'],
['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', '否']], dtype=object)
读取前5行
dataSet1.head()

获取行和列
dataSet1.shape
(17, 7)
获取列名
dataSet1.columns
Index(['色泽', '根蒂', '敲声', '纹理', '脐部', '触感', '好瓜'], dtype='object')
获取每列的dtype
dataSet1.dtypes
色泽 object 根蒂 object 敲声 object 纹理 object 脐部 object 触感 object 好瓜 object dtype: object
获取第一列名称
dataSet1.columns.values
array(['色泽', '根蒂', '敲声', '纹理', '脐部', '触感', '好瓜'], dtype=object)
获取更多数据信息
dataSet1.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 17 entries, 0 to 16 Data columns (total 7 columns): 色泽 17 non-null object 根蒂 17 non-null object 敲声 17 non-null object 纹理 17 non-null object 脐部 17 non-null object 触感 17 non-null object 好瓜 17 non-null object dtypes: object(7) memory usage: 1.0+ KB
三、loc和iloc对比
loc通过索引标签获取行子集
dataSet1.loc[1]
色泽 乌黑 根蒂 蜷缩 敲声 沉闷 纹理 清晰 脐部 凹陷 触感 硬滑 好瓜 是 Name: 1, dtype: object
iloc通过行号获取行
dataSet1.iloc[1]
色泽 乌黑 根蒂 蜷缩 敲声 沉闷 纹理 清晰 脐部 凹陷 触感 硬滑 好瓜 是 Name: 1, dtype: object
虽然结果看是一样,但是其实有本质的区别,一个按照索引标签,一个按照行好获取行信息
而且通过iloc[-1]可以获取最后一列信息,而loc不可以
dataSet1.iloc[-1]
色泽 青绿 根蒂 蜷缩 敲声 沉闷 纹理 稍糊 脐部 稍凹 触感 硬滑 好瓜 否 Name: 16, dtype: object
更多推荐


所有评论(0)