《对比Excel,轻松学习Python数据分析》读书笔记------数据选择

6 数据选择

在进行单次分析前,我们要选择好研究的数据对象。如某列,某行,某个数据等…

6.1 列选择

6.1.1 选择某一列或某几列

Excel

选择某一列——>直接选中某一列

选择某几列——>选中一列,摁住Ctrl不放,再选其他列

在这里插入图片描述

Python
普通索引
df[列名]
df[[列名1,列名2,···]]
  • 选中单列,返回Series对象
  • 选中多列,返回DataFrame对象

如:

df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五", "赵六"],
    "语文": [110, 92, 98, 121],
    "数学": [120, 130, 111, 90],
    "英语": [88, 91, 110, 113]
})
names=df["姓名"]
print(type(names))
# <class 'pandas.core.series.Series'>
print(names)
"""
0    张三
1    李四
2    王五
3    赵六
Name: 姓名, dtype: object
"""
grades=df[["语文","数学","英语"]]
print(type(grades))
# <class 'pandas.core.frame.DataFrame'>
print(grades)
"""
    语文   数学   英语
0  110  120   88
1   92  130   91
2   98  111  110
3  121   90  113
"""
位置索引
df.iloc[:,n]
df.iloc[:,[n1,n2,···]]
  • ,前代表哪几行,,后代表哪几列
  • :代表所有行
  • 位置从0开始计数

如:

names=df.iloc[:,0]
print(names)
"""
0    张三
1    李四
2    王五
3    赵六
Name: 姓名, dtype: object
"""

grades=df.iloc[:,[1,2,3]]
print(grades)
"""
    语文   数学   英语
0  110  120   88
1   92  130   91
2   98  111  110
3  121   90  113
"""

6.1.2 选择连续的某几列(切片索引)

Excel

拖动选择即可

在这里插入图片描述

Python

同样有普通索引和位置索引两种方式。

但位置索引较为简单。

df.iloc[:,n1:n2]
  • n1:n2代表选中第n1列到第n2列(从0计数,包含n1,不包含n2)
  • 这种区间的形式称为切片索引

如:

grades=df.iloc[:,1:4]
print(grades)
"""
    语文   数学   英语
0  110  120   88
1   92  130   91
2   98  111  110
3  121   90  113
"""

6.2 行选择

6.2.1 选择某一行或某几行

Excel

同列,Ctrl多选

Python
普通索引
df.loc[行名]
df.loc[[行名1,行名2,···]]
  • 选中单行,返回Series对象
  • 选中多行,返回DataFrame对象

如:

df.set_index("姓名",inplace=True)   # 设置"姓名"列为行索引

student1=df.loc["张三"]
print(student1)
"""
语文    110
数学    120
英语     88
Name: 张三, dtype: int64
"""

students=df.loc[["李四","王五"]]
print(students)
"""
    语文   数学   英语
姓名              
李四  92  130   91
王五  98  111  110
"""
位置索引
df.iloc[r]     # df.iloc[r,:]
df.iloc[[r1,r2,···]]    # df.iloc[[r1,r2,···],:] 
  • 位置r从0开始计数

如:

student1=df.iloc[0]
print(student1)
"""
语文    110
数学    120
英语     88
Name: 张三, dtype: int64
"""

students=df.iloc[[1,2]]
print(students)
"""
    语文   数学   英语
姓名              
李四  92  130   91
王五  98  111  110
"""

6.2.2 选择连续的几行(切片索引)

Excel

同列,拖动即可

Python

同样有普通索引和位置索引两种方式。

但位置索引较为简单(切片索引)。

df.iloc[r1:r2]   # df.iloc[r1:r2,:]
  • r1:r2代表选中第r1行到第r2行(从0计数,包含r1,不包含r2)

如:

students=df.iloc[1:4]
print(students)
"""
     语文   数学   英语
姓名               
李四   92  130   91
王五   98  111  110
赵六  121   90  113
"""

6.2.3 筛选满足条件的行(布尔索引)

Excel

“数据”>“排序和筛选”>“筛选”

在这里插入图片描述

点击某列的筛选图标>“数字筛选”,选择对应条件

在这里插入图片描述

可以进行逻辑运算"与",“或”

Python
df[条件]
df[(条件1) 逻辑运算符 (条件2)]
  • 逻辑运算符有&(与),|(或),~(非)

如:

result1=df[df["语文"]>100]  # 语文成绩大于100
print(result1)
"""
     语文   数学   英语
姓名               
张三  110  120   88
赵六  121   90  113
"""

result2=df[(df["语文"]>90) & (df["数学"]>90) & df["英语"]>90]   #三门成绩都大于90
print(result2)
"""
    语文   数学   英语
姓名              
李四  92  130   91
王五  98  111  110
"""

6.3 区域选择

Excel

拖动选择或Ctrl多选

在这里插入图片描述

Python

区域选择,就是选定行和列,取交汇区域。

可以直接行列索引一起进行。也可以先行索引得到一个新的对象,再对新的对象进行列索引。

普通索引,位置索引(包括切片索引),布尔索引(一般用于行)可以自行组合

以下为常见的

6.3.1 普通索引+普通索引
df.loc[[行名1,行名2,···],[列名1,列名2,···]]

如:

area1=df.loc[["张三","李四"],["数学","英语"]]
print(area1)
"""
     数学  英语
姓名         
张三  120  88
李四  130  91
"""
6.3.2 位置索引+位置索引
df.iloc[[r1,r2,···],[n1,n2,···]]  # 第r1,r2,···行和第n1,n2···列交汇区域
df.iloc[r1:r2,n1:n2]   #第r1行到r2行(包含r1,不包含r2)和第n1列到n2列(包含n1,不包含n2)交汇区域

如:

area2=df.iloc[[0,2,3],[0,2]]
print(area2)
"""
     语文   英语
姓名          
张三  110   88
王五   98  110
赵六  121  113
"""

area3=df.iloc[1:3,0:3]
print(area3)
"""
    语文   数学   英语
姓名              
李四  92  130   91
王五  98  111  110
"""
6.3.3 布尔索引(行)+普通索引(列)
df[条件索引][[列名1,列名2,···]]
  • 实际上是对df[条件索引]返回的DataFrame对象再进行一次列的普通索引

如:

area4=df[df["语文"]>100][["数学","英语"]]
print(area4)
"""
     数学   英语
姓名          
张三  120   88
赵六   90  113
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子希卡利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值