Pandas 数据分析:从入门到精通的数据处理核心
Pandas 数据分析:从入门到精通的数据处理核心
引言
在数据科学领域,Python 之所以能够成为主流语言,离不开 Pandas 这个强大的数据处理库。Pandas 提供了高性能、易于使用的数据结构和数据分析工具,使数据清洗、处理、分析和可视化变得前所未有的高效。本文将带你从 Pandas 的基础入门,逐步深入到高级应用,助你掌握数据处理的核心技能。
一、Pandas 基础
1.1 安装与导入
首先,确保你的环境中已经安装了 Pandas。如果尚未安装,可以通过 pip 命令轻松完成。
pip install pandas
在代码中,我们通常将 Pandas 导入并简写为 pd
,这是一种社区约定。
import pandas as pd
1.2 核心数据结构:Series 与 DataFrame
- Series:一维带标签的数组,可以存储任何数据类型(整数、字符串、浮点数、Python 对象等)。
- DataFrame:二维带标签的数据结构,类似于电子表格或 SQL 表。它是 Pandas 中最常用的数据结构。
# 创建一个 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 数组。
# 使用字典创建
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 文件。
# 假设有一个名为 data.csv 的文件
# df_csv = pd.read_csv('data.csv')
# print(df_csv.head())
2.2 读取 Excel 文件
读取 Excel 文件同样简单,使用 pd.read_excel()
。
# 假设有一个名为 data.xlsx 的文件
# df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# print(df_excel.head())
2.3 数据写入
处理完数据后,你可以将其保存为新的文件。
# 写入 CSV
# df.to_csv('output.csv', index=False)# 写入 Excel
# df.to_excel('output.xlsx', sheet_name='Result')
三、数据探索与基本操作
3.1 查看数据概览
head()
/tail()
: 查看前几行或后几行数据。info()
: 查看 DataFrame 的基本信息,如列名、数据类型、非空值数量等。describe()
: 对数值型列进行统计性描述,如均值、标准差、最大最小值等。
print(df.head())
print(df.info())
print(df.describe())
32. 数据选择与切片
loc
: 基于标签进行选择。iloc
: 基于整数位置进行选择。
# 选择单列
print(df['A'])# 使用 loc 选择
print(df.loc[dates[0]])# 使用 iloc 选择
print(df.iloc[0:3, 0:2])
3.3 数据筛选与条件查询
你可以像操作 NumPy 数组一样,根据条件筛选数据。
# 筛选出 A 列大于 0 的数据
print(df[df['A'] > 0])# 筛选出值在特定范围的数据
print(df[df['A'].isin([1, 2, 3])])
四、数据清洗与预处理
4.1 处理缺失值
dropna()
: 删除含有缺失值的行或列。fillna()
: 填充缺失值。
# 删除任何含有缺失值的行
df_cleaned = df.dropna(how='any')# 将所有缺失值填充为 0
df_filled = df.fillna(value=0)
4.2 处理重复值
duplicated()
: 判断是否存在重复行。drop_duplicates()
: 删除重复行。
# 假设 df 中有重复行
# df_unique = df.drop_duplicates()
4.3 数据类型转换
使用 astype()
方法可以转换列的数据类型。
# 将 'A' 列转换为字符串类型
# df['A'] = df['A'].astype(str)
五、数据整合与重塑
5.1 数据合并
concat()
: 沿某个轴将多个对象堆叠到一起。merge()
: 类似于 SQL 的 JOIN 操作。
# df1, df2 是两个 DataFrame
# 合并
# merged_df = pd.merge(df1, df2, on='key')# 拼接
# concated_df = pd.concat([df1, df2])
5.2 数据分组与聚合
groupby()
是 Pandas 最强大的功能之一,它遵循“分割-应用-合并”的原则。
# 按 'A' 列分组并计算每组的均值
# print(df.groupby('A').mean())
53. 数据透视表
pivot_table()
可以帮助你轻松创建数据透视表。
# 创建一个数据透视表
# pivot = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
六、高级应用与技巧
6.1 时间序列分析
Pandas 在处理时间序列数据方面表现出色,提供了丰富的函数和方法。
# 重采样为按月频率
# monthly_resampled = df.resample('M').sum()
6.2 apply 函数的应用
apply()
允许你对 DataFrame 的行或列应用一个函数。
# 对 '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次,性价比推荐