pandas选择数据-【老鱼学pandas】
选择列
根据列名来选择某列的数据
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】的更多相关文章
- pandas合并merge-【老鱼学pandas】
本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...
- pandas画图-【老鱼学pandas】
本节主要讲述如何把pandas中的数据用图表的方式显示在屏幕上,有点类似在excel中显示图表. 安装matplotlib 为了能够显示图表,首先需要安装matplotlib库,安装方法如下: pip ...
- pandas基本介绍-【老鱼学pandas】
前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号 ...
- pandas处理丢失数据-【老鱼学pandas】
假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...
- pandas导入导出数据-【老鱼学pandas】
pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...
- pandas设置值-【老鱼学pandas】
本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import ...
- pandas合并数据集-【老鱼学pandas】
有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...
- tensorflow卷积神经网络-【老鱼学tensorflow】
前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...
- 二分类问题续 - 【老鱼学tensorflow2】
前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=51 ...
随机推荐
- javaWeb学习笔记——关于交叉连接-内连接-左外连接-右外连接的区别
废话不说:直接上图1 图1-1 table1表 图1-2 table2 图1-3 cross join 交叉连接 图1-4 显示内连接 图1-5 左外链接 图1-6 右外链接
- 高效实用的.NET开源项目
似乎...很久很久没有写博客了,一直都想写两篇,但是却没有时间写.感觉最近有很多事情需要处理,一直都是疲于奔命,一直到最近才变得有些时间学习和充电.最近没有事情都会看一些博客和开源项目,发现介绍开源项 ...
- 基于Redis位图实现系统用户登录统计
项目需求,试着写了一个简单登录统计,基本功能都实现了,日志数据量小.具体性能没有进行测试~ 记录下开发过程与代码,留着以后改进! 1. 需求 1. 实现记录用户哪天进行了登录,每天只记录是否登录过,重 ...
- win10 uwp clone
clone 可以用MemberwiseClone来复制一个类 但这个复制是浅复制,创建一个新的object然后复制值字段,对于引用就直接复制引用,不复制引用的本身,指向同样引用 如果要复制引用,可以使 ...
- eclipse环境下,java操作MySQL的简单演示
首先先通过power shell 进入MySQL 查看现在数据库的状态(博主是win10系统) 右键开始,选择Windows powershell ,输入MySQL -u用户名 -p密码 选择数据库( ...
- JS对象深度克隆
首先看一个例子: var student = { name:"yxz", age:25 } var newStudent = student; newStudent.sex = & ...
- MySQL存储过程/存储过程与自定义函数的区别
语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parame ...
- 上海2017QCon个人分享总结
有幸作为讲师受邀参加InfoQ在上海举办的QCon2017,不得不说,不论是从讲师还是听众的角度衡量,QCon进一步扩大了技术视野.虽然前端专题只有四场,但每一场分享都是目前的热门话题.并且Qcon的 ...
- Java这些冷知识你知道吗?
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9 ...
- 【转】 bio 与块设备驱动
原文地址: bio 与块设备驱动 系统中能够随机访问固定大小数据片(chunk)的设备被称作块设备,这些数据片就称作块.块设备文件都是以安装文件系统的方式使用,此也是块设备通常的访问方式.块 ...