当前位置: 首页 > article >正文

数据分析Python转置文档代码

做数据分析的时候,我们经常会遇见实际表和数据库表之间的差别,运营为了方便会将第一列作为国家,第一行是时间,或者反过来,如果人手CV,会累得半死,所以可以借助python来进行转置。

这个里进行改良,先选择文件,然后输出,而替代一开始的直接对某个excel操作。还针对不同的日期进行个性化处理。

import pandas as pd
from tkinter import Tk
from tkinter.filedialog import askopenfilename
import os
from datetime import datetime

def transpose_excel_to_db():
    # 弹出文件选择框选择输入文件
    Tk().withdraw()  # 隐藏主窗口
    input_file = askopenfilename(title="选择Excel文件", filetypes=[("Excel文件", "*.xlsx;*.xls")])
    
    if not input_file:
        print("未选择文件,程序退出。")
        return
    
    # 自动生成输出文件名
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_file = os.path.splitext(input_file)[0] + f"_transposed_{timestamp}.xlsx"

    # 读取Excel文件
    df = pd.read_excel(input_file, header=None)

    # 提取第一行作为列名
    columns = df.iloc[0, 1:]
    
    # 提取第一列作为产品名
    product_names = df.iloc[1:, 0]

    # 提取数据部分并设置列名
    data = df.iloc[1:, 1:]
    data.columns = columns

    # 重命名行索引为产品名
    data.index = product_names

    # 转置成数据库表格式
    db_table = data.reset_index().melt(id_vars=product_names.name, var_name="日期", value_name="销量")

    # 重命名列名为硬编码值
    db_table.columns = ["产品名", "日期", "销量"]

    # 新增“大促日”列
    def extract_promotion_day(date):
        if "双十一" in date:
            return date[:3]  # 如果包含“双十一”,取前3位
        return date[:2]  # 否则取前2位

    db_table["大促日"] = db_table["日期"].apply(extract_promotion_day)

    # 更新“日期”列为去掉“大促日”的内容
    db_table["日期"] = db_table.apply(lambda row: row["日期"][len(row["大促日"]):], axis=1)

    # 调整列的顺序,将“日期”放在第一列
    db_table = db_table[["日期", "大促日", "产品名", "销量"]]

    # 保存为新的Excel文件
    db_table.to_excel(output_file, index=False)

    print(f"转置后的表格已保存到 {output_file}")

# 示例用法
if __name__ == "__main__":
    transpose_excel_to_db()


http://www.kler.cn/a/429646.html

相关文章:

  • kafka原理和实践
  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg
  • 如何在Jupyter中快速切换Anaconda里不同的虚拟环境
  • 智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)
  • 【算法篇】前缀和
  • 【51项目】51单片机自制小霸王游戏机
  • 分布式搜索引擎Elasticsearch(三)
  • 告别充电焦虑:移动充电机器人的革命性解决方案
  • 3D 目标检测:从萌芽到前沿的技术演进之路
  • linux间隔记录服务器的CPU占用率TOP10的进程
  • 使用Nexus3搭建Maven私有镜像仓库
  • Burp(8)-验证码爆破插件
  • 基于FPGA的PI环调节电压
  • Xcode编译的时候运行python脚本
  • 计算机网络——三大交换技术
  • 准确率99.9%的离线IP地址定位库 ip2region - python 示例
  • GauHuman阅读笔记【3D Human Modelling】
  • 知从科技闪耀汽车智能底盘大会:共探软件安全新篇章
  • ElasticSearch常见面试题汇总
  • 《maven 常用知识详解 3:聚合与继承》
  • Blender均匀放缩模型
  • 第8章:CSS预处理器 --[CSS零基础入门]
  • vue3 实现音频转文字组件
  • 深入理解 React 状态管理:useState 和 useReducer
  • java工具包介绍
  • FCOS: Fully Convolutional One-Stage Object Detection——全卷积一阶段目标检测