Pandas 与 Excel 常用操作对比
引言
Pandas 和 Excel 都是处理和分析数据的强大工具,但它们在实现相同数据操作的方式上有显著差异。本文将详细介绍这两种工具在常用数据操作上的异同点,并通过示例来展示这些操作的实现方式。
1. 数据加载与保存
Excel
- 加载数据 :Excel 可以直接打开各种文件格式,如
.xlsx
、.csv
等,也可以通过导入功能加载其他格式的数据。- 示例 :打开一个
.xlsx
文件。 - 操作:选择"文件" -> "打开",选择文件路径。
- 示例 :打开一个
- 保存数据 :数据可以直接保存为 Excel 文件,或者另存为其他格式,如 CSV、TXT 等。
- 示例 :将数据保存为
.csv
格式。 - 操作:选择"文件" -> "另存为",选择保存格式为 CSV。
- 示例 :将数据保存为
Pandas
-
加载数据 :Pandas 通过
read_csv()
,read_excel()
,read_sql()
等函数来加载不同格式的数据。-
示例 :使用
read_csv()
从 CSV 文件加载数据。 -
代码 :
pythonimport pandas as pd df = pd.read_csv('data.csv')
-
-
保存数据 :Pandas 可以通过
to_csv()
,to_excel()
,to_sql()
等方法将数据保存到相应的格式。-
示例 :使用
to_csv()
将 DataFrame 保存为 CSV 文件。 -
代码 :
pythondf.to_csv('output.csv', index=False)
-
2. 数据查看与基本信息
Excel
- 查看数据 :可以通过滚动和缩放功能浏览数据。
- 示例:查看前几行数据。
- 操作:滚动到文件顶部。
- 基本信息 :使用 Excel 的"状态栏"可以看到一些基本统计信息,如行数、列数、总和等。
- 示例:查看数据的基本统计信息。
- 操作:观察状态栏显示的信息。
Pandas
-
查看数据 :使用
head()
,tail()
,sample()
等函数查看数据的不同部分。-
示例:查看前五行数据。
-
代码 :
pythonprint(df.head())
-
-
基本信息 :使用
info()
,describe()
,shape
等属性获取数据的基本统计信息和结构信息。-
示例:查看数据的基本统计信息。
-
代码 :
pythonprint(df.info()) print(df.describe())
-
3. 数据选择与索引
Excel
- 单元格选择 :通过点击或拖拽选择单元格或单元格区域。
- 示例:选择 A1 到 B10 的单元格区域。
- 操作:点击 A1,然后拖拽到 B10。
- 条件筛选 :使用"筛选"功能按条件选择数据。
- 示例:选择年龄大于 30 的行。
- 操作:选择列,点击"筛选"按钮,选择条件。
Pandas
-
索引 :使用
.loc[]
或.iloc[]
进行基于标签或位置的选择。-
示例:选择前五行的第二列。
-
代码 :
pythonprint(df.iloc[:5, 1])
-
-
条件筛选 :使用布尔索引或
.query()
方法按条件选择数据。-
示例:选择年龄大于 30 的行。
-
代码 :
pythonprint(df[df['age'] > 30])
-
4. 数据排序与过滤
Excel
- 排序 :使用"排序"功能按一列或多列排序。
- 示例:按年龄列升序排序。
- 操作:选择年龄列,点击"排序"按钮,选择"升序"。
- 过滤 :使用"筛选"功能显示符合条件的数据行。
- 示例:显示年龄大于 30 的行。
- 操作:选择年龄列,点击"筛选"按钮,设置条件。
Pandas
-
排序 :使用
sort_values()
函数按一列或多列排序。-
示例:按年龄列升序排序。
-
代码 :
pythonsorted_df = df.sort_values(by='age')
-
-
过滤 :使用布尔表达式或
.query()
方法过滤数据。-
示例:显示年龄大于 30 的行。
-
代码 :
pythonfiltered_df = df.query('age > 30')
-
5. 数据清洗
Excel
- 删除重复值 :使用"删除重复项"功能去除重复数据。
- 示例:删除姓名列的重复值。
- 操作:选择姓名列,点击"数据" -> "删除重复项"。
- 替换值 :使用"查找与替换"功能修改特定值。
- 示例:将所有的"John Doe"替换为"John Smith"。
- 操作:使用"查找与替换"功能进行替换。
- 缺失值处理 :手动填充或使用公式填充缺失值。
- 示例:使用平均值填充年龄列的缺失值。
- 操作 :使用公式
=AVERAGEIF()
计算平均值,然后手动填充。
Pandas
-
删除重复值 :使用
drop_duplicates()
函数去除重复数据。-
示例:删除姓名列的重复值。
-
代码 :
pythondf.drop_duplicates(subset='name', inplace=True)
-
-
替换值 :使用
replace()
函数替换特定值。-
示例:将所有的"John Doe"替换为"John Smith"。
-
代码 :
pythondf.replace('John Doe', 'John Smith', inplace=True)
-
-
缺失值处理 :使用
fillna()
,dropna()
,interpolate()
等函数处理缺失值。-
示例:使用平均值填充年龄列的缺失值。
-
代码 :
pythondf['age'].fillna(df['age'].mean(), inplace=True)
-
6. 数据转换
Excel
- 公式 :使用内置公式(如
SUM()
,AVERAGE()
,IF()
等)进行计算。- 示例:计算年龄列的平均值。
- 操作 :使用
=AVERAGE()
公式。
- 数据透视表 :创建数据透视表进行汇总和分析。
- 示例:按部门计算员工的平均年龄。
- 操作:插入数据透视表,设置行标签和值字段。
Pandas
-
公式 :使用
apply()
函数和 NumPy 函数进行计算。-
示例:计算年龄列的平均值。
-
代码 :
pythonaverage_age = df['age'].mean()
-
-
数据聚合 :使用
groupby()
函数进行分组和聚合操作。-
示例:按部门计算员工的平均年龄。
-
代码 :
pythonagg_df = df.groupby('department')['age'].mean().reset_index()
-
-
数据透视表 :使用
pivot_table()
函数创建数据透视表。-
示例:按部门计算员工的平均年龄。
-
代码 :
pythonpivot_table = pd.pivot_table(df, values='age', index='department', aggfunc='mean')
-
7. 数据可视化
Excel
- 图表 :使用 Excel 的图表工具创建各种类型的图表,如柱状图、折线图、饼图等。
- 示例:创建年龄分布的柱状图。
- 操作:选择数据,点击"插入" -> "图表" -> "柱状图"。
- 交互式图表 :支持创建动态图表,如条件格式、图表工具等。
- 示例:使用条件格式突出显示年龄大于 30 的行。
- 操作:选择数据,点击"条件格式" -> "新建规则"。
Pandas
-
图表 :使用
plot()
函数结合 Matplotlib 或 Seaborn 创建图表。-
示例:创建年龄分布的柱状图。
-
代码 :
pythonimport matplotlib.pyplot as plt df['age'].hist(bins=10) plt.show()
-
-
定制化 :支持高度定制化图表,如设置标题、轴标签、图例等。
-
示例:设置图表标题和轴标签。
-
代码 :
pythondf['age'].hist(bins=10) plt.title('Age Distribution') plt.xlabel('Age') plt.ylabel('Count') plt.show()
-
8. 数据共享与协作
Excel
- 版本控制 :通过文件的历史版本功能跟踪更改。
- 示例:查看历史版本。
- 操作:选择"文件" -> "信息" -> "版本历史"。
- 多人协作 :使用 Office 365 的实时协作功能。
- 示例:多人同时编辑文件。
- 操作:选择"共享" -> "邀请他人"。
- 保护工作表 :使用密码保护等功能防止未经授权的更改。
- 示例:保护工作表不被编辑。
- 操作:选择"审阅" -> "保护工作表"。
Pandas
- 版本控制 :通过 Git 版本控制系统跟踪代码更改。
- 示例:提交代码更改。
- 操作:使用 Git 命令行工具。
- 多人协作 :通过 GitHub 或其他版本控制系统进行协作开发。
- 示例:推送代码到远程仓库。
- 操作:使用 Git 命令行工具。
- 代码复用 :通过模块化和函数封装提高代码的可重用性。
-
示例:封装一个数据清洗函数。
-
代码 :
pythondef clean_data(df): # 清洗数据的代码 pass
-
9. 性能与扩展性
Excel
- 性能 :处理大量数据时可能会出现性能问题。
- 示例:加载一个包含数百万行的大文件。
- 操作:可能会导致程序卡顿或崩溃。
- 扩展性 :使用宏或 VBA 编程增加功能。
- 示例:编写一个宏来自动执行数据清洗流程。
- 操作:使用 VBA 编辑器编写代码。
Pandas
-
性能 :能够高效处理大型数据集。
-
示例:加载一个包含数百万行的大文件。
-
代码 :
pythondf = pd.read_csv('large_dataset.csv')
-
-
扩展性 :通过 Python 的强大生态扩展功能。
-
示例:使用外部库进行高级数据处理。
-
代码 :
pythonfrom sklearn.preprocessing import StandardScaler scaler = StandardScaler() df_scaled = scaler.fit_transform(df[['age']])
-
10. 总结
Excel
- 适用场景:适用于小到中等规模的数据集处理,特别适合于不需要编程背景的用户。
- 优势:用户界面友好,内置多种功能,便于快速操作。
- 局限性:处理大量数据时性能受限,扩展性有限。
Pandas
- 适用场景:适用于大型数据集的处理和高级数据分析任务。
- 优势:灵活性高,扩展性强,与 Python 生态系统的紧密集成。
- 局限性:需要一定的编程基础,对于初学者来说学习曲线较陡峭。
结论
选择 Excel 还是 Pandas 取决于具体的数据处理需求和个人技能水平。对于需要快速操作小到中等规模数据集的用户,Excel 提供了直观的界面和丰富的内置功能。而对于需要处理大量数据、执行复杂分析的用户,Pandas 提供了更强大的数据处理能力和编程支持。在实践中,两种工具也可以相互配合使用,例如使用 Pandas 处理数据后,再将结果输出到 Excel 中进行进一步的展示和分享。