Pandas实用Excel数据汇总

发布于:2024-06-28 ⋅ 阅读:(13) ⋅ 点赞:(0)

 

Pandas 是一个开源的 Python 库,由 Wes McKinney 开发,专门用于高效地处理和分析数据,无论是小规模的数据实验还是大规模的数据处理任务。它构建在 NumPy 之上,这意味着它利用了 NumPy 的高性能数组计算能力。Pandas 的核心数据结构有两个:Series 和 DataFrame,它们是进行数据操作的基础。

1. Series

  • 定义: Series 是一个一维的数据结构,可以看作是带有标签的数组。它能够存储任何数据类型(整数、字符串、浮点数等),并且每个元素都有一个对应的索引。
  • 应用场景: Series 适合于处理一维数据,比如列表或字典类型的数据。它可以用来存储股票价格、温度记录等单一变量的数据系列。

2. DataFrame

  • 定义: DataFrame 是一个二维的数据结构,相当于一个表格,包含有一列或多列 Series。每一列可以是不同的数据类型,列有其对应的列名,行也有自己的索引。
  • 应用场景: DataFrame 是 Pandas 最重要的数据结构,适用于处理多维度数据,如电子表格或SQL数据库中的表格数据。它非常适合于处理和分析具有不同特征的数据集,如统计学分析、金融数据处理、机器学习的数据预处理等。

主要功能与操作

  • 数据读写: Pandas 提供了 read_csvread_excelto_csvto_excel 等函数,方便读写各种格式的文件。
  • 数据清洗: 包括缺失值处理(如使用 dropnafillna 函数),数据类型转换(使用 astype 函数),数据重命名(使用 rename 函数)等。
  • 数据选择与过滤: 使用布尔索引、条件表达式、标签选取等方式从数据集中提取所需的数据子集。
  • 数据聚合与分组: 利用 groupby 函数进行数据分组,并配合 aggapply 等方法进行聚合运算,如求和、平均、最大值等。
  • 数据合并与重塑: 可以通过 concatmergejoin 进行数据集的合并;使用 pivotmelt 等函数进行数据重塑,以适应不同的分析需求。
  • 时间序列处理: Pandas 支持强大且灵活的时间序列功能,包括日期时间数据的解析、重采样、移动窗口统计等。
  • 数据可视化: 虽然 Pandas 本身不直接提供图形绘制功能,但它与 Matplotlib、Seaborn 等库无缝集成,使得数据可视化变得简单。

Pandas 提供了一套完整的工具集,使得数据清洗、准备、分析和可视化工作变得更加高效。它不仅在学术研究中被广泛应用,在数据科学、金融分析、市场研究、Web开发等领域也极为重要。掌握 Pandas,可以极大提高数据分析的效率和质量。

以下代码简单的实现了EXCEL中数据的按地市汇总,并且可以再按专业汇总

import pandas as pd

def generate_detail_and_summary_per_city(input_file_path, output_folder="c:\city_summaries"):
    # 加载Excel文件
    df = pd.read_excel(input_file_path)
    
    # 获取唯一地市列表
    cities = df['地市'].unique()
    
    # 确保输出文件夹存在
    import os
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    for city in cities:
        # 为当前地市筛选数据
        city_df = df[df['地市'] == city]
        
        # 计算当前地市的总和
        city_total_sum = city_df['实付'].sum()
        
        # 按专业分组求和,准备专业汇总行
        city_grouped_sum = city_df.groupby('专业')['实付'].sum().reset_index()
        city_grouped_sum.columns = ['专业', '专业实付总和']
        
        # 如果原始数据中没有该地市数据,跳过避免空DataFrame写入
        if city_df.empty:
            continue
        
        # 将总和行追加到原始数据的末尾,作为汇总行
        summary_row = pd.DataFrame({
            '月份': [0],
            '地市': [0],
            '专业': [0],
            '公司': [0],
            '包年': [0],
            '按次': [0],
            '发电': [0],
            '巡检': [0],
            '实付': [city_total_sum]
        }, index=[0])
        city_df_with_summary = pd.concat([city_df, summary_row], ignore_index=True)
        
        # 添加按专业汇总的数据到DataFrame末尾
        city_df_with_summary = pd.concat([city_df_with_summary, city_grouped_sum], ignore_index=True)
        
        # 写入新的Excel文件,每个地市一个文件
        output_file_path = os.path.join(output_folder, f"{city}_代维费详情及汇总.xlsx")
        city_df_with_summary.to_excel(output_file_path, index=False)
        print(f"为地市'{city}'生成的详情及汇总数据已保存至'{output_file_path}'.")

# 使用变量文件路径调用函数

generate_detail_and_summary_per_city(input_file_path)


网站公告

今日签到

点亮在社区的每一天
去签到