Pandas实用Excel数据汇总

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

1. Series

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

2. DataFrame

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

主要功能与操作

  • 数据读写 : Pandas 提供了 read_csv, read_excel, to_csv, to_excel 等函数,方便读写各种格式的文件。
  • 数据清洗 : 包括缺失值处理(如使用 dropna, fillna 函数),数据类型转换(使用 astype 函数),数据重命名(使用 rename 函数)等。
  • 数据选择与过滤: 使用布尔索引、条件表达式、标签选取等方式从数据集中提取所需的数据子集。
  • 数据聚合与分组 : 利用 groupby 函数进行数据分组,并配合 agg, apply 等方法进行聚合运算,如求和、平均、最大值等。
  • 数据合并与重塑 : 可以通过 concat, merge, join 进行数据集的合并;使用 pivot, melt 等函数进行数据重塑,以适应不同的分析需求。
  • 时间序列处理: 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)
相关推荐
蹦蹦跳跳真可爱5894 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij4 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien4 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫5 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_12205 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输7 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩7 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩7 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm
叶 落7 小时前
计算阶梯电费
python·python 基础·python 入门
Python大数据分析@8 小时前
Origin、MATLAB、Python 用于科研作图,哪个最好?
开发语言·python·matlab