Python数据的选取和处理(python数据提取方法)
ztj100 2025-07-03 02:34 5 浏览 0 评论
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=['r1','r2','r3'],columns= ['c1','c2','c3'])
print(data)
c1 c2 c3
r1 1 2 3
r2 4 5 6
r3 7 8 9
#按列选取数据
a = data['c1']
print(a)
r1 1
r2 4
r3 7
b = data['c1']
print(b)
r1 1
r2 4
r3 7
c = data[['c1','c3']]
print(c)
c1 c3
r1 1 3
r2 4 6
r3 7 9
#按行选取数据
a = data[1:3] #选取第2-3行,序号从0开始
print(a)
c1 c2 c3
r2 4 5 6
r3 7 8 9
b = data.iloc[1:3]
print(b)
c1 c2 c3
r2 4 5 6
r3 7 8 9
c = data.iloc[-1]#选取单行,必须用iloc方法
print(c)
r3 7 8 9
d = data.loc[['r2','r3']]#根据行的名称来选择数据
print(d)
e = data.head()#用来选取前几行的数据
print(e)
c1 c2 c3
r1 1 2 3
r2 4 5 6
r3 7 8 9
#按区块选取数据
a = data[0:2][['c1','c3']]
print(a)
b = data.iloc[0:2][['c1','c3']]
print(b)
c = data.iloc[0]['c3']
print(c)
d = data.iloc[0:2,[0,2]]
print(d)
#数据的筛选
a = data[data['c1'] > 1]
print(a)
b = data[(data['c1'] > 1) & (data['c2'] == 5)]
print(b)
c = data[(data['c1'] > 1) | (data['c2'] == 5)]
print(c)
#数据的排序
a = data.sort_values(by= 'c2',ascending= False)
print(a)
b = b.sort_index()
print(b)
这段代码展示了 Pandas DataFrame 的数据选择、筛选和排序操作,下面是详细解释:
数据准备
python
运行
import pandas as pd
import numpy as np
解释一下上面这段代码的作用和工作原理:
data = pd.DataFrame(
np.arange(1, 10).reshape(3, 3), # 生成1~9的3×3矩阵
index=['r1', 'r2', 'r3'], # 行索引
columns=['c1', 'c2', 'c3'] # 列索引
)
数据结构:
plaintext
c1 c2 c3
r1 1 2 3
r2 4 5 6
r3 7 8 9
一、按列选取数据
1. 选取单列(返回 Series)
python
运行
a = data['c1'] # 选取 'c1' 列
结果:
plaintext
r1 1
r2 4
r3 7
Name: c1, dtype: int64
2. 选取多列(返回 DataFrame)
python
运行
c = data[['c1', 'c3']] # 选取 'c1' 和 'c3' 列
结果:
plaintext
c1 c3
r1 1 3
r2 4 6
r3 7 9
二、按行选取数据
1. 切片(通过索引位置)
python
运行
a = data[1:3] # 选取第2行和第3行(索引从0开始)
结果:
plaintext
c1 c2 c3
r2 4 5 6
r3 7 8 9
2. iloc(通过整数位置)
python
运行
b = data.iloc[1:3] # 同上
c = data.iloc[-1] # 选取最后一行(返回 Series)
c 的结果:
plaintext
c1 7
c2 8
c3 9
Name: r3, dtype: int64
3. loc(通过索引标签)
python
运行
d = data.loc[['r2', 'r3']] # 选取 'r2' 和 'r3' 行
结果:
plaintext
c1 c2 c3
r2 4 5 6
r3 7 8 9
4. head()(选取前 N 行)
python
运行
e = data.head() # 默认取前5行(本例只有3行,返回全量数据)
三、按区块选取数据
1. 组合切片(先选行,再选列)
python
运行
a = data[0:2][['c1', 'c3']] # 选前2行的 'c1' 和 'c3' 列
结果:
plaintext
c1 c3
r1 1 3
r2 4 6
2. iloc 组合(行和列同时切片)
python
运行
d = data.iloc[0:2, [0, 2]] # 同上,但更高效
3. 定位单个元素
python
运行
c = data.iloc[0]['c3'] # 选取第1行的 'c3' 列(值为3)
四、数据筛选
1. 单列条件
python
运行
a = data[data['c1'] > 1] # 筛选 'c1' 大于1的行
结果:
plaintext
c1 c2 c3
r2 4 5 6
r3 7 8 9
2. 多条件组合(逻辑与 &)
python
运行
b = data[(data['c1'] > 1) & (data['c2'] == 5)] # 筛选 'c1>1' 且 'c2=5' 的行
结果:
plaintext
c1 c2 c3
r2 4 5 6
3. 多条件组合(逻辑或 |)
python
运行
c = data[(data['c1'] > 1) | (data['c2'] == 5)] # 筛选 'c1>1' 或 'c2=5' 的行
结果:
plaintext
c1 c2 c3
r2 4 5 6
r3 7 8 9
五、数据排序
1. 按列值排序
python
运行
a = data.sort_values(by='c2', ascending=False) # 按 'c2' 列降序排序
结果:
plaintext
c1 c2 c3
r3 7 8 9
r2 4 5 6
r1 1 2 3
2. 按索引排序
python
运行
b = b.sort_index() # 按行索引升序排序(注:这里的b是前面筛选的结果)
核心知识点总结
数据选择:
列选择:df['col'] 或 df[['col1', 'col2']]
行选择:df[start:end]、df.iloc[]、df.loc[]
区块选择:组合行和列的选择器
筛选逻辑:
条件用括号包裹:(cond1) & (cond2)
逻辑运算符:&(与)、|(或)、~(非)
排序方法:
值排序:sort_values(by='col', ascending=False)
索引排序:sort_index()
相关推荐
- Java对象序列化与反序列化的那些事
-
Java对象序列化与反序列化的那些事在Java的世界里,对象序列化和反序列化就像一对孪生兄弟,它们共同构成了Java对象存储和传输的基础。如果你曾经尝试将对象保存到文件中,或者在网络中传输对象,那么你...
- 集合或数组转成String字符串(集合怎么转换成字符串)
-
1.将集合转成String字符串Strings="";for(inti=0;i<numList.size;i++){if(s==""){s=numL...
- java学习分享:Java截取(提取)子字符串(substring())
-
在String中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。1.substring(intbeginIndex)形...
- deepseek提示词:sql转c#代码示例。
-
SELECTRIGHT('0000'+CAST(DATEDIFF(DAY,'2024-01-01',GETDATE())ASVARCHAR(4)),4)...
- Java 21 新特性的实践,确实很丝滑!
-
1虚拟线程创建虚拟线程...
- 为什么Java中的String是不可变的(Immutable)
-
在Java中,String类型是用于表示字符串的类,而字符串则是字符序列,是Java编程中最常用的数据类型之一。String类是不可变的,这意味着一旦创建,字符串的值就不能改变,下面我们就来介绍一下为...
- Java中读取File文件内容转为String类型
-
@Java讲坛杨工开发中常常会碰到读取磁盘上的配置文件等内容,然后获取文件内容转字符串String类型,那么就需要编写一个API来实现这样的功能。首先准备一个测试需要的文件test.xml...
- 从Pandas快速切换到Polars :数据的ETL和查询
-
对于我们日常的数据清理、预处理和分析方面的大多数任务,Pandas已经绰绰有余。但是当数据量变得非常大时,它的性能开始下降。我们以前的两篇文章来测试Pandas1.5.3、polar和Pandas...
- Pandas高手养成记:10个鲜为人知的高效数据处理技巧
-
Pandas是Python中非常强大的数据分析库,提供了高效的数据结构和数据处理工具。以下是一些鲜为人知但极其有用的Pandas数据处理技巧,可以帮助你提高工作效率:使用.eval()执行行...
- 灵活筛选数据,pandas无需指定行列的筛选方法,步骤详解
-
pandas库可轻松地筛选出符合特定条件的数据,无需指定筛选的行和列。通过灵活运用pandas的筛选功能,我们能够高效、准确地获取到感兴趣的数据,本文将介绍以下几种方法,在不指定行列的情况下使用pan...
- 【Pandas】(4)基本操作(pandas的基本操作)
-
选择数据获取列单列获取要获取DataFrame的单个列,你可以使用列名以两种不同的方式:...
- 「Python数据分析」Pandas基础,用iloc函数按行列位置选择数据
-
前面我们学过,使用loc函数,通过数据标签,也就是行标签和列标签来选择数据。行和列的标签,是在数据获取,或者是生成的时候,就已经定义好的。行数据标签,也就是唯一标识数据,不重复的一列,相当于数据库中的...
- Python数据的选取和处理(python数据提取方法)
-
importpandasaspdimportnumpyasnpdata=pd.DataFrame(np.arange(1,10).reshape(3,3),index=['...
- 天秀!一张图就能彻底搞定Pandas(10分钟搞定pandas)
-
作者:刘早起公众号:早起Python大家好,在三月初,我曾给大家分享过一份Matplotlib绘图小抄,详见收下这份来自GitHub的神器,一图搞定Matplotlib!昨天在面向GitHub编程时,...
- Python学不会来打我(92)python代码调试知识总结(五)属性问题
-
Attributeerror是属性问题,这个问题的报错也经常会出现,今天我们就分享一下:Python中引发AttributeError的常见原因及对应解决方案的详细分析。...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)