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)
相关推荐
CoderIsArt10 分钟前
Python:一个挑选黑色棋盘的程序
python·计算机视觉
sagima_sdu28 分钟前
Win11 Python3.10 安装pytorch3d
人工智能·pytorch·python
Papicatch1 小时前
TensorFlow开源项目
人工智能·python·学习·开源·tensorflow
Yingjun Mo1 小时前
train_encoder_decoder.py
python
IT数据小能手1 小时前
如何在Python中实现一个简单的爬虫程序
开发语言·爬虫·python
geovindu1 小时前
python: create Envircomnet in Visual Studio Code 创建虚拟环境
ide·vscode·python
互联网杂货铺1 小时前
【软件测试】单元测试、系统测试、集成测试详解
自动化测试·软件测试·python·程序人生·职场和发展·单元测试·集成测试
2401_858120261 小时前
探索Anaconda Cloud:Conda的云端宝库
linux·python·conda
VX_DZbishe3 小时前
springboot旅游管理系统-计算机毕业设计源码16021
java·spring boot·python·servlet·django·flask·php
青春之我_XP3 小时前
【知识图谱系列】Neo4j使用Py2neo与python进行链接
python·知识图谱·neo4j