文章目录

1.条件筛选

1.1 单条件筛选

1.2 多条件筛选

1.3 排除特定行

2. 索引筛选

2.1 切片操作

2.2 loc函数

2.3 iloc

2.4 ix函数

2.5 at函数

2.6 iat函数

众所周知

pandas的

DataFrame数据结构提供了功能强大的数据操作功能,例如运算,筛选,统计等。

今天我们就来谈一谈其强大的数据筛选功能,主要包括两大类,

按照条件筛选和

按照索引筛选。可以

对行进行筛选,也可以

按照列进行筛选。

import numpy as np

import pandas as pd

df = pd.DataFrame({"a": list(range(1,10,1)),"b": list(range(2,11,1)),"c": list(range(3,12,1))})

df

a

b

c

0

1

2

3

1

2

3

4

2

3

4

5

3

4

5

6

4

5

6

7

5

6

7

8

6

7

8

9

7

8

9

10

8

9

10

11

1.条件筛选

1.1 单条件筛选

如果选取a列的取值大于3的记录可以这么写

df[df['a']>3]

a

b

c

3

4

5

6

4

5

6

7

5

6

7

8

6

7

8

9

7

8

9

10

8

9

10

11

如果想筛选a列的取值大于3的记录,但是只显示满足条件的b,c列的值可以这么写

df[['b','c']][df['a']>3]

b

c

3

5

6

4

6

7

5

7

8

6

8

9

7

9

10

8

10

11

使用isin函数根据特定值筛选记录。筛选a值等于3或者5的记录

df[df.a.isin([3, 5])]

a

b

c

2

3

4

5

4

5

6

7

1.2 多条件筛选

可以使用&(并)与|(或)操作符或者特定的函数实现多条件筛选

使用&筛选a列的取值大于3,b列的取值大于6的记录

df[(df['a'] > 3) & (df['b'] > 6)]

a

b

c

5

6

7

8

6

7

8

9

7

8

9

10

8

9

10

11

使用numpy的logical_and函数完成同样的功能

df[np.logical_and(df['a']> 3,df['b']>6)]

a

b

c

5

6

7

8

6

7

8

9

7

8

9

10

8

9

10

11

1.3 排除特定行

筛选特定行做起来很方便,可以使用特定的函数完成,但是排除含特定值的行就需要做一些变通了。

例如,我们选出a列的值不等于3或者5的记录。基本的做法是将a列选择出来,把值3和5剔除,再使用isin函数。

ex_list = list(df['a'])

ex_list.remove(3)

ex_list.remove(5)

ex_list

[1, 2, 4, 6, 7, 8, 9]

df[df.a.isin(ex_list)]

a

b

c

0

1

2

3

1

2

3

4

3

4

5

6

5

6

7

8

6

7

8

9

7

8

9

10

8

9

10

11

2. 索引筛选

2.1 切片操作

# 使用切片操作选择特定的行

df[1:4]

a

b

c

1

2

3

4

2

3

4

5

3

4

5

6

# 传入列名选择特定的列

df[['a','c']]

a

c

0

1

3

1

2

4

2

3

5

3

4

6

4

5

7

5

6

8

6

7

9

7

8

10

8

9

11

2.2 loc函数

当每列已有column name时,用 df ['a']就能选取出一整列数据。如果你知道column names和index(这里df的index没有指定,是默认生成的下标),且两者都很好输入,可以选择.loc同时进行行列选择。

df.loc[0,'c']

3

df.loc[1:4,['a','c']]

a

c

1

2

4

2

3

5

3

4

6

4

5

7

df.loc[[1,3,5],['a','c']]

a

c

1

2

4

3

4

6

5

6

8

2.3 iloc

如果column name太长,输入不方便,或者index是一列时间序列,更不好输入,那就可以选择 .iloc了,该方法接受列名的index,iloc使得我们可以对column使用slice(切片)的方法对数据进行选取。这边的 i 我觉得代表index,比较好记点。

df.iloc[0,2]

3

df.iloc[1:4,[0,2]] # .iloc方法里面区间是前闭后开? .loc方法里面是闭区间?

a

c

1

2

4

2

3

5

3

4

6

df.iloc[[1,3,5],[0,2]]

a

c

1

2

4

3

4

6

5

6

8

df.iloc[[1,3,5],0:2]

a

b

1

2

3

3

4

5

5

6

7

2.4 ix函数

ix的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc和iloc的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称。

df.ix[1:3,['a','b']]

e:\anaconda3.5\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning:

.ix is deprecated. Please use

.loc for label based indexing or

.iloc for positional indexing

See the documentation here:

http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated

"""Entry point for launching an IPython kernel.

a

b

1

2

3

2

3

4

3

4

5

df.ix[[1,3,5],['a','b']]

a

b

1

2

3

3

4

5

5

6

7

df.ix[[1,3,5],[0,2]]

a

c

1

2

4

3

4

6

5

6

8

2.5 at函数

根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名

df.at[3,'a']

4

2.6 iat函数

与at的功能相同,只使用索引参数。

df.iat[3,0]

4

df.iat[3,'a']

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in ----> 1 df.iat[3,'a']

e:\anaconda3.5\lib\site-packages\pandas\core\indexing.py in __getitem__(self, key)

1783 raise ValueError('Invalid call for scalar access (getting)!')

1784

-> 1785 key = self._convert_key(key)

1786 return self.obj.get_value(*key, takeable=self._takeable)

1787

e:\anaconda3.5\lib\site-packages\pandas\core\indexing.py in _convert_key(self, key, is_setter)

1852 for a, i in zip(self.obj.axes, key):

1853 if not is_integer(i):

-> 1854 raise ValueError("iAt based indexing can only have integer "

1855 "indexers")

1856 return key

ValueError: iAt based indexing can only have integer indexers

python iloc iat_python数据预处理_DataFrame数据筛选loc,iloc,ix,at,iat相关推荐

  1. 【Python实战】数据预处理(数据清理、集成、变换、归约)

    [Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...

  2. pandas数据预处理(字段筛选、query函数进行数据筛选、缺失值删除)、seaborn可视化分面图(facet)、seaborn使用Catplot可视化分面箱图(Faceted Boxplot)

    pandas数据预处理(字段筛选.query函数进行数据筛选.缺失值删除).seaborn可视化分面图(facet).seaborn使用Catplot可视化分面箱图(Faceted Boxplot) ...

  3. Python数据分析中的数据预处理:数据标准化

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于 ...

  4. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  5. 机器学习项目中的数据预处理与数据整理之比较

    要点 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%. 市场上有各种用于数据清洗和特征工程的编程语言.框架和工具.它们之间的功能有重叠,也各有权衡. 数据整理是数据预处理的 ...

  6. 数据预处理Part4——数据离散化

    文章目录 离散化,对数据做逻辑分层 1. 什么是数据离散化? 2. 为什么要将数据离散化 3. 如何将数据离散化? 3.1 时间数据离散化 3.2 多值离散数据离散化 3.3 连续数据离散化 3.4 ...

  7. 数据预处理Part2——数据标准化

    文章目录 数据标准化 1. 实现归一化的Max-Min 2. 实现中心化和正态分布的Z-Score 3. 用于稀疏数据的MaxAbs 4. 针对离群点的RobustScaler 5. 标准化后数据可视 ...

  8. Pandas数据预处理与数据重塑案例

    Pandas数据预处理与数据重塑案例 前言   预处理是数据分析中不可缺少的一部分,我们日常得到的数据多半是规整的,只有得到想要的相应格式的数据,才能进行后续的探索性分析和建模.以下是我在一个小的项目 ...

  9. PyTorch源码解析--torchvision.transforms(数据预处理、数据增强)

    PyTorch框架中有一个很常用的包:torchvision torchvision主要由3个子包构成:torchvision.datasets.torchvision.models.torchvis ...

  10. 数据预处理Part9——数据降维

    文章目录 1. 什么是数据降维? 2. 为什么要进行数据降维? 3. 降维是如何实现的? 4. sklearn中的降维算法 4.1 主成分分析PCA 4.2 因子分析FA 4.3 独立成分分析ICA ...

最新文章

  1. python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...
  2. centos 安装 erlang
  3. 【知识星球】这几年人脸都有哪些有意思的数据集?
  4. 为员工长工资。从最低工资调起每人长10%,请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。
  5. Windows下使用Caffe-Resnet
  6. .Net单元测试方法
  7. Cake -- ACM解决方法
  8. python语音开发库-各种 Python 库/模块/工具
  9. 调研报告:原型图出稿
  10. 输入阻抗、输出阻抗与阻抗匹配
  11. makefile碰到问题总结
  12. ctfshow 网络迷踪-初窥门径
  13. c++随笔-删除文件
  14. S3C2440 SDRAM内存驱动
  15. 决不放弃--实现人生的目标
  16. 用Hadoop构建电影推荐系统
  17. 迅捷OCR文字识别软件的功能介绍
  18. 【树莓派基础小实验笔记】1. 点亮LED二极管
  19. UILabel的使用
  20. 那些拿到60K Offer的AI程序员,后来都怎么样了?

热门文章

  1. 三分钟了解云存储网关 使用场景
  2. 【路径规划】基于matlab粒子群和遗传算法求解机器人栅格地图避障路径规划问题【含Matlab源码 202期】
  3. 【图像加密】基于matlab Logistic混沌+Arnold置乱图像加密解密【含Matlab源码 1281期】
  4. 【图像去噪】基于matlab高通+低通+带通+方向滤波器图像滤波【含Matlab源码 1209期】
  5. 【指纹识别】基于matlab GUI指纹打卡系统【含Matlab源码 867期】
  6. 【图像融合】基于matlab GUI简单+拉普拉斯金字塔算法图像融合【含Matlab源码 780期】
  7. 【语音识别】基于matlab高斯混合模型(GMM)说话人识别【含Matlab源码 574期】
  8. 【表盘识别】基于matlab GUI二值化指针式表盘识别【含Matlab源码 275期】
  9. 随笔记——Apache
  10. linux终端输出图形_Linux进程关系