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

Pandas教程:数据分析利器 - 从入门到精通

Pandas是Python中最强大的数据分析工具之一,它提供了高性能、易用的数据结构和数据分析工具。本教程将全面介绍Pandas的核心功能和实际应用。

一、Pandas基础

1.1 数据结构简介

Pandas主要有两种数据结构:

  • Series(一维数据)
  • DataFrame(二维数据)
import pandas as pd
import numpy as np

# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 创建DataFrame
df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五'],
    '年龄': [25, 28, 22],
    '城市': ['北京', '上海', '广州']
})
print(df)

1.2 数据导入与导出

# 读取CSV文件
df = pd.read_csv('data.csv')

# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 保存为CSV
df.to_csv('output.csv', index=False)

# 保存为Excel
df.to_excel('output.xlsx', index=False)

二、数据操作基础

2.1 查看数据

# 查看前几行数据
print(df.head())

# 查看基本信息
print(df.info())

# 查看统计摘要
print(df.describe())

# 查看数据维度
print(df.shape)

2.2 数据选择和过滤

# 选择列
print(df['姓名'])
print(df[['姓名', '年龄']])

# 条件过滤
print(df[df['年龄'] > 25])

# loc和iloc选择器
print(df.loc[0])  # 基于标签
print(df.iloc[0])  # 基于位置

三、数据清洗和预处理

3.1 处理缺失值

# 检查缺失值
print(df.isnull().sum())

# 填充缺失值
df.fillna(value=0)  # 用0填充
df.fillna(method='ffill')  # 用前一个值填充
df.fillna(method='bfill')  # 用后一个值填充

# 删除缺失值
df.dropna()

3.2 数据转换

# 类型转换
df['年龄'] = df['年龄'].astype('int64')

# 重命名列
df = df.rename(columns={'姓名': 'name', '年龄': 'age'})

# 替换值
df['城市'] = df['城市'].replace('北京', 'Beijing')

四、数据分析和聚合

4.1 分组操作

# 按城市分组并计算平均年龄
print(df.groupby('城市')['年龄'].mean())

# 多个聚合操作
print(df.groupby('城市').agg({
    '年龄': ['mean', 'max', 'min'],
    '姓名': 'count'
}))

4.2 排序

# 按年龄排序
df_sorted = df.sort_values('年龄', ascending=False)

# 多列排序
df_sorted = df.sort_values(['城市', '年龄'], ascending=[True, False])

五、高级操作

5.1 合并数据

# 合并两个DataFrame
df1 = pd.DataFrame({
    '编号': ['A1', 'A2', 'A3'],
    '姓名': ['张三', '李四', '王五']
})

df2 = pd.DataFrame({
    '编号': ['A1', 'A2', 'A4'],
    '成绩': [90, 85, 88]
})

# 内连接
merged = pd.merge(df1, df2, on='编号', how='inner')

# 外连接
merged = pd.merge(df1, df2, on='编号', how='outer')

5.2 数据透视表

# 创建透视表
pivot_table = pd.pivot_table(df,
                            values='年龄',
                            index='城市',
                            columns='性别',
                            aggfunc='mean')

5.3 时间序列

# 创建日期范围
dates = pd.date_range('20230101', periods=6)

# 时间序列数据
ts = pd.Series(np.random.randn(6), index=dates)

# 重采样
print(ts.resample('M').mean())  # 按月重采样

六、实用技巧

6.1 数据可视化

import matplotlib.pyplot as plt

# 绘制折线图
df['年龄'].plot(kind='line')
plt.show()

# 绘制柱状图
df.groupby('城市')['年龄'].mean().plot(kind='bar')
plt.show()

6.2 性能优化

# 使用适当的数据类型
df['年龄'] = df['年龄'].astype('int32')  # 降低内存使用

# 使用query进行高效过滤
df.query('年龄 > 25 and 城市 == "北京"')

总结

Pandas的主要优势:

  • 强大的数据处理能力
  • 灵活的数据结构
  • 高效的数据分析工具
  • 丰富的数据导入/导出功能
  • 与其他数据科学工具良好的集成

使用建议:

  • 熟练掌握基础操作
  • 善用链式操作提高代码可读性
  • 注意内存使用效率
  • 充分利用Pandas的向量化操作
  • 经常查阅官方文档获取最新特性

http://www.kler.cn/a/582737.html

相关文章:

  • AI大模型的地址治理ETL方案
  • MySQL常用函数详解及SQL代码示例
  • BLIP-2:使用冻结图像编码器和大型语言模型进行语言-图像预训练
  • Linly-Talker:开源数字人框架的技术解析与影响
  • 容器编排革命:从 Docker Run 到 Docker Compose 的进化之路20250309
  • 【2025】基于springboot+vue的网络安全科普平台(源码、万字文档、图文修改、调试答疑)
  • Linux网络:网络与操作系统1
  • flutter 如何与原生框架通讯安卓 和 ios
  • 使用纯CSS 实现 侧边栏 拖拽效果
  • 【经典算法】Leetcode-零钱兑换问题
  • android 无障碍开发辅助工具uiautomatorviewer
  • 面试提问(1)
  • Ubuntu 24.04 Rootless Docker 安装指南
  • 一周学会Flask3 Python Web开发-使用SQLAlchemy动态创建数据库表
  • UE5以插件的形式加载第三方库
  • 科技工作者之家建设扬帆起航,为科技人才提供更多优质服务
  • Web服务器配置、虚拟主机配置、访问权限控制
  • 无人机+无人车+机器狼+DeepSeek:智能化设备集群技术详解
  • 【docker】Windows10启动Docker Desktop - WSL update failed
  • 安装 ubuntu 2404 LTS 服务器 设置 服务器名称