Python高效处理Excel文件的12个Pandas函数总结

 更新时间:2025年12月02日 09:47:17   作者:东眠的鱼  
Pandas是Python中处理Excel文件的强大工具,下面我将详细介绍12个最常用的高效处理Excel文件的Pandas函数,并提供代码演示,需要的朋友可以参考下

1.“pd.read_excel()”- 读取Excel文件

  • 读取Excel文件到DataFrame中,支持多种参数控制读取方式。
import pandas as pd

# 基本读取
df = pd.read_excel('data.xlsx')

# 读取特定工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 读取特定列
df = pd.read_excel('data.xlsx', usecols=['Name', 'Age'])

# 读取特定行范围
df = pd.read_excel('data.xlsx', nrows=100)  # 只读取前100行

2.“DataFrame.to_excel()”- 写入Excel文件

  • 将DataFrame写入Excel文件,支持多种格式控制。
# 基本写入
df.to_excel('output.xlsx')

# 不写入索引
df.to_excel('output.xlsx', index=False)

# 写入特定工作表
with pd.ExcelWriter('output.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1')

# 格式化输出
with pd.ExcelWriter('formatted.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Sheet1')
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    
    # 设置列宽
    worksheet.set_column('A:A', 20)
    
    # 添加格式
    format1 = workbook.add_format({'bold': True, 'font_color': 'red'})
    worksheet.write(0, 0, 'Important Header', format1)

3. “pd.ExcelFile”- 处理多个工作表

  • 高效处理包含多个工作表的Excel文件。
with pd.ExcelFile('multi_sheet.xlsx') as xls:
    # 获取所有工作表名
    sheet_names = xls.sheet_names
    
    # 读取特定工作表
    df1 = pd.read_excel(xls, sheet_names[0])
    df2 = pd.read_excel(xls, sheet_names[1])
    
    # 或者使用字典存储所有工作表
    all_sheets = {sheet: pd.read_excel(xls, sheet) for sheet in sheet_names}

4.“DataFrame.head()”- 查看前几行

  • 快速查看DataFrame的前几行数据。
# 查看前5行(默认)
print(df.head())

# 查看前10行
print(df.head(10))

5.“DataFrame.tail()”- 查看后几行

  • 快速查看DataFrame的后几行数据。
# 查看后5行(默认)
print(df.tail())

# 查看后3行
print(df.tail(3))

6.“DataFrame.info()”- 查看数据概览

  • 获取DataFrame的摘要信息,包括列数据类型和内存使用情况。
df.info()

7. “DataFrame.describe()”- 统计摘要

  • 生成描述性统计信息,包括计数、均值、标准差、最小值、四分位数和最大值。
# 对所有数值列生成统计信息
print(df.describe())

# 对特定列生成统计信息
print(df['Age'].describe())

# 包含非数值列
print(df.describe(include='all'))

8. “DataFrame.dropna()”- 处理缺失值

  • 删除包含缺失值的行或列。
# 删除包含任何缺失值的行
df_clean = df.dropna()

# 删除包含任何缺失值的列
df_clean = df.dropna(axis=1)

# 只删除全为缺失值的行
df_clean = df.dropna(how='all')

# 删除在特定列中包含缺失值的行
df_clean = df.dropna(subset=['Age', 'Salary'])

9. “DataFrame.fillna()”- 填充缺失值

  • 用指定值或方法填充缺失值。
# 用0填充所有缺失值
df_filled = df.fillna(0)

# 用前一个有效值填充(向前填充)
df_filled = df.fillna(method='ffill')

# 用后一个有效值填充(向后填充)
df_filled = df.fillna(method='bfill')

# 用列均值填充
df_filled = df.fillna(df.mean())

# 对不同列使用不同的填充值
fill_values = {'Age': df['Age'].median(), 'Department': 'Unknown'}
df_filled = df.fillna(fill_values)

10. “DataFrame.groupby()”- 分组聚合

  • 根据一个或多个键对数据进行分组,然后对每个组应用聚合函数。
# 基本分组
grouped = df.groupby('Department')

# 计算每个部门的平均工资
avg_salary = grouped['Salary'].mean()

# 多列分组
multi_grouped = df.groupby(['Department', 'Gender'])

# 多种聚合操作
agg_result = multi_grouped['Salary'].agg(['mean', 'median', 'count'])

# 分组后应用多个函数
result = df.groupby('Department').agg({'Salary': ['mean', 'max'],'Age': 'min'})

11.“DataFrame.merge()”- 合并数据

  • 基于共同列合并两个DataFrame。
# 创建示例DataFrame
df1 = pd.DataFrame({
    'EmployeeID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie']})

df2 = pd.DataFrame({
    'EmployeeID': [1, 2, 4],
    'Salary': [70000, 80000, 90000]})

# 内连接(默认)
merged = pd.merge(df1, df2, on='EmployeeID')

# 左连接
left_merged = pd.merge(df1, df2, on='EmployeeID', how='left')

# 右连接
right_merged = pd.merge(df1, df2, on='EmployeeID', how='right')

# 外连接
outer_merged = pd.merge(df1, df2, on='EmployeeID', how='outer')

# 合并多个键
df3 = pd.DataFrame({
    'EmployeeID': [1, 1, 2],
    'Date': ['2022-01-01', '2022-02-01', '2022-01-15'],
    'Performance': [4.5, 4.7, 3.9]})

merged_multi = pd.merge(df1, df3, on='EmployeeID')

12.“DataFrame.apply()”- 应用自定义函数

  • 对DataFrame的行或列应用自定义函数。
# 创建示例DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Salary': [50000, 60000, 70000]})

# 对列应用函数 - 计算奖金(薪资的10%)
df['Bonus'] = df['Salary'].apply(lambda x: x * 0.1)

# 对行应用函数 - 创建全名
df['Full_Name'] = df.apply(lambda row: f"{row['Name']} ({row['Age']})", axis=1)

# 定义更复杂的函数
def calculate_tax(salary, age):
    if age > 30:
        return salary * 0.2
    else:
        return salary * 0.15

df['Tax'] = df.apply(lambda row: calculate_tax(row['Salary'], row['Age']), axis=1)

# 使用applymap对每个元素应用函数(适用于元素级操作)
df = df.applymap(lambda x: str(x).upper() if isinstance(x, str) else x)

额外技巧:处理大文件

  • 对于大型Excel文件,可以使用chunksize参数分块读取:
# 分块读取大文件
chunk_size = 10000  # 每次读取的行数
chunks = pd.read_excel('large_file.xlsx', chunksize=chunk_size)

# 处理每个块
for i, chunk in enumerate(chunks):
    # 处理数据
    processed_chunk = process_data(chunk)
    
    # 写入输出文件(追加模式)
    if i == 0:
        processed_chunk.to_excel('output.xlsx', index=False)
    else:
        with pd.ExcelWriter('output.xlsx', mode='a', engine='openpyxl') as writer:
            processed_chunk.to_excel(writer, sheet_name=f'Chunk_{i}', index=False)

这些函数组合使用可以高效完成Excel数据的读取、清洗、分析和输出任务。根据具体需求选择合适的函数和方法,可以显著提高数据处理效率

总结

以上就是Python高效处理Excel文件的12个Pandas函数总结的详细内容,更多关于Python处理Excel的Pandas函数的资料请关注脚本之家其它相关文章!

相关文章

  • Python中的字典合并与列表合并技巧

    Python中的字典合并与列表合并技巧

    这篇文章主要介绍了Python中的字典合并与列表合并技巧,下文围绕主题展开详细的内容介绍,具有一的的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Python PDF转化wolrd代码的写法小结

    Python PDF转化wolrd代码的写法小结

    将PDF文件转换为Word文档的过程通常需要使用一些外部库来实现,因为Python本身并不直接支持这种转换,这篇文章主要介绍了Python PDF转化wolrd代码的写法小结,需要的朋友可以参考下
    2024-06-06
  • Python开发中最常见的5大性能陷阱及避免方法

    Python开发中最常见的5大性能陷阱及避免方法

    Python因其简洁、易读的语法和丰富的生态系统而广受开发者喜爱,然而,这种简单背后隐藏着一些性能陷阱,尤其是对于新手来说,本文将深入剖析Python开发中最常见的5大性能陷阱,并给出具体的优化建议,需要的朋友可以参考下
    2026-03-03
  • python与QT联合的详细步骤记录

    python与QT联合的详细步骤记录

    这篇文章主要介绍了python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • Django框架orM与自定义SQL语句混合事务控制操作

    Django框架orM与自定义SQL语句混合事务控制操作

    这篇文章主要介绍了Django框架orM与自定义SQL语句混合事务控制操作,结合实例形式分析了同一个方法里面既有ORM又有自定义SQL 语句的情况下事务控制相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • Python中锁Lock的类型举例详解

    Python中锁Lock的类型举例详解

    这篇文章主要介绍了Python中锁Lock类型的相关资料,包括线程锁、进程锁、可重入锁、信号量、条件变量和事件,这些锁机制在多线程和多进程编程中用于同步访问共享资源,防止数据竞争和不一致问题,需要的朋友可以参考下
    2025-04-04
  • Flask 入门Web 微框架Hello Flask

    Flask 入门Web 微框架Hello Flask

    这篇文章主要介绍了 Flask 入门Web 微框架Hello Flask,Flask 是一个 Python 实现的 Web 微框架,之所以称之为微框架,是因为 Flask 核心简单且易于扩展,有两个主要依赖,WSGI工具集:Werkzeug和模板引擎:Jinja2,Flask 只保留了 Web 开发的核心功能,需要的朋友可以参考一下
    2021-11-11
  • Pycharm连接远程服务器并远程调试的全过程

    Pycharm连接远程服务器并远程调试的全过程

    PyCharm 是 JetBrains 开发的一款 Python 跨平台编辑器,下面这篇文章主要介绍了Pycharm连接远程服务器并远程调试的全过程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • Python while、for、生成器、列表推导等语句的执行效率测试

    Python while、for、生成器、列表推导等语句的执行效率测试

    这篇文章主要介绍了Python while、for、生成器、列表推导等语句的执行效率测试,本文分别用两段程序测算出了各语句的执行效率,然后总结了什么情况下使用什么语句优先使用的语句等,需要的朋友可以参考下
    2015-06-06
  • Python自定义异常的全面指南(入门到实践)

    Python自定义异常的全面指南(入门到实践)

    想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异常的价值所在——它让错误处理更精准、代码更易维护、调试更高效,本文将用最接地气的方式,带你掌握这个实用技能
    2025-08-08

最新评论