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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐