Pandas 数据分析:从入门到精通的数据处理核心

Pandas 数据分析:从入门到精通的数据处理核心

引言

在数据科学领域,Python 之所以能够成为主流语言,离不开 Pandas 这个强大的数据处理库。Pandas 提供了高性能、易于使用的数据结构和数据分析工具,使数据清洗、处理、分析和可视化变得前所未有的高效。本文将带你从 Pandas 的基础入门,逐步深入到高级应用,助你掌握数据处理的核心技能。


一、Pandas 基础

1.1 安装与导入

首先,确保你的环境中已经安装了 Pandas。如果尚未安装,可以通过 pip 命令轻松完成。

python 复制代码
pip install pandas

在代码中,我们通常将 Pandas 导入并简写为 pd,这是一种社区约定。

python 复制代码
import pandas as pd
1.2 核心数据结构:Series 与 DataFrame
  • Series:一维带标签的数组,可以存储任何数据类型(整数、字符串、浮点数、Python 对象等)。
  • DataFrame:二维带标签的数据结构,类似于电子表格或 SQL 表。它是 Pandas 中最常用的数据结构。
python 复制代码
# 创建一个 Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 创建一个 DataFrame
dates = pd.date_range('20250101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)
1.3 创建 DataFrame 的几种方法

你可以通过多种方式创建 DataFrame,最常见的是使用字典或 NumPy 数组。

python 复制代码
# 使用字典创建
df2 = pd.DataFrame({
    'A': 1.,
    'B': pd.Timestamp('20250102'),
    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
    'D': np.array([3] * 4, dtype='int32'),
    'E': pd.Categorical(["test", "train", "test", "train"]),
    'F': 'foo'
})
print(df2)

二、数据读取与写入

Pandas 支持多种文件格式,最常用的是 CSV 和 Excel。

2.1 读取 CSV 文件

使用 pd.read_csv() 函数可以轻松读取 CSV 文件。

python 复制代码
# 假设有一个名为 data.csv 的文件
# df_csv = pd.read_csv('data.csv')
# print(df_csv.head())
2.2 读取 Excel 文件

读取 Excel 文件同样简单,使用 pd.read_excel()

python 复制代码
# 假设有一个名为 data.xlsx 的文件
# df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# print(df_excel.head())
2.3 数据写入

处理完数据后,你可以将其保存为新的文件。

python 复制代码
# 写入 CSV
# df.to_csv('output.csv', index=False)

# 写入 Excel
# df.to_excel('output.xlsx', sheet_name='Result')

三、数据探索与基本操作

3.1 查看数据概览
  • head() / tail(): 查看前几行或后几行数据。
  • info(): 查看 DataFrame 的基本信息,如列名、数据类型、非空值数量等。
  • describe(): 对数值型列进行统计性描述,如均值、标准差、最大最小值等。
python 复制代码
print(df.head())
print(df.info())
print(df.describe())
32. 数据选择与切片
  • loc: 基于标签进行选择。
  • iloc: 基于整数位置进行选择。
python 复制代码
# 选择单列
print(df['A'])

# 使用 loc 选择
print(df.loc[dates[0]])

# 使用 iloc 选择
print(df.iloc[0:3, 0:2])
3.3 数据筛选与条件查询

你可以像操作 NumPy 数组一样,根据条件筛选数据。

python 复制代码
# 筛选出 A 列大于 0 的数据
print(df[df['A'] > 0])

# 筛选出值在特定范围的数据
print(df[df['A'].isin([1, 2, 3])])

四、数据清洗与预处理

4.1 处理缺失值
  • dropna(): 删除含有缺失值的行或列。
  • fillna(): 填充缺失值。
python 复制代码
# 删除任何含有缺失值的行
df_cleaned = df.dropna(how='any')

# 将所有缺失值填充为 0
df_filled = df.fillna(value=0)
4.2 处理重复值
  • duplicated(): 判断是否存在重复行。
  • drop_duplicates(): 删除重复行。
python 复制代码
# 假设 df 中有重复行
# df_unique = df.drop_duplicates()
4.3 数据类型转换

使用 astype() 方法可以转换列的数据类型。

python 复制代码
# 将 'A' 列转换为字符串类型
# df['A'] = df['A'].astype(str)

五、数据整合与重塑

5.1 数据合并
  • concat(): 沿某个轴将多个对象堆叠到一起。
  • merge(): 类似于 SQL 的 JOIN 操作。
python 复制代码
# df1, df2 是两个 DataFrame
# 合并
# merged_df = pd.merge(df1, df2, on='key')

# 拼接
# concated_df = pd.concat([df1, df2])
5.2 数据分组与聚合

groupby() 是 Pandas 最强大的功能之一,它遵循"分割-应用-合并"的原则。

python 复制代码
# 按 'A' 列分组并计算每组的均值
# print(df.groupby('A').mean())
53. 数据透视表

pivot_table() 可以帮助你轻松创建数据透视表。

python 复制代码
# 创建一个数据透视表
# pivot = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])

六、高级应用与技巧

6.1 时间序列分析

Pandas 在处理时间序列数据方面表现出色,提供了丰富的函数和方法。

python 复制代码
# 重采样为按月频率
# monthly_resampled = df.resample('M').sum()
6.2 apply 函数的应用

apply() 允许你对 DataFrame 的行或列应用一个函数。

python 复制代码
# 对 'A' 列的每个值应用一个自定义函数
# df['A_new'] = df['A'].apply(lambda x: x * 2)
6.3 性能优化技巧
  • 使用向量化操作:尽量避免使用循环,多使用 Pandas 内置的向量化函数。
  • 选择合适的数据类型 :例如,将字符串类型转换为 category 类型可以节省内存。
  • 使用 query() 方法 :对于大型 DataFrame,query() 方法通常比标准索引更快。

总结

Pandas 是数据分析 journey 中不可或缺的伙伴。从基础的数据结构到高级的数据整合与分析,掌握 Pandas 将极大地提升你的数据处理能力。希望本文能为你打开 Pandas 的大门,并在你的数据科学之路上助你一臂之力。


AI 产品与服务推荐

在探索数据科学的道路上,强大的 AI 工具能让你事半功倍。这里为你推荐几款优秀的 AI 产品与服务:

😳 0v0 AI 助手推荐、官网:https://0v0.pro

  • 🆓 开源模型全免费:Llama、Qwen、Deepseek 等
  • 😲 基础模型全免费:gpt-4o、o4-mini 、gpt-5-mini 等
  • ♾️ 对话真正无限制:不限时间、不限次数
  • 🫡 每周免费一个旗舰模型:本周免费:gpt-5 ,不限使用!

LLM AI API 推荐 🗨️

🖐️ 按量计算、官网:https://llm-all.pro

  • 😊 opneai 、cluade、genimi、gork 等模型:0.5:1刀 、官方 1 折
  • 🤓 国内模型 豆包、千问 、deepseek、kimi 等:2 - 6 折
  • ☺️ 除了以上模型外,还包含全球各类以上未列出的模型

👺 按次计算、官网:https://fackai.chat

  • 国内外全模型
  • 1 :100次,性价比推荐

相关推荐
王大傻09289 小时前
Series的属性简介
python·pandas
OOOaaa12312310 小时前
电子电路板元器件识别与分类_yolov8-fasternet-bifpn实现方案_1
yolo·数据挖掘
adaAS141431511 小时前
YOLO11-ReCalibrationFPN-P345实现酒液品牌识别与分类_1
人工智能·分类·数据挖掘
罗小罗同学12 小时前
基于虚拟染色的病理切片进行癌症分类,准确率可达到95.9%,在统计学上逼近真实染色的金标准,两小时可处理100张切片
人工智能·分类·数据挖掘·医学图像处理·医学人工智能
L.fountain12 小时前
图像自回归生成(Auto-regressive image generation)实战学习(二)
学习·数据挖掘·回归
桓峰基因13 小时前
SCS 60.单细胞空间转录组空间聚类(SPATA2)
人工智能·算法·机器学习·数据挖掘·聚类
元让_vincent13 小时前
论文Review 3DGS综述 | 南京大学 | 3DGS Survey, Technologies Challenges and Opportunities |(二)扩展、模块增强、其他技术讨论挑战
人工智能·数据挖掘·综述·3dgs
Katecat9966314 小时前
背胶条分类识别:基于计算机视觉的修复状态差异检测与质量评估系统
计算机视觉·分类·数据挖掘
yousuotu15 小时前
基于 Python 实现亚马逊销售数据分析
数据挖掘·数据分析
Tiger Z15 小时前
《R for Data Science (2e)》免费中文翻译 (第15章) --- Regular expression(1)
数据分析·r语言·数据科学·免费书籍