使用 Python pandas操作 Excel 文件

devtools/2025/3/13 1:01:41/

pandas__Excel__0">使用 Python pandas 操作 Excel 文件

flyfish

pandas 是 Python 中一个强大的数据处理和分析库,它提供了丰富的数据结构(如 SeriesDataFrame)和数据操作方法,能够方便地处理各种数据格式,包括 Excel 文件。

pandas_9">安装 pandas

在使用 pandas 之前,需要先安装它。可以使用 pip 进行安装:

pip install pandas

如果需要处理 Excel 文件,还需要安装 openpyxl 库(用于处理 .xlsx 文件):

pip install openpyxl
数据结构
  • Series:一维的带标签数组,类似于一维数组或列表。
  • DataFrame:二维的表格型数据结构,类似于 Excel 表格,由行和列组成。

例子

1. 读取 Excel 文件
python">import pandas as pd# 读取 Excel 文件
file_path = 'example.xlsx'
df = pd.read_excel(file_path)# 查看数据的基本信息
print('数据基本信息:')
df.info()# 查看数据集行数和列数
rows, columns = df.shapeif rows:# 数据行数大于 0 时查看数据前几行信息print('数据前几行信息:')print(df.head().to_csv(sep='\t', na_rep='nan'))
else:print('数据为空')

代码解释

  • pd.read_excel 用于读取 Excel 文件,返回一个 DataFrame 对象。
  • df.info() 用于查看数据的基本信息,如列名、数据类型等。
  • df.head() 用于查看数据集行数和列数。
  • df.head() 用于查看数据的前几行。
2. 写入 Excel 文件
python">import pandas as pd# 创建示例数据
data = {'姓名': ['张三', '李四', '王五'],'年龄': [25, 30, 35],'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)# 写入单个工作表
df.to_excel('output_single.xlsx', index=False)# 写入多个工作表
with pd.ExcelWriter('output_multi.xlsx') as writer:df.to_excel(writer, sheet_name='Sheet1', index=False)df.to_excel(writer, sheet_name='Sheet2', index=False)

代码解释

  • pd.DataFrame 用于创建一个 DataFrame 对象。
  • df.to_excel 用于将 DataFrame 写入 Excel 文件。index=False 表示不保存行索引。
  • pd.ExcelWriter 用于将多个 DataFrame 写入同一个 Excel 文件的不同工作表。
3. 筛选和处理数据
python">import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx')# 筛选年龄大于 30 的数据
filtered_df = df[df['年龄'] > 30]# 保存筛选后的数据到新的 Excel 文件
filtered_df.to_excel('filtered_output.xlsx', index=False)

代码解释

  • df[df['年龄'] > 30] 用于筛选出年龄大于 30 的行。
  • filtered_df.to_excel 用于将筛选后的数据保存到新的 Excel 文件。
4. 数据排序
python">import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx')# 按年龄降序排序
sorted_df = df.sort_values(by='年龄', ascending=False)# 保存排序后的数据到新的 Excel 文件
sorted_df.to_excel('sorted_output.xlsx', index=False)

代码解释

  • df.sort_values(by='年龄', ascending=False) 用于按年龄列降序排序。
  • sorted_df.to_excel 用于将排序后的数据保存到新的 Excel 文件。
5. 数据合并
python">import pandas as pd# 创建示例数据
data1 = {'ID': [1, 2, 3],'姓名': ['张三', '李四', '王五']
}
df1 = pd.DataFrame(data1)data2 = {'ID': [2, 3, 4],'成绩': [80, 90, 70]
}
df2 = pd.DataFrame(data2)# 合并数据
merged_df = pd.merge(df1, df2, on='ID', how='inner')# 保存合并后的数据到新的 Excel 文件
merged_df.to_excel('merged_output.xlsx', index=False)

代码解释

  • pd.merge 用于将两个 DataFrame 按指定列(这里是 ID)进行合并。how='inner' 表示使用内连接,只保留两个 DataFrameID 相同的行。
  • merged_df.to_excel 用于将合并后的数据保存到新的 Excel 文件。

单元格操作

示例 1:修改单个单元格的值

python">import pandas as pd# 创建一个简单的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35]
}
df = pd.DataFrame(data)# 修改第 1 行(索引为 0)、'Name' 列的单元格值
df.at[0, 'Name'] = 'Alicia'# 将修改后的 DataFrame 保存为 Excel 文件
df.to_excel('single_cell_modify.xlsx', index=False)

代码解释

  • df.at[0, 'Name'] 用于定位到第 1 行(索引从 0 开始)Name 列的单元格。
  • 通过赋值操作将该单元格的值修改为 Alicia
  • 最后使用 to_excel 方法将修改后的 DataFrame 保存为 Excel 文件。

示例 2:根据条件修改单元格的值

python">import pandas as pd# 创建一个简单的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35]
}
df = pd.DataFrame(data)# 当年龄大于 30 时,将姓名改为 'Senior'
df.loc[df['Age'] > 30, 'Name'] = 'Senior'# 将修改后的 DataFrame 保存为 Excel 文件
df.to_excel('conditional_cell_modify.xlsx', index=False)

代码解释

  • df.loc[df['Age'] > 30, 'Name'] 用于筛选出 Age 列中值大于 30 的行,并定位到 Name 列的单元格。
  • 将这些单元格的值修改为 Senior
  • 最后保存为 Excel 文件。

示例 3:读取单个单元格的值

python">import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx')# 读取第 2 行(索引为 1)、第 1 列(索引为 0)的单元格值
cell_value = df.iat[1, 0]
print(f"第 2 行第 1 列的单元格值为: {cell_value}")

代码解释

  • df.iat[1, 0] 用于读取第 2 行(索引从 0 开始)、第 1 列的单元格值。
  • 将读取到的值存储在 cell_value 变量中并打印。

示例 4:批量修改某列单元格的值

python">import pandas as pd# 创建一个简单的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35]
}
df = pd.DataFrame(data)# 给 'Age' 列的每个单元格值加 5
df['Age'] = df['Age'] + 5# 将修改后的 DataFrame 保存为 Excel 文件
df.to_excel('batch_cell_modify.xlsx', index=False)

代码解释

  • df['Age'] = df['Age'] + 5Age 列的每个单元格值都加上 5。
  • 最后保存修改后的 DataFrame 为 Excel 文件。

示例 5:在特定单元格插入公式

python">import pandas as pd# 创建一个简单的 DataFrame
data = {'Num1': [1, 2, 3],'Num2': [4, 5, 6]
}
df = pd.DataFrame(data)# 在新的 'Sum' 列的每个单元格插入求和公式
df['Sum'] = '=A' + (df.index + 2).astype(str) + '+B' + (df.index + 2).astype(str)# 将修改后的 DataFrame 保存为 Excel 文件
df.to_excel('formula_insert.xlsx', index=False)

代码解释

  • 首先创建一个包含两列数值的 DataFrame
  • 然后创建一个新的 Sum 列,通过字符串拼接的方式为每个单元格插入求和公式(这里假设 Excel 中 Num1 对应 A 列,Num2 对应 B 列)。
  • 最后将 DataFrame 保存为 Excel 文件,在 Excel 中打开该文件时,这些公式会自动计算结果。

操作多个单元格

1. 选择多个单元格

按行和列的范围选择

可以使用 lociloc 方法按行和列的范围来选择多个单元格。loc 基于标签(行索引名和列名)进行选择,iloc 基于整数位置进行选择。

python">import pandas as pd# 创建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'Score': [85, 90, 78, 92]
}
df = pd.DataFrame(data)# 使用 loc 按标签选择第 1 行到第 2 行,'Name' 列到 'Age' 列的单元格
selected_loc = df.loc[0:1, 'Name':'Age']
print("使用 loc 选择的单元格:")
print(selected_loc)# 使用 iloc 按整数位置选择第 1 行到第 2 行,第 0 列到第 1 列的单元格
selected_iloc = df.iloc[0:2, 0:2]
print("\n使用 iloc 选择的单元格:")
print(selected_iloc)
按条件选择

可以根据某些条件筛选出满足条件的多个单元格。

python"># 选择 Age 大于 30 的所有行的 'Name' 和 'Age' 列单元格
selected_condition = df.loc[df['Age'] > 30, ['Name', 'Age']]
print("\n按条件选择的单元格:")
print(selected_condition)

2. 修改多个单元格的值

批量修改指定范围的值
python"># 将第 1 行到第 2 行,'Age' 列的单元格值都修改为 28
df.loc[0:1, 'Age'] = 28
print("\n修改指定范围单元格后的数据:")
print(df)
根据条件修改多个单元格的值
python"># 将 Age 大于 30 的行的 'Score' 列单元格值都加 5
df.loc[df['Age'] > 30, 'Score'] = df.loc[df['Age'] > 30, 'Score'] + 5
print("\n根据条件修改单元格后的数据:")
print(df)

3. 填充多个单元格

使用固定值填充
python"># 将第 1 行到第 3 行,'Score' 列的单元格用值 80 填充
df.loc[0:2, 'Score'] = 80
print("\n使用固定值填充单元格后的数据:")
print(df)
使用序列填充
python"># 用一个序列填充第 1 行到第 3 行,'Name' 列的单元格
new_names = ['Eve', 'Frank', 'Grace']
df.loc[0:2, 'Name'] = new_names
print("\n使用序列填充单元格后的数据:")
print(df)

4. 合并多个单元格的值

假设要将 Name 列和 Age 列的值合并到一个新列中。

python"># 创建一个新列 'Info',将 'Name' 列和 'Age' 列的值合并
df['Info'] = df['Name'] + ' (' + df['Age'].astype(str) + ')'
print("\n合并单元格值后的数据:")
print(df)

http://www.ppmy.cn/devtools/166635.html

相关文章

C#控制台应用程序学习——3.11

一、整型数字计算 如果我们想执行以下程序:程序提示用户输入一个数字并输出 num 20 的结果,我们的思维应该是这样的: using System;public class Class1 {public static void Main(string[] args){Console.WriteLine("Enter the first…

软考 中级软件设计师 考点知识点笔记总结 day03

文章目录 5、输入输出技术5.1、CPU与外设之间的数据传送方式 6、存储系统6.1、层次结构6.2、分类6.3、高速缓存Cache6.4 、Cache的三种地址映像6.5、Cache的性能分析6.6、主存的扩展6.7、虚拟存储器 7、总线系统8、磁盘阵列技术 RAID9、计算机可靠性 上一篇 软考知识点 day02 …

JavaEE进阶(3) Spring Web MVC 小练习:用户登录

1. 需求分析 实现一个简单的用户登录系统,满足以下需求: 用户输入账号和密码,后端校验密码是否正确。如果不正确,前端提示用户登录失败。如果正确,跳转到首页,并在首页显示当前登录用户。后续访问首页时&…

【GPT入门】第10课 FunctionCalling介绍

【GPT入门】第10课 FunctionCalling介绍 1. 大模型的两大缺陷导致需要连接外部世界2. FunctionCalling介绍3. functionCalling的感性认识 1. 大模型的两大缺陷导致需要连接外部世界 大模型存在两大显著缺陷: 一、知识储备存在局限性 一方面,大模型并非全…

Tomcat 新手入门指南:从零开始掌握安装与配置

Tomcat 新手入门指南:从零开始掌握安装与配置 一、Tomcat 是什么? Apache Tomcat 是一个开源的 轻量级 Web 应用服务器,专为运行 Java Servlet 和 JSP 设计。它是初学 Java Web 开发的必备工具,也是企业级应用的常见选择。 核心…

批量合并 Word 文档,支持合并成一个 Word,也支持按文件夹合并

我们经常会碰到需要将多个 Word 文档批量合并成一个 Word 文档的场景,比如需要合并后打印、合并后方便整理存档等等。如果是人工的操作,会非常的麻烦。因此我们通常会借助一些批量处理脚本或者寻找批量处理的工具来帮我们实现批量合并 Word 文档的操作。…

SpringBoot 统一异常处理

首先定义一个统一管理所有异常的类,加上注解RestControllerAdvice定义处理不同异常的方法,加上注解 ExceptionHandler RestControllerAdvice public class GlobalExceptionHandler {private static final Logger log LoggerFactory.getLogger(GlobalExc…

2025最新群智能优化算法:云漂移优化(Cloud Drift Optimization,CDO)算法求解23个经典函数测试集,MATLAB

一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…