zoukankan      html  css  js  c++  java
  • 电商 商品数据分析 市场洞察 导出数据后 横线对比 python实现

    代码

    #-*- encoding:utf-8 -*-
    import  pandas  as pd
    from pandas import DataFrame
    import csv
    import os
    from openpyxl.utils import get_column_letter, column_index_from_string
    
    
    
    #原文:
    #https://www.cnblogs.com/SH170706/p/10450239.html
    #https://blog.csdn.net/wangxingfan316/article/details/79628463
    #https://blog.csdn.net/brucewong0516/article/details/79097909
    #https://blog.csdn.net/qq_38115310/article/details/98031934
    #https://blog.csdn.net/AuserBB/article/details/79269562
    #https://www.cnblogs.com/programmer-tlh/p/10461353.html
    
    
    
    
    # 获取列的索引
    def get_column_index(column_name):
        dic={
            '所属店铺' : 2,
            '日期' : 3,
            '交易金额' : 4,
            '访客人数' : 5,
            '支付人数' : 6,
            '支付转化率' : 7,
            '客单价' : 8,
            'uv价值' : 9,
        }
        return dic[column_name]
    
    
    
    # 获取一列值
    def get_column_value(file_name, column_name):
        with open(file_name, newline='', encoding='UTF-8') as csvfile:
            rows = csv.reader(csvfile)
            arr1 = []
            for row_index,row in enumerate(rows):
                if row_index==0:# 跳过首行,首行都是列名
                    continue            
                if isinstance(row,list):
                    if len(row)==10:                    
                        column_index = get_column_index(column_name)
                        value = str(row[column_index]).replace(',', '')
                        arr1.append(value)
                        #arr1.append(','.join(row).split(',')[column_index])# 这句代码是有bug的,单元格如果出现逗号就有问题!!!
            return arr1
    
    
    
    # 获取店铺名称
    def get_store_name(file_name):
        return get_column_value(file_name, '所属店铺')[0]
    
    
    
    # 创建sheet
    def create_sheet(column_name):
        path = "./files/"
        files = os.listdir(path)
        dic1 = {}
        # 生成首列
        arr_date = get_column_value(path+files[0], '日期')
        dic1['日期'] = arr_date
        # 遍历文件
        for filename in files:
            fullname = path + filename# excel的相对路径      
            # 生成数据列
            store_name = get_store_name(fullname)
            arr_value = get_column_value(fullname, column_name)
            dic1[store_name] = arr_value
        return dic1    
        
    
    
    
    # 生成excel
    writer = pd.ExcelWriter('1.xlsx')
    arr_column_names=['交易金额', '访客人数', '支付人数', '支付转化率', '客单价', 'uv价值']
    for item in arr_column_names:
        pd.DataFrame(create_sheet(item)).to_excel(writer, sheet_name=item, index=False)
    
    
    # 列固定宽度
    for index, item in enumerate(writer.sheets):
        max_column = writer.sheets[item].max_column
        for i in range(max_column):
            letter = get_column_letter(i+1)
            writer.sheets[item].column_dimensions[letter].width = 20
    
    
    writer.save()
    
    

    效果





    mark

    以后空了再编译成exe文件传上来

  • 相关阅读:
    PHP入门
    requests中text,content,json之间的区别
    有关pip报错的问题

    pycharm操作
    python selenium 相关操作
    python tkinter菜单
    初识Go
    Python _easygui详细版
    easygui _1
  • 原文地址:https://www.cnblogs.com/guxingy/p/13858766.html
Copyright © 2011-2022 走看看