选择列

根据列名来选择某列的数据

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data)
# 选择A列数据
print("A列数据:")
print(data["A"])

输出结果:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
A列数据:
2017-01-08 0
2017-01-09 4
2017-01-10 8
2017-01-11 12
2017-01-12 16
2017-01-13 20
Freq: D, Name: A, dtype: int32

也可以用点符号来进行:

print(data.A)

上面的功能跟data["A"]一样。

选择某几行数据

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择0至3行的数据:")
print(data[0:3])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择0至3行的数据:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11

也可以根据索引号范围来选择某几行的数据。

比如,如下的例子中我们就选择出2017-01-10到2017-01-12的数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("按照索引选择数据:")
print(data["2017-01-10":"2017-01-12"])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
按照索引选择数据:
A B C D
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19

使用loc进行选择

使用loc选择某几行的数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("按照索引选择数据:")
print(data.loc["2017-01-10":"2017-01-12"])

输出:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
按照索引选择数据:
A B C D
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19

也可以按照列进行选择数据,比如,我们想要选择其中B和C列的数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择某两列的数据:")
print(data.loc[:, ["B", "C"]])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择某两列的数据:
B C
2017-01-08 1 2
2017-01-09 5 6
2017-01-10 9 10
2017-01-11 13 14
2017-01-12 17 18
2017-01-13 21 22

如果只想选择某几行中某几列的数据,可以对上面的例子进行一下稍微的修改就能实现:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择某几行某几列的数据:")
print(data.loc["2017-01-09":"2017-01-12", ["B", "C"]])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择某几行某几列的数据:
B C
2017-01-09 5 6
2017-01-10 9 10
2017-01-11 13 14
2017-01-12 17 18

根据位置索引选择数据

位置索引的方法为iloc,例如,选择第3行第2列的数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择第3行第2列的数据:")
print(data.iloc[3, 1])

输出:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择第3行第2位的数据:
13

当然,我们也可以在iloc中使用切片,比如,我想选择出从第3行之后的第2列数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择第3行之后第2列的数据:")
print(data.iloc[3:, 1])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择第3行之后第2列的数据:
2017-01-11 13
2017-01-12 17
2017-01-13 21
Freq: D, Name: B, dtype: int32

我们也可以单独地选择某几行的数据,例如:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择第1,3,5行第1到第3列的数据:")
print(data.iloc[[1, 3, 5], 1:3])
data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择第3行之后第2列的数据:
B C
2017-01-09 5 6
2017-01-11 13 14
2017-01-13 21 22

标签和位置混合筛选

比如行用数字来筛选,而列用标签来进行筛选,例如:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("选择第1,3,5行第1到第3列的数据:")
print(data.ix[[1, 3, 5], ["A", "C"]])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择第1,3,5行第1到第3列的数据:
A C
2017-01-09 4 6
2017-01-11 12 14
2017-01-13 20 22

根据某列中的数值进行筛选

类似于SQL中where column < xxx这种类型的选择。

例如,选择出A列小于8的数据:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("根据某列中的数值进行筛选:")
print(data[data.A < 8])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
选择根据某列中的数值进行筛选:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7

如果想要进行联合索引,比如where A<8 and B < 5,则:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"])
print("data:")
print(data) print("根据某列中的数值进行筛选:")
data = data[data.A < 8]
print(data[data.B < 5])

输出为:

data:
A B C D
2017-01-08 0 1 2 3
2017-01-09 4 5 6 7
2017-01-10 8 9 10 11
2017-01-11 12 13 14 15
2017-01-12 16 17 18 19
2017-01-13 20 21 22 23
根据某列中的数值进行筛选:
A B C D
2017-01-08 0 1 2 3

pandas选择数据-【老鱼学pandas】的更多相关文章

  1. pandas合并merge-【老鱼学pandas】

    本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...

  2. pandas画图-【老鱼学pandas】

    本节主要讲述如何把pandas中的数据用图表的方式显示在屏幕上,有点类似在excel中显示图表. 安装matplotlib 为了能够显示图表,首先需要安装matplotlib库,安装方法如下: pip ...

  3. pandas基本介绍-【老鱼学pandas】

    前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号 ...

  4. pandas处理丢失数据-【老鱼学pandas】

    假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...

  5. pandas导入导出数据-【老鱼学pandas】

    pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...

  6. pandas设置值-【老鱼学pandas】

    本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import ...

  7. pandas合并数据集-【老鱼学pandas】

    有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...

  8. tensorflow卷积神经网络-【老鱼学tensorflow】

    前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...

  9. 二分类问题续 - 【老鱼学tensorflow2】

    前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=51 ...

随机推荐

  1. 使用微软URLRewriter.dll的url实现任意后缀名重写

    <?xml version="1.0"?> <!--先引用URLRewriter.dll,放置于Bin目录--> <configuration> ...

  2. netfilter/iptables和firewalld的关系

    1.netfilter 是linux 内核模块,其中包含了大量的内核规则,而要想对这些内核规则进行操作,就需要用户态的工具. iptables和firewalld就是一个用户态的工具. 2.iptab ...

  3. ASP.NET没有魔法——ASP.NET MVC是如何运行的?它的生命周期是什么?

    前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如 ...

  4. C#类的学习

    ①类的定义是以关键字 class 开始,后跟类的名称.类的主体,包含在一对花括号内.下面是类定义的一般形式: 类的修饰符 class 类名 :继承的类{ //类的成员 } 请注意: 如果要访问类的成员 ...

  5. visual Studio 无法调试,提示程序跟踪已退出

    今天在打码出现了vs无法调试,我在网上查了很久没有发现一个方法. vs点击启动时,出现了一下提示 程序"[12648] *.vshost.exe: 程序跟踪"已退出,返回值为 0 ...

  6. win10 uwp 修改Pivot Header 颜色

    我们在xaml创建一个Pivot <Pivot Grid.Row="1"> <PivotItem Header="lindexi">&l ...

  7. Python并发编程__多进程

    Python并发编程_多进程 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大 ...

  8. 如何搭建ftp的yum源

                ftp的yum的搭建步骤 第一步:安装vsftpd程序包(系统已经安装) [root@station40 ~]# rpm -qa |grep vsftpd vsftpd-2.2 ...

  9. SQL Server Alwayson概念总结

    一.alwayson概念 “可用性组” 针对一组离散的用户数据库(称为“可用性数据库” ,它们共同实现故障转移)支持故障转移环境. 一个可用性组支持一组主数据库以及一至八组对应的辅助数据库(包括一个主 ...

  10. Mongodb常用的性能监控命令

    1.显示服务器状态:db.serverStatus()      2.mongodb可以通过profile来监控数据,进行优化. 查看当前是否开启profile功能:db.getProfilingLe ...