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

目录

前言

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 快速预览数据分布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值