机器学习常用包pandas篇(二)数据选择、删减、缺失值处理和可视化

news/2025/2/8 14:37:04/

目录

前言

1. 基于数字索引选择(iloc)

2. 基于标签名称选择(loc)

二、数据删减

1. 删除行/列(drop)

2. 数据去重(drop_duplicates)

3. 删除缺失值(dropna)

三、缺失值处理

1. 检测缺失值

2. 填充缺失值(fillna)

3. 插值填充(interpolate)

四、数据可视化

1. 直接绘图(DataFrame.plot)

五、总结


前言

Pandas读取数据后可对数据进行选择、删减、缺失值处理和可视化等一系列操作。


一、数据选择

1. 基于数字索引选择(iloc
  • 用途:通过行/列的位置(整数索引)选择数据。

  • 语法df.iloc[行选择, 列选择]

  • 常见操作

    • 选择行

      df.iloc[:3]            # 前3行(切片)
      df.iloc[[1, 3, 5]]     # 选择第2、4、6行(列表形式)
    • 选择列

      df.iloc[:, 1:4]        # 第2-4列(切片)
      df.iloc[:, [0, 2]]     # 第1、3列(列表形式)
    • 组合选择

      df.iloc[1:3, 0:2]      # 第2-3行,第1-2列
2. 基于标签名称选择(loc
  • 用途:通过行/列的标签(名称)选择数据。

  • 语法df.loc[行标签选择, 列标签选择]

  • 常见操作

    • 选择行

      df.loc[0:2]            # 标签0到2的行(包含末尾)
      df.loc[[0, 2, 4]]      # 标签0、2、4的行
    • 选择列

      df.loc[:, 'A':'C']     # 列A到C(包含末尾)
      df.loc[:, ['A', 'C']]  # 列A和C
    • 组合选择

      df.loc[[0, 2], 'Median Age':]  # 标签0、2的行,列从'Median Age'到最后

二、数据删减

1. 删除行/列(drop
  • 语法

    df.drop(labels=要删除的标签, axis=0/1, inplace=False)
  • 示例

    df.drop(labels=['Median Age', 'Total Males'], axis=1)  # 删除指定列
    df.drop(index=[0, 2], axis=0)                          # 删除指定行
2. 数据去重(drop_duplicates
  • 语法

    df.drop_duplicates(subset=None, keep='first', inplace=False)
  • 示例

    df.drop_duplicates()                   # 删除所有重复行
    df.drop_duplicates(subset=['A', 'B'])  # 基于列A、B去重
3. 删除缺失值(dropna
  • 语法

    df.dropna(axis=0/1, how='any'/'all', thresh=阈值)
  • 示例

    df.dropna()                     # 删除所有含缺失值的行
    df.dropna(axis=1, how='all')    # 删除全为缺失值的列

三、缺失值处理

1. 检测缺失值
  • 方法

    df.isna()   # 返回布尔矩阵,标记缺失值位置
    df.notna()  # 返回布尔矩阵,标记非缺失值位置
2. 填充缺失值(fillna
  • 常用方式

    • 标量填充

      df.fillna(0)  # 所有缺失值填充为0
    • 前向/后向填充

      df.fillna(method='pad')   # 用前一个值填充(前向填充)
      df.fillna(method='bfill') # 用后一个值填充(后向填充)
    • 统计值填充

      df.fillna(df.mean())      # 用列均值填充
      df.fillna(df.median())    # 用列中位数填充
3. 插值填充(interpolate
  • 用途:通过插值算法(如线性、多项式)填充缺失值。

  • 语法

    df.interpolate(method='linear', limit=连续填充次数)
  • 示例

    df = pd.DataFrame({'A': [1.1, 2.2, np.nan, 4.5, 5.7, 6.9]})
    df.interpolate()  # 线性插值填充
  • 常用插值方法

    • method='linear'(默认,线性插值)

    • method='quadratic'(二次插值)

    • method='pchip'(适用于累计分布数据,需安装 scipy


四、数据可视化

1. 直接绘图(DataFrame.plot
  • 语法

    df.plot(kind=图形类型, x=列名, y=列名, title=标题)
  • 常见图形类型

    df.plot(kind='line')    # 折线图(默认)
    df.plot(kind='bar')     # 柱状图
    df.plot(kind='hist')    # 直方图
    df.plot(kind='scatter', x='A', y='B')  # 散点图
  • 示例

    df_interpolate.plot(title='插值后数据趋势')  # 绘制折线图

五、总结

  1. 数据选择

    使用 iloc 按位置索引选择,loc 按标签选择。
  2. 数据删减

    删除行/列用 drop,去重用 drop_duplicates,删缺失值用 dropna
  3. 缺失值处理

    填充用 fillna 或 interpolate,优先选择插值方法还原数据趋势。
  4. 数据可视化

    直接调用 df.plot 快速预览数据分布。

http://www.ppmy.cn/news/1570338.html

相关文章

source 与 shell 之详解(Detailed Explanation of Source and Shell)

source 命令与 shell 变量 随着IC工具的升级迭代,不同项目使用到的 IC 工具版本可能会不一样。为保证 IC 工具版本和芯片项目的对应,需要使用 source 命令执行对应项目的环境变量设置脚本。那么,source 命令与一般的脚本执行命令&#xff0c…

每日Attention学习21——Cascade Multi-Receptive Fields

模块出处 [MICCAI 24] [link] TinyU-Net: Lighter Yet Better U-Net with Cascaded Multi-receptive Fields 模块名称 Cascade Multi-Receptive Fields (CMRF) 模块作用 轻量感受野块 模块结构 模块特点 起点使用PWConv(PointWise Convolution, 11卷积)压缩通道&#xff0c…

【C语言】数组名及其地址的理解与应用

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯数组名的本质1. 数组名实际上是一个指向第一个元素的指针2. 数组名与数组首元素地址的关系 💯数组名与指针算术操作1. 数组名的指针特性2. 数组名与数组整体…

四、GPIO中断实现按键功能

4.1 GPIO简介 输入输出(I/O)是一个非常重要的概念。I/O泛指所有类型的输入输出端口,包括单向的端口如逻辑门电路的输入输出管脚和双向的GPIO端口。而GPIO(General-Purpose Input/Output)则是一个常见的术语&#xff0c…

GlusterFS源码讲解:如何实现最终一致性

引言 在分布式文件系统中,由于网络延迟、节点故障或临时分区原因,很难保证写操作在所有节点上立即生效。为了解决这一问题,很多系统采用最终一致性模型:写操作可能一开始没有同步到所有节点,但经过一段时间后&#xff…

mobaxterm 无法ssh连接ubuntu

0.查看IP地址 BASH homename -I ip addr show 1. 确保安装了 openssh-server 首先,确保你已经安装了 openssh-server,这是提供 SSH 服务的关键包。 步骤: 打开终端并更新包列表: BASH sudo apt update 安装 openssh-serve…

FocusAny v0.6.0 MacOS和Linux安装优化,独立窗口显示优化

FocusAny 是一个专注高效的AI工具条,可以使用 Alt / Option空格 一键唤起,通过插件快速安装,可以扩展出非常多的功能。 安装使用 访问 https://focusany.com 下载 对应系统 安装包,一键安装即可。 目前支持 Windows、MacOS、Linu…

windows电脑-ubuntu,传输文件

FileZilla是一款免费的工具,是基于 FTP 协议进行文件互传的,在传输过程中我们的ubuntu是作为服务器, FileZilla 工具则是作为客户端。 1.ubuntu安装 FTP服务:sudo apt-get install vsftpd 2.检查 /etc/vsftpd.conf 配置文件&…