Python Pandas完全指南:从核心数据结构到实战操作

Pandas 是 Python 中最核心的数据分析库,专为高效处理结构化数据(如表格、时间序列)设计,提供了直观的数据结构和丰富的操作方法。它基于 NumPy 构建,弥补了 NumPy 对非数值/混合类型数据的支持不足,是数据分析、机器学习预处理环节的必备工具。

一、核心数据结构

Pandas 的两大核心对象是 Series (一维)和 DataFrame(二维),覆盖了绝大多数数据分析场景:

1. Series(一维带标签数组)
  • 类似"带索引的列表",每个元素有唯一的**标签(index)**和对应的值(value)。

  • 示例:

    复制代码
    import pandas as pd
    
    # 从列表创建 Series(默认索引为 0,1,2...)
    s = pd.Series([10, 20, 30, 40])
    print(s)
    # 输出:
    # 0    10
    # 1    20
    # 2    30
    # 3    40
    # dtype: int64
    
    # 自定义索引
    s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
    print(s['a'])  # 输出:10
2. DataFrame(二维表格型数据)
  • 类似 Excel 表格或 SQL 表,由行索引(index)列名(columns)数据值组成,每列可以是不同数据类型(int/float/str/datetime 等)。

  • 示例:

    复制代码
    # 从字典创建 DataFrame(键为列名,值为列数据)
    data = {
        '姓名': ['张三', '李四', '王五'],
        '年龄': [20, 22, 21],
        '成绩': [85.5, 92.0, 78.5]
    }
    df = pd.DataFrame(data)
    print(df)
    # 输出:
    #   姓名  年龄   成绩
    # 0  张三  20  85.5
    # 1  李四  22  92.0
    # 2  王五  21  78.5

二、数据读取与写入

Pandas 支持读取几乎所有常见格式的文件,常用方法如下:

文件格式 读取方法 写入方法
CSV pd.read_csv('file.csv') df.to_csv('file.csv', index=False)
Excel pd.read_excel('file.xlsx') df.to_excel('file.xlsx', index=False)
JSON pd.read_json('file.json') df.to_json('file.json')
SQL pd.read_sql(query, conn) df.to_sql(table, conn, if_exists='replace')
  • 注意:read_excel需要安装 openpyxl(处理 .xlsx)或 xlrd(处理旧版 .xls)依赖:

    pip install openpyxl xlrd

三、常用操作

1. 查看数据基本信息
复制代码
df = pd.read_csv('data.csv')

# 前5行(默认)/ 后n行
df.head(5)   # 前5行
df.tail(3)   # 后3行

# 数据形状(行数, 列数)
df.shape     # 输出:(100, 5)

# 列名
df.columns   # 输出:Index(['姓名', '年龄', ...], dtype='object')

# 数据类型与缺失值统计
df.info()     # 显示每列的非空值数量、数据类型

# 描述性统计(仅数值列)
df.describe() # 输出 count/mean/std/min/max/四分位数等
2. 选择数据
  • 按列选择df['列名']df[['列1', '列2']](多列需传列表)

    复制代码
    df['姓名']       # 单列(返回 Series)
    df[['姓名', '年龄']]  # 多列(返回 DataFrame)
  • 按行选择

    • 位置索引(类似列表切片):df.iloc[行范围, 列范围](左闭右开)

      复制代码
      df.iloc[0:2]          # 前2行
      df.iloc[0:2, 0:2]      # 前2行+前2列
    • 标签索引:df.loc[行标签范围, 列标签范围](闭区间)

      复制代码
      df.loc[0:1, '姓名':'年龄']  # 行0~1 + 列'姓名'~'年龄'
    • 条件筛选:df[条件表达式]

      复制代码
      df[df['年龄'] > 20]          # 年龄>20的行
      df[(df['年龄']>20) & (df['成绩']>80)]  # 多条件(需用&/|,且加括号)
3. 数据处理
  • 缺失值处理

    复制代码
    df.isnull()        # 标记缺失值(True/False)
    df.isnull().sum()  # 统计每列缺失值数量
    df.dropna()        # 删除含缺失值的行(默认)
    df.fillna(0)       # 用0填充缺失值
    df.fillna(df.mean()) # 用均值填充数值列缺失值
  • 去重

    复制代码
    df.drop_duplicates()  # 删除重复行(默认保留第一行)
  • 排序

    复制代码
    df.sort_values(by='成绩', ascending=False)  # 按成绩降序排列
  • 新增/修改列

    复制代码
    df['是否成年'] = df['年龄'] >= 18  # 新增布尔列
    df['成绩等级'] = df['成绩'].apply(lambda x: '优' if x>=90 else '良' if x>=80 else '中')
  • 分组聚合(GroupBy)

    复制代码
    # 按'班级'分组,计算每班的平均成绩
    df.groupby('班级')['成绩'].mean()
    # 多聚合操作:按班级分组,同时算平均、最高成绩
    df.groupby('班级')['成绩'].agg(['mean', 'max'])
  • 合并数据(Merge/Join/Concat)

    复制代码
    # 类似SQL的JOIN(内连接)
    pd.merge(df1, df2, on='共同列名', how='inner')
    # 纵向拼接(需列名一致)
    pd.concat([df1, df2], axis=0)  # axis=0行拼接,axis=1列拼接

四、时间序列处理

Pandas 对时间序列的支持非常强大,核心是将字符串转换为 datetime类型:

复制代码
# 解析日期列
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d')  # format指定格式(可选)

# 提取时间属性
df['年份'] = df['日期'].dt.year
df['月份'] = df['日期'].dt.month
df['星期几'] = df['日期'].dt.dayofweek  # 0=周一,6=周日

# 设置时间为索引(便于按时间筛选/重采样)
df.set_index('日期', inplace=True)
# 按周重采样(求每周的平均值)
df.resample('W').mean()  # W=周,D=天,M=月,Y=年

五、优势总结

  1. 简洁易用:语法接近自然语言,降低数据分析门槛;

  2. 高效性能:底层基于 Cython 优化,处理百万级数据仍流畅;

  3. 生态丰富:与 NumPy、Matplotlib、Scikit-learn、Seaborn 等库无缝衔接,覆盖"数据读取→清洗→分析→可视化→建模"全流程。

六、学习建议

  • 先掌握 Series/DataFrame 基本操作(选择、筛选、聚合);

  • 重点练习 缺失值处理、分组聚合、合并数据(实际项目高频需求);

  • 结合官方文档(Pandas Documentation)和实战案例(如 Kaggle 数据集分析)巩固。

Pandas 是数据分析师的"瑞士军刀",熟练使用它能极大提升工作效率!

相关推荐
TUTO_TUTO1 天前
【python-词汇指标提取工具开发】自学笔记(1)-后端程序
人工智能·python·pandas·visual studio code
葱明撅腚1 天前
shapely空间数据分析
python·pandas·gis·shapely
忘忧记2 天前
pandas基础三
pandas
叫我:松哥4 天前
基于scrapy的网易云音乐数据采集与分析设计实现
python·信息可视化·数据分析·beautifulsoup·numpy·pandas
测试摆渡媛4 天前
Excel模板填充工具(工具&脚本分享)
python·数据挖掘·pandas
_Soy_Milk4 天前
【算法工程师】—— Python 数据分析
python·数据分析·numpy·pandas·matplotlib
Data-Miner5 天前
类似Pandas AI的几个数据分析处理智能体介绍
人工智能·数据分析·pandas
智航GIS7 天前
11.18 自定义Pandas扩展开发指南:打造你的专属数据分析武器库
python·数据分析·pandas
人工干智能8 天前
你知道 Pandas 中 `pd.get_dummies()` 会生成哪些独热的新列么?
大数据·pandas