240
我爱毛绒绒~~~~~~~

Pandas学习指南

基础部分

Pandas简介

入门结合参考:https://www.cnblogs.com/yigehulu/p/18081033

Series:一维带标签的数组

创建Series

  • 使用列表创建

  • 使用字典创建

  • 使用numpy创建

  • 单个字符串也能创建

  • 创建空Series

  • 创建等值Series

基本操作

  • 数据访问

    • 通过位置索引

    • 通过标签索引

  • 数据修改

索引切片

  • loc:显式索引切片,基于标签

  • iloc:隐式索引切片,基于位置

  • 布尔索引切片

DataFrame:二维表格型数据结构

创建DataFrame

  • 使用列表创建

    • 默认不设置行列标签

    • 设置列标签

  • 使用数组创建

  • 使用字典创建报错

    • DataFrame通常由字典构成,其中键是列名,值可以是列表、数组或Series
    • 由字典创建时,默认key是columns,但是字典的value不可以是非标量值
    • 在 Pandas 中,标量(Scalar) 指的是单个的、不可再分的值(如一个数字、字符串或布尔值),非标量有长度,Pandas会创建默认列

列操作


    • inplace=True不返回新的DataFrame,直接修改原DataFrame

    • 默认False,返回修改后数组


  • 默认inplace=False

    • 选择单列,返回Series

    • 选择多列

行操作


  • 数组,字典,列表新增都没有问题



    • 选择单行,返回Series

    • 选择多行

索引筛选

  • 条件筛选

  • 标签索引

  • 位置索引

索引主要函数归纳

loc

  • 索引类型:通过行标签列标签选择数据

  • 切片行为:包含结束位置

  • 支持操作:单值,多值,布尔索引,条件筛选

  • 适用场景:已知行/列的精准定位

iloc

  • 索引类型:通过行位置列位置选择数据(从0开始)

  • 切片行为:左闭又开(不包含结束位置)

  • 支持操作:单值,多值,证书列表,布尔掩码(需转换为整数)

  • 适用场景:按固定位置选择数据(无需关心标签)

at

  • 索引类型:通过行标签列标签选择单个数据

  • 仅限单个元素,比loc更快

iat

  • 索引类型:通过行位置列位置选择单个数据

  • 仅限单个元素,比iloc更快

常用属性函数归纳

values:查看值

index:查看索引

describe():统计摘要

详细参数:

  • include:指定需要包含的数据类型;include='all':包含所有列(包括非数值列,如字符串、分类、布尔值等)
  • exclude:指定需要排除的数据类型

include 和 exclude 不能同时使用,否则会报错
支持所有 Pandas 数据类型,例如:np.number(所有数值类型),'category'(分类数据),'datetime'(日期时间),'object'(字符串或混合类型)

数值型

显示如下:

  • count:数据总数(非空值数量)
  • mean:平均值
  • std:标准差(反应数据离散程度)
  • min:最小值
  • 25%:第一四分位数
  • 50%:中位数
  • 75%:第三四分位数
  • max:最大值
字符串型(或混合型)
  • count:数据总数(非空值数量)
  • unique:去重后数值数量
  • top:出现频率最高的值(众数)
  • freq:众数(top)出现的次数
    image

head():查看前n行数据

unique():唯一值数组

中级部分

数据清洗

处理缺失值

检测缺失值
  • isna():检测缺失值
删除缺失值
  • dropna():删除含有缺失值的行(axis=0)返回修改后的DataFrame
填充缺失值
  • 固定值填充

  • 前后填充

数据转换

  • pd.to_numeric():将参数转换为数值类型(例如整数或浮点数)
    核心参数:

    • arg:待转换的数据(一维结构),如 Series、列表、元组或数组

    • errors:错误处理策略,'raise'(抛错) 'coerce'(无效值转换成NaN)or 'ignore'(忽略)

    • downcast:数值类型降级:'integer'(最小整数类型,有符号和无符号) or 'signed(最小的有符号整数类型,如:正数,负数和0) or 'unsigned'(最小的无符号整数类型,如:uint8, uint16, uint32, uint64) or 'float'(最小浮点类型)

  • where():用于根据条件替换值
    核心参数:

    • cond:布尔条件(DataFrame/Series/可调用对象),True的位置保留原值

    • other:替换值(标量/Series/DataFrame/函数),False的位置替换为此值(默认NaN)

    • inplace:是否原地修改(默认False,返回新对象)

    • axis:对齐轴(用于索引对齐)

      image

重复数据处理

检测重复行
  • 判断重复行

  • 指定列判断重复

删除重复行

字符串操作

DataFrame的字符串拼接,大小写转换,替换与字符串的函数基本一致

pd.to_datetime():时间序列处理

数字类型转换成日期类型,数字类型如果不想被当做时间戳转换,就得先转换成字符串类型,在转成日期类型

核心参数:

  • arg:字符串、日期时间对象、列表、元组、一维数组、Series、DataFrame

  • erros:错误处理,raise(默认,抛错),coerce(无效值转换成NaT),ignore(忽略)

  • dayfirst:当日期模糊时,(如01/01/2025),优先解析为日/月格式

  • yearfirst:优先解析为年/月/日,默认为False,当yearfirst=True时,优先级高于dayfirst

  • format:格式化字符串;用来指定输入字符串的格式,而不是目标格式

数据分组

groupby():分组操作

  • 分组

  • 查询

pd.cut():数据分箱(离散化)

将连续型数值数据分割为离散的区间(分箱),常用于数据分组或转换。

核心参数:

  • x:要分箱的一维数组或者Series

  • bins:定义分箱的边界,整数:自动生成n个等宽区间,列表:自定义边界

  • labels:为每个区间指定标签,标签列表长度必须比bins少1

  • right:是否包含右边界,默认为True,即左开右闭

  • precision:区间边界的小数位精度

  • include_lowest:是否包含最小值,默认False,第一个区间左开右闭时可能要设为True

pd.qcut()按等频分位数分箱,保证每箱数据量均衡

比较

  • 相同点

    • 两者都用于将数据按照某种规则分成不同组别,便于后续分析或聚合操作
    • pd.cut()生成的离散分组结果,常作为groupby的分组键值,组合使用
  • 不同点

数据选择与过滤

query():布尔索引的简化,布尔索引上面有写过

数据合并与连接

测试数据

pd.concat:沿轴拼接数据,需要匹配索引,否则直接向下拼接

  • DataFrame拼接Series,索引不匹配的情况下,指定axis=1也不能横向拼接

  • DataFrame拼接Series

  • DataFrame拼接DataFrame横向拼接

pd.merge:数据库风格连接

  • 列数据重复,导致合并后保留所有的匹配组合

  • 以某列为基准的合并,那一列不能有重复数据

join:索引对齐连接

  • DataFrame拼接Series,由于Series没有列名报错

  • DataFrame拼接DataFrame

比较不同合并方法

其他功能拓展

属性类

value_counts():根据值来进行统计(本人真的觉得它好用到爆)

image

reset_index():将索引转换为常规数据列(会用在value_counts)

image

多重索引

日期类

提取年月日

  • 提取单个

  • 提取多个
    image

高级演示

  • 时间窗口计算(暂时没有实例,所以先copy一下代码)
    # 7天滚动平均值
    df['RollingAvg'] = df['Sales'].rolling(window='7D').mean()
    
    # 重采样为月统计
    monthly = df.resample('M', on='Date').agg({'Sales': 'sum'})
    

数据计算类

pct_change():直接计算相邻元素的百分比变化


corr():计算列间相关系数

计算数据框中各列之间的相关系数矩阵
核心参数:

  • method:相关系数类型,'pearson'(默认)、'spearman'、'kendall'
  • min_periods:计算所需的最小样本数
  • numeric_only:是否仅计算数值列的相关系数(默认False,需Pandas 2.0+)

cumsum():数据累加

image

posted @ 2025-04-27 09:54  水开白  阅读(51)  评论(0)    收藏  举报