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

Written by

in

文章目录
  • 读取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行
  • 将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)
  • 高效处理包含多个工作表的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}
  • 快速查看DataFrame的前几行数据。 # 查看前5行(默认) print(df.head()) # 查看前10行 print(df.head(10))
  • 快速查看DataFrame的后几行数据。 # 查看后5行(默认) print(df.tail()) # 查看后3行 print(df.tail(3))
  • 获取DataFrame的摘要信息,包括列数据类型和内存使用情况。 df.info()
  • 生成描述性统计信息,包括计数、均值、标准差、最小值、四分位数和最大值。 # 对所有数值列生成统计信息 print(df.describe()) # 对特定列生成统计信息 print(df[‘Age’].describe()) # 包含非数值列 print(df.describe(include=’all’))
  • 删除包含缺失值的行或列。 # 删除包含任何缺失值的行 df_clean = df.dropna() # 删除包含任何缺失值的列 df_clean = df.dropna(axis=1) # 只删除全为缺失值的行 df_clean = df.dropna(how=’all’) # 删除在特定列中包含缺失值的行 df_clean = df.dropna(subset=[‘Age’, ‘Salary’])
  • 用指定值或方法填充缺失值。 # 用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)
  • 根据一个或多个键对数据进行分组,然后对每个组应用聚合函数。 # 基本分组 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’})
  • 基于共同列合并两个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’)
  • 对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中处理Excel数据的方法对比(pandas和openpyxl) Python Pandas高效处理Excel数据完整指南 python使用xlsx和pandas处理Excel表格的操作步骤 python pandas处理excel表格数据的常用方法总结 Python Pandas读取Excel日期数据的异常处理方法
  • 目录
    • 1.“pd.read_excel()”- 读取Excel文件
    • 2.“DataFrame.to_excel()”- 写入Excel文件
    • 3. “pd.ExcelFile”- 处理多个工作表
    • 4.“DataFrame.head()”- 查看前几行
    • 5.“DataFrame.tail()”- 查看后几行
    • 6.“DataFrame.info()”- 查看数据概览
    • 7. “DataFrame.describe()”- 统计摘要
    • 8. “DataFrame.dropna()”- 处理缺失值
    • 9. “DataFrame.fillna()”- 填充缺失值
    • 10. “DataFrame.groupby()”- 分组聚合
    • 11.“DataFrame.merge()”- 合并数据
    • 12.“DataFrame.apply()”- 应用自定义函数
    • 额外技巧:处理大文件
    • 总结

    • 读取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行
    

    • 将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)
    

    • 高效处理包含多个工作表的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}
    

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

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

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

    • 生成描述性统计信息,包括计数、均值、标准差、最小值、四分位数和最大值。
    # 对所有数值列生成统计信息
    print(df.describe())
    
    # 对特定列生成统计信息
    print(df['Age'].describe())
    
    # 包含非数值列
    print(df.describe(include='all'))
    

    • 删除包含缺失值的行或列。
    # 删除包含任何缺失值的行
    df_clean = df.dropna()
    
    # 删除包含任何缺失值的列
    df_clean = df.dropna(axis=1)
    
    # 只删除全为缺失值的行
    df_clean = df.dropna(how='all')
    
    # 删除在特定列中包含缺失值的行
    df_clean = df.dropna(subset=['Age', 'Salary'])
    

    • 用指定值或方法填充缺失值。
    # 用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)
    

    • 根据一个或多个键对数据进行分组,然后对每个组应用聚合函数。
    # 基本分组
    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'})
    

    • 基于共同列合并两个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')
    

    • 对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中处理Excel数据的方法对比(pandas和openpyxl)
    • Python Pandas高效处理Excel数据完整指南
    • python使用xlsx和pandas处理Excel表格的操作步骤
    • python pandas处理excel表格数据的常用方法总结
    • Python Pandas读取Excel日期数据的异常处理方法

    站内搜索