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)
相关推荐
老白干2 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
笨鸟先飞,勤能补拙8 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能9 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂9 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study10 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境11 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境11 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd12311 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy123931021611 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb0012 小时前
一个项目带你入门AI应用开发01
python