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

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 是数据分析师的“瑞士军刀”,熟练使用它能极大提升工作效率!

http://www.jsqmd.com/news/312896/

相关文章:

  • 拒稿率暴跌!虎贲等考 AI 解锁期刊论文投稿密码:从选题到见刊少走 2 年弯路
  • 2026年电动床OEM代工厂家推荐:基于十大维度的全球五大厂商权威评测排名
  • 2026年乌鲁木齐黄金回收推荐:黄金上门回收 /黄金首饰回收多少钱一克/ 黄金首饰加工 /黄金首饰回收/黄金回收价格源头商家精选
  • 2026年电动床OEM代工厂家推荐:权威榜单揭晓,KOMBAT战盾领跑
  • 深入解析:【linux】环境变量(详解)
  • python 异步编程
  • 强烈安利!专科生必用8个AI论文网站测评TOP8
  • 数组part01
  • 2026年护理床OEM代工厂家推荐:基于产能与品控的五家实力企业深度解析
  • 2026年哈尔滨推荐一下管道疏通专业公司,靠谱的都在这
  • 中帆盛森定制婚庆篷房布好吗,有哪些突出优势?
  • 2026年沈阳地区艾灸仪器质量好的品牌推荐与选购指南
  • 讲讲华力钢业公司概况,其产品在全国哪些行业应用广泛?
  • 小程序毕设选题推荐:基于springboot+Android的高校食堂点餐配送系统小程序基于Android的大学食堂校园点餐系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 深聊乐净石新房除甲醛好用吗?性价比哪家高?
  • 解读塑料轴承生产厂哪家口碑好?哪家值得选?
  • 计算机小程序毕设实战-基于springboot+Android的高校食堂点餐配送系统小程序基于Android的高校食堂点餐系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2026年护理床OEM代工厂家推荐:医用合规场景深度评测,破解认证与品控痛点
  • Redis集群Lettuce主从切换问题
  • 绝对干货!精准、安全、智能!itc舞台机械整体解决方案,成就舞台无限可能!
  • 比 Cursor 更丝滑的 AI DevOps 编程智能体 - CodeRider-Kilo 正式发布! - 指南
  • 2026年护理床OEM代工厂家推荐:基于10大核心指标解析
  • 安庆企业小红书运营找谁?本地服务商Top3深度解析
  • 【目标检测】基于线性约束最小方差和缩放短时分数阶傅里叶变换算法,完成无人机原始毫米波雷达数据的加载、校准、处理及目标检测附matlab代码
  • 告别手动寄存器编程:STM32-RS 生态如何重构嵌入式编写效率
  • 2026年护理床OEM代工厂家推荐:基于全球供应链深度评测的五大实力厂商榜单
  • 网络威胁情报:将隐藏线索转化为网络安全力量
  • 压路机远程监控运维管理系统方案
  • 对话式AI大赛揭晓:Emory大学团队赢得Alexa大奖
  • vue3中ES6 对象解构赋值中的重命名语法(如:预览文件和阅览文件)