当前位置: 首页 > news >正文

数据分析处理库-Pandas

1.1 Pandas概述

  • 核心概念

    • Pandas 是基于 NumPy 的数据分析库,核心数据结构:Series(一维)和 DataFrame(二维)。

    • 应用场景:数据清洗、转换、统计分析、时间序列处理。

  • 特点

    • 支持异构数据、缺失值处理、灵活的数据对齐。


1.2 Pandas基本操作

  • 数据读写

    df = pd.read_csv('data.csv')       # 读取 CSV
    df.to_excel('output.xlsx')        # 写入 Excel
  • 数据查看

    df.head(5)      # 前5行
    df.info()       # 数据结构
    df.describe()   # 统计摘要
  • 数据选取

    df['column']    # 单列
    df[['col1', 'col2']]  # 多列

1.3 Pandas索引

  • 索引类型

    • 行索引:df.index(默认 RangeIndex)

    • 列索引:df.columns

  • 设置索引

    df.set_index('date', inplace=True)  # 指定列为索引
    df.reset_index()                    # 重置索引
  • 多层索引(MultiIndex):

    df = df.set_index(['year', 'month'])  # 分层索引

1.4 groupby操作

  • 基础分组聚合

    df.groupby('category')['price'].mean()  # 按类别分组计算均价
  • 多级分组

    df.groupby(['year', 'month']).sum()
  • 自定义聚合函数

    def range_agg(x):
        return x.max() - x.min()
    df.groupby('group').agg(range_agg)

1.5-1.7 数值运算与对象操作

  • 数值运算

    df['col'].sum() / df['col'].cumsum()  # 累加和
    df.apply(np.sqrt)                     # 应用函数
  • 字符串操作(需转换为 str 类型):

    df['name'].str.upper()                # 转大写
    df['email'].str.contains('@gmail')    # 匹配子串
  • 对象类型处理

    df['col'].astype('category')          # 转换为分类类型

1.8 merge操作

  • 表连接

    pd.merge(left, right, on='key', how='inner')  # 内连接

  • 参数详解

    • howleftrightouterinner

    • suffixes: 解决列名冲突(如 _x_y


1.9 显示设置

  • 调整显示选项

    pd.set_option('display.max_rows', 100)   # 最多显示100行
    pd.set_option('display.float_format', '{:.2f}'.format)  # 浮点数格式

1.10 数据透视表

  • 快速汇总

    pd.pivot_table(df, values='sales', index='region', columns='year', aggfunc=np.sum)
  • 多层透视

    pd.pivot_table(df, index=['region', 'year'], values='sales', aggfunc=[np.mean, np.sum])

1.11-1.12 时间操作

  • 时间解析

    df['date'] = pd.to_datetime(df['date'])  # 转为时间类型
    df['year'] = df['date'].dt.year         # 提取年份
  • 时间序列重采样

    df.resample('M').mean()                 # 按月重采样
    1.13-1.14 Pandas常用操作
  • 去重与排序

    df.drop_duplicates(subset='col')        # 去重
    df.sort_values(by='col', ascending=False)  # 排序
  • 缺失值处理

    df.dropna()                             # 删除缺失值
    df.fillna(method='ffill')               # 前向填充

1.15 Groupby操作延伸

  • 分组后过滤

    df.groupby('group').filter(lambda x: x['value'].mean() > 10)  # 筛选组
  • 分组应用自定义函数

    def normalize(x):
        return (x - x.mean()) / x.std()
    df.groupby('group').apply(normalize)

1.16 字符串操作

  • 正则匹配

    df['text'].str.extract(r'(\d+)')        # 提取数字
    df['text'].str.replace(r'\d+', 'NUM')   # 替换数字
    1.17 索引进阶
  • 条件筛选

    df.query('age > 30 & salary > 5000')    # 查询语法
    df.loc[df['age'] > 30, 'name']          # 标签定位
    索引优化:

        

df = df.sort_index()                    # 索引排序提升查询速度

1.18 Pandas绘图操作

  • 集成 Matplotlib

    df.plot(x='date', y='price', kind='line')  # 折线图
    df['sales'].plot.hist(bins=20)           # 直方图

1.19 大数据处理技巧

  • 分块读取

    chunk_iter = pd.read_csv('large.csv', chunksize=10000)  # 分块读取
    for chunk in chunk_iter:
        process(chunk)
  • 内存优化

    df = df.astype({'col1': 'int32', 'col2': 'category'})  # 降低内存占用
  • 并行处理

    import swifter
    df['new_col'] = df['col'].swifter.apply(lambda x: x*2)  # 利用多核加速
    总结
  • 核心数据结构Series 和 DataFrame 是 Pandas 的基石。

  • 数据操作四要素索引分组合并清洗

  • 性能优化:类型转换、分块处理、并行计算。

  • 实战场景:金融数据分析、日志处理、时间序列预测。

相关文章:

  • 2.1.项目管理前言
  • 除了setup的表达方法,vue3还有什么表达方法
  • MySQL 处理重复数据:保留一条与两条的实现方案
  • 鸿蒙harmonyOS:笔记 正则表达式
  • Cloudfare内网穿透配置
  • Java设计模式之中介者模式
  • YOLO11改进|全网首发|YOLO11中引入轻量级坐标注意力LCA
  • (UI自动化测试web端)第二篇:元素定位的方法_class定位
  • OpenCV平滑处理:图像去噪与模糊技术详解
  • LeetCode(704):二分查找
  • 【大模型科普】大模型:人工智能的前沿(一文读懂大模型)
  • Canal同步延迟和数据丢失优化方案
  • IBM ECM结合 第三方AI API 来实现文档分析和 RAG
  • 如何从后端实现页面跳转?
  • MLIR中Dialect的抽象层级 简介
  • 算法训练营第二十二天 | 回溯算法(四)
  • page.json和manifest.json
  • 耗时sql分析
  • 通义灵码2.0 AI 程序员体验:优化与问题解决的全过程
  • 练习用Jupyter使用selenium【疑问未解决版】
  • 复旦大学文科杰出教授裘锡圭逝世,享年90岁
  • “80后”计算机专家唐金辉已任南京林业大学副校长
  • 光大华夏:近代中国私立大学遥不可及的梦想
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 西安碑林博物馆票价将调至85元,工作人员:10元属于改扩建期间惠民票
  • 民生访谈|摆摊设点、公园搭帐篷、行道树飘絮,管理难题怎么解?