程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python数据的选取和处理(python数据提取方法)

hfteth 2025-07-09 12:24:05 技术文章 2 ℃
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()

Tags:

最近发表
标签列表