自己做的网站收费,外贸网站空间选择,制作空间主页网站,做网站需要哪些东西处理文件题头格式
部门名称 年度名称 季节名称 商品名称 商品代码 品牌名称 品类名称 颜色名称 商店名称 0M 1L 1XL 27 28 29 2XL 30 31 32 33 3XL 4XL 5XL 6XL S 均1.导入包
导入源
pip install openpyxl -i https://pypi.doubanio.com/simple
pip install pandas -i https…处理文件题头格式
部门名称 年度名称 季节名称 商品名称 商品代码 品牌名称 品类名称 颜色名称 商店名称 0M 1L 1XL 27 28 29 2XL 30 31 32 33 3XL 4XL 5XL 6XL S 均1.导入包
导入源
pip install openpyxl -i https://pypi.doubanio.com/simple
pip install pandas -i https://pypi.doubanio.com/simplefrom openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl import styles
from openpyxl.styles import *
import pandas as pd
import string
import re
import os2读入数据 filePath1 ./src/本周销售明细.xlsxfilePath2 ./src/上周销售明细.xlsx# 加载工作簿wb load_workbook(filePath1)# 获取sheet页,修改第一个sheet页面为name1 wb.sheetnames[0]ws1 wb[name1]ws1.title 销售明细wb.save(filePath1)# 销售明细df0 pd.read_excel(filePath1, sheet_name销售明细)合并两列数据
pd.merge(df1, #要合并的左表df2, #要合并的右表how outer,#合并的方式inner-内连接outer--全外连接left--左外连接right--右外连接外连接的时候没有数据的地方会填充为NaN默认为inner。onNone,
#默认为None合并的根据要写出两个DataFrame共有的列注意一定要是列名相同的否则会报错为list类型多个列或str一列
#如[name]或者name,默认None的时候merge会自动寻找相同列名的列。left_onNone,right_onNone,
#当两表连接的根据列名字不一样的时候用left on和right on列出两表连接的根据列数值类型和on一样默认None比如df1和df3合并就需要用到left_on name,right_on 名字。left_index False,right_index False,
#当进行连接的两表没有共同的根据列的时候可以使用行索引进行合并将left_index和right_index都设置为True即可默认为Falsesort True) #根据连接用的列进行排序默认为False数据预处理 file_path1 ./src/本周销售明细.xlsxfile_path2 ./src/上周销售明细.xlsx#修改工作簿表名为销售明细sheet_name_deal(file_path1)sheet_name_deal(file_path2)file_path3 ./src/本周销售明细精修.xlsxfile_path4 ./src/上周销售明细精修.xlsxcreat_excel(file_path3)creat_excel(file_path4)#计算合计index_list [部门名称, 年度名称, 季节名称, 商品代码, 商品名称, 品牌名称, 品类名称, 颜色名称, 商店名称]value_list [0M, 1L, 1XL, 27, 28, 29, 2XL, 30, 3XL, 4XL, 5XL, 6XL, S, 均, 合计]#读入数据df1 pd.read_excel(file_path1, sheet_name销售明细)df2 pd.read_excel(file_path2, sheet_name销售明细)# 求和需将文本的列指定为索引df1 df1.set_index(index_list)# df1.loc[按列求和] df1.apply(lambda x: x.sum())df1[合计] df1.apply(lambda x: x.sum(), axis1)# 求和,需将文本的列指定为索引df2 df2.set_index(index_list)# df1.loc[按列求和] df1.apply(lambda x: x.sum())df2[合计] df2.apply(lambda x: x.sum(), axis1)# 重置索引防止导出excel列索引时单元格合并df1 df1.reset_index()df2 df2.reset_index()# 将生成的工作表导入到程序中result_sheet pd.ExcelWriter(file_path3, engineopenpyxl) # 先定义要存入的文件名xxx然后分别存入xxx下不同的sheet# df1将0转变为空df1 df1.replace(0, )df1.to_excel(result_sheet, 销售明细, indexFalse, na_rep0, inf_rep0)# 这步不能省否则不生成文件result_sheet._save()# 将生成的工作表导入到程序中result_sheet pd.ExcelWriter(file_path4, engineopenpyxl) # 先定义要存入的文件名xxx然后分别存入xxx下不同的sheet# df1将0转变为空df2.to_excel(result_sheet, 销售明细, indexFalse, na_rep0, inf_rep0)# 这步不能省否则不生成文件result_sheet._save()完整代码
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl import styles
from openpyxl.styles import *
import pandas as pd
import string
import re
import os
# Press the green button in the gutter to run the script.def sheet_name_deal(file_path):wb load_workbook(file_path)# 获取sheet页,修改第一个sheet页面名为销售明细name1 wb.sheetnames[0]ws1 wb[name1]ws1.title 销售明细wb.save(file_path)def creat_excel(file_path):# 没有就创建if os.path.exists(file_path):print(文件已存在)print(file_path)else:# 创建一个新的 Excel 文件wb Workbook()wb.save(file_path)def pretreatment():file_path1 ./src/本周销售明细.xlsxfile_path2 ./src/上周销售明细.xlsx# 修改工作簿表名为销售明细sheet_name_deal(file_path1)sheet_name_deal(file_path2)file_path3 ./src/本周销售明细精修.xlsxfile_path4 ./src/上周销售明细精修.xlsxcreat_excel(file_path3)creat_excel(file_path4)# 计算合计index_list [部门名称, 年度名称, 季节名称, 商品代码, 商品名称, 品牌名称, 品类名称, 颜色名称, 商店名称]value_list [0M, 1L, 1XL, 27, 28, 29, 2XL, 30, 3XL, 4XL, 5XL, 6XL, S, 均, 合计]# 读入数据df1 pd.read_excel(file_path1, sheet_name销售明细)df2 pd.read_excel(file_path2, sheet_name销售明细)# 求和需将文本的列指定为索引df1 df1.set_index(index_list)# df1.loc[按列求和] df1.apply(lambda x: x.sum())df1[合计] df1.apply(lambda x: x.sum(), axis1)# 求和,需将文本的列指定为索引df2 df2.set_index(index_list)# df1.loc[按列求和] df1.apply(lambda x: x.sum())df2[合计] df2.apply(lambda x: x.sum(), axis1)# 重置索引防止导出excel列索引时单元格合并df1 df1.reset_index()df2 df2.reset_index()# 将生成的工作表导入到程序中result_sheet pd.ExcelWriter(file_path3, engineopenpyxl) # 先定义要存入的文件名xxx然后分别存入xxx下不同的sheet# df1将0转变为空df1 df1.replace(0, )df1.to_excel(result_sheet, 销售明细, indexFalse, na_rep0, inf_rep0)# 这步不能省否则不生成文件result_sheet._save()# 将生成的工作表导入到程序中result_sheet pd.ExcelWriter(file_path4, engineopenpyxl) # 先定义要存入的文件名xxx然后分别存入xxx下不同的sheet# df1将0转变为空df2.to_excel(result_sheet, 销售明细, indexFalse, na_rep0, inf_rep0)# 这步不能省否则不生成文件result_sheet._save()if __name__ __main__:# pretreatment()file_path3 ./src/本周销售明细精修.xlsxfile_path4 ./src/上周销售明细精修.xlsx# 销售明细df3 pd.read_excel(file_path3, sheet_name销售明细)df4 pd.read_excel(file_path4, sheet_name销售明细)# 部门周销df01 df3.pivot_table(index部门名称, values合计, aggfuncsum).copy()df01 df01.reset_index()df01.sort_values(by合计, axis0, ascendingFalse, inplaceTrue)# 客户周销环比index_list [部门名称, 商店名称]# 本周客户周销df021 df3.pivot_table(indexindex_list, values合计, aggfuncsum).copy()# 上周客户周销df022 df4.pivot_table(indexindex_list, values合计, aggfuncsum).copy()# 全连接# 重命名列df021[本周销量] df021.pop(合计)df022[上周销量] df022.pop(合计)df023 pd.merge(df021, df022, howouter, left_indexTrue, right_indexTrue)df023[销比] (df023[本周销量]-df023[上周销量])/df023[上周销量]df023 df023.reset_index()df023.sort_values(by销比, axis0, ascendingFalse, inplaceTrue)#品类周销环比#本周销量df031 df3.pivot_table(index品类名称, values合计, aggfuncsum).copy()#上周销量df032 df4.pivot_table(index品类名称, values合计, aggfuncsum).copy()# 全连接# 重命名列df031[本周销量] df031.pop(合计)df032[上周销量] df032.pop(合计)df033 pd.merge(df031, df032, howouter, left_indexTrue, right_indexTrue)df033[销比] (df033[本周销量] - df033[上周销量]) / df033[上周销量]df033 df033.reset_index()df033.sort_values(by销比, axis0, ascendingFalse, inplaceTrue)#季节周销df04 df3.pivot_table(index季节名称, values合计, aggfuncsum).copy()df04 df04.reset_index()df04.sort_values(by合计, axis0, ascendingFalse, inplaceTrue)#品类周销df05 df3.pivot_table(index品类名称, values合计, aggfuncsum).copy()df05 df05.reset_index()df05.sort_values(by合计, axis0, ascendingFalse, inplaceTrue)# 各部门品类销量前五index_list [部门名称, 商店名称]df060 df3.pivot_table(indexindex_list, values合计, aggfuncsum).copy()df060 df060.reset_index()df061 df060[df060[部门名称] 商品1部].nlargest(5, 合计)df062 df060[df060[部门名称] 商品3部].nlargest(5, 合计)df063 df060[df060[部门名称] 商品6部].nlargest(5, 合计)df064 df060[df060[部门名称] 直营4部].nlargest(5, 合计)df065 pd.concat([df061, df062, df063, df064])#删除第一列数字索引#df065 df065.drop(df065.columns[0], axis1)df065 df065.pivot_table(indexindex_list, values合计, aggfuncsum).copy()print(df065)#将行索引转化为列索引#df065.stack(level1)# 将生成的工作表导入到程序中file_path5 ./src/双周数据图表.xlsxcreat_excel(file_path5)result_sheet pd.ExcelWriter(file_path5, engineopenpyxl) # 先定义要存入的文件名xxx然后分别存入xxx下不同的sheet# df1将0转变为空#部门周销df01 df01.replace(0, )df01.to_excel(result_sheet, 部门周销, indexFalse, na_rep0, inf_rep0)# 客户周销环比#将NaN替换为空白df023 df023.fillna()df023.to_excel(result_sheet, 客户周销环比, indexFalse, na_rep0, inf_rep0)#品类周销环比# 将NaN替换为空白df033 df033.fillna()df033.to_excel(result_sheet, 品类周销环比, indexFalse, na_rep0, inf_rep0)# 季节周销df04 df04.replace(0, )df04.to_excel(result_sheet, 季节周销, indexFalse, na_rep0, inf_rep0)# 品类周销df05 df05.replace(0, )df05.to_excel(result_sheet, 品类周销, indexFalse, na_rep0, inf_rep0)# 品类部门周销排名df065 df05.replace(0, )df065.to_excel(result_sheet, 品类部门周销排名, indexTrue, na_rep0, inf_rep0)# 这步不能省否则不生成文件result_sheet._save()
# See PyCharm help at https://www.jetbrains.com/help/pycharm/