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


    6 数据选择

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

    6.1 列选择

    6.1.1 选择某一列或某几列

    Excel

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

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

    在这里插入图片描述

    Python

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

    如:

    df = pd.DataFrame({
        "姓名": ["张三", "李四", "王五", "赵六"],
        "语文": [110, 92, 98, 121],
        "数学": [120, 130, 111, 90],
        "英语": [88, 91, 110, 113]
    })
    names=df["姓名"]
    print(type(names))
    # 
    print(names)
    """
    0    张三
    1    李四
    2    王五
    3    赵六
    Name: 姓名, dtype: object
    """
    grades=df[["语文","数学","英语"]]
    print(type(grades))
    # 
    print(grades)
    """
        语文   数学   英语
    0  110  120   88
    1   92  130   91
    2   98  111  110
    3  121   90  113
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    位置索引
    df.iloc[:,n]
    df.iloc[:,[n1,n2,···]]
    
    • 1
    • 2
    • ,前代表哪几行,,后代表哪几列
    • :代表所有行
    • 位置从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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

    Excel

    拖动选择即可

    在这里插入图片描述

    Python

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

    但位置索引较为简单。

    df.iloc[:,n1:n2]
    
    • 1
    • 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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6.2 行选择

    6.2.1 选择某一行或某几行

    Excel

    同列,Ctrl多选

    Python

    普通索引
    df.loc[行名]
    df.loc[[行名1,行名2,···]]
    
    • 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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    位置索引
    df.iloc[r]     # df.iloc[r,:]
    df.iloc[[r1,r2,···]]    # df.iloc[[r1,r2,···],:] 
    
    • 1
    • 2
    • 位置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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

    Excel

    同列,拖动即可

    Python

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

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

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

    如:

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

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

    Excel

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    Python

    df[条件]
    df[(条件1) 逻辑运算符 (条件2)]
    
    • 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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    6.3 区域选择

    Excel

    拖动选择或Ctrl多选

    在这里插入图片描述

    Python

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

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

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

    以下为常见的

    6.3.1 普通索引+普通索引

    df.loc[[行名1,行名2,···],[列名1,列名2,···]]
    
    • 1

    如:

    area1=df.loc[["张三","李四"],["数学","英语"]]
    print(area1)
    """
         数学  英语
    姓名         
    张三  120  88
    李四  130  91
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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)交汇区域
    
    • 1
    • 2

    如:

    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
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    6.3.3 布尔索引(行)+普通索引(列)

    df[条件索引][[列名1,列名2,···]]
    
    • 1
    • 实际上是对df[条件索引]返回的DataFrame对象再进行一次列的普通索引

    如:

    area4=df[df["语文"]>100][["数学","英语"]]
    print(area4)
    """
         数学   英语
    姓名          
    张三  120   88
    赵六   90  113
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    【iCloud】土耳其苹果礼品卡购买
    解决Adobe Premiere Pro CC 2018打开无反应,并出现.crash的文件问题
    jsp交通管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    网站、小程序常见布局样式记录
    使用Nacos bootstrap application 远程配置优先级
    Tlsr8258开发-BQB(DTM)测试
    Android的FragmentManager介绍以及它管理Fragment的流程
    Uniapp中使用uQRCode二维码跳转小程序页面
    MySQL执行计划分析
    Linux操作系统的发展
  • 原文地址:https://blog.csdn.net/ncu5509121083/article/details/126124250