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)
相关推荐
第九序言T7 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路8 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003968 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_8 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
钱工的门窗技术笔记8 小时前
室内极窄全景移门的支承路径与预留接口:轨道形式、型材壁厚口径与验收边界
物联网·架构·数据分析
quantdash_cc9 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl9 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang10 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真10 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn11 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github