diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\345\233\233\344\270\252\350\241\250\350\277\233\350\241\214\345\220\210\345\271\266" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\345\233\233\344\270\252\350\241\250\350\277\233\350\241\214\345\220\210\345\271\266" new file mode 100644 index 0000000000000000000000000000000000000000..51ba68e87d811423167812607692169c2abc6258 --- /dev/null +++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\345\233\233\344\270\252\350\241\250\350\277\233\350\241\214\345\220\210\345\271\266" @@ -0,0 +1,70 @@ +#将题目给的四个表进行合并以便于进行数据的分析等操作 +# -*- coding: utf-8 -*- +""" +Created on Thu Sep 7 20:21:15 2023 + +@author: 86173 +""" + +import pandas as pd +import numpy as np + +#1 +# 读取CSV文件 +file_path1 = r'C:\Users\86173\Desktop\c\附件1.xlsx' +df1 = pd.read_excel(file_path1) + +file_path2 = r'C:\Users\86173\Desktop\c\附件2.xlsx' +df2 = pd.read_excel(file_path2) + +file_path3 = r'C:\Users\86173\Desktop\c\附件3.xlsx' +df3 = pd.read_excel(file_path3) + +file_path4 = r'C:\Users\86173\Desktop\c\工作簿1.xlsx' +df4 = pd.read_excel(file_path4) + + +# 删除包含退货的行,假设销售类型列的名称为 "Sales Type" +df2 = df2[df2['销售类型'] != '退货'] + +#2 + +df2['销售量']=df2['销量(千克)']*df2['销售单价(元/千克)'] + + +#3合并四个表 + +#合并表一二 + + +# 使用 merge 将两个 DataFrame 连接在一起,基于单品编码列进行连接 +mid = df2.merge(df1[['单品编码', '分类名称']], on='单品编码', how='left') + +# 如果需要,你可以填充缺失的分类名称为默认值,例如 "未分类" +mid['分类名称'].fillna('未分类', inplace=True) + + + +#合并表一二三 + +mid2 = mid.merge(df3[['单品编码', '日期', '批发价格(元/千克)']], on=['单品编码', '日期'], how='left') + +# 如果需要,你可以填充缺失的分类名称为默认值,例如 "未添加" +mid2['批发价格(元/千克)'].fillna('未添加', inplace=True) + + +# 删除销售类型列 +mid2.drop(columns=['销售类型'], inplace=True) + +mid2=mid2.merge(df4[['单品编码','单品名称','损耗率(%)']], on='单品编码', how='left') +mid2['日期'] = mid2['日期'].dt.date + +# 定义输出文件路径 +output_file_path = r'C:\Users\86173\Desktop\合成表和处理退货后的数据.xlsx' + +# 将合并后的 DataFrame mid 保存为 Excel 文件 +mid2.to_excel(output_file_path, index=False) + +# 输出成功消息 +print(f"合成表和处理退货后的数据已保存到 {output_file_path}") +四个表进行合并 \ No newline at end of file diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\347\256\227\345\207\272\346\210\220\346\234\254\345\212\240\346\210\220\344\273\267" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\347\256\227\345\207\272\346\210\220\346\234\254\345\212\240\346\210\220\344\273\267" new file mode 100644 index 0000000000000000000000000000000000000000..ebe15541f96c13ea3b4d1c527af5842d4f6e3b8c --- /dev/null +++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\347\256\227\345\207\272\346\210\220\346\234\254\345\212\240\346\210\220\344\273\267" @@ -0,0 +1,36 @@ +#算出成本加成价并存放在问题二.xlsx中 +import pandas as pd + +# 读取Excel文件 +file_path = r'C:\Users\86173\Desktop\合成表和处理退货后的数据 - 副本.xlsx' +df = pd.read_excel(file_path) + +df=df[df['分类名称']=='花菜类'] +# 将日期列转换为日期格式 +df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d') +df['总成本']=df['批发价格(元/千克)']*(1+df['损耗率(%)']/100) + +# 使用groupby按日期分组,然后使用agg计算每一天 +df1 = df.groupby('日期').agg({'销售额': 'sum'}).reset_index() +df2 = df.groupby('日期').agg({'总成本': 'sum'}).reset_index() +df3=df1.merge(df2,on='日期') + +df3['总利润']=df3['销售额']-df3['总成本'] +df3['成本利润率']=df3['总利润']/df3['总成本'] + + +df4=df.merge(df3,on='日期') + +df4['成本加成价']=df4['批发价格(元/千克)']*(1+df4['成本利润率']) + +df5 = df4.groupby('日期').agg({'销量(千克)': 'sum'}).reset_index() +df6 = df4.groupby('日期').agg({'成本加成价': 'mean'}).reset_index() + +df7=df5.merge(df6,on='日期') +print(df7) + +df7['日期'] = df7['日期'].dt.date +# 将DataFrame保存到Excel文件 +output_file_path = r'C:\Users\86173\Desktop\问题二.xlsx' +df7.to_excel(output_file_path, index=False) # index=False表示不保存行索引 +print("done!") diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\350\216\267\345\217\226\351\224\200\351\207\217\343\200\201\351\224\200\345\224\256\351\242\235\343\200\201\351\224\200\345\224\256\345\207\200\345\210\251\346\266\246\347\216\207\343\200\201\346\200\273\345\210\251\346\266\246" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\350\216\267\345\217\226\351\224\200\351\207\217\343\200\201\351\224\200\345\224\256\351\242\235\343\200\201\351\224\200\345\224\256\345\207\200\345\210\251\346\266\246\347\216\207\343\200\201\346\200\273\345\210\251\346\266\246" new file mode 100644 index 0000000000000000000000000000000000000000..0db4c1f6d2f08df3db7acc902c9f69af619af7f2 --- /dev/null +++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\344\273\243\347\240\201/\350\216\267\345\217\226\351\224\200\351\207\217\343\200\201\351\224\200\345\224\256\351\242\235\343\200\201\351\224\200\345\224\256\345\207\200\345\210\251\346\266\246\347\216\207\343\200\201\346\200\273\345\210\251\346\266\246" @@ -0,0 +1,76 @@ +问题三处理数据 +import pandas as pd + +file_path = r'C:\Users\86173\Desktop\合成表和处理退货后的数据.xlsx' +data = pd.read_excel(file_path) + +# 将日期列转换为日期时间类型 +data['日期'] = pd.to_datetime(data['日期'], format='%Y-%m-%d') + +# 创建日期范围 +start_date = pd.to_datetime('2023-06-24', format='%Y-%m-%d') +end_date = pd.to_datetime('2023-06-30', format='%Y-%m-%d') + +# 使用条件筛选提取指定日期范围内的数据 +selected_data = data[(data['日期'] >= start_date) & (data['日期'] <= end_date)] + +# 按单品编码分组,同时计算销售额总和和销量(千克)总和 +grouped_data = selected_data.groupby('单品编码').agg({'销售额': 'sum', '销量(千克)': 'sum'}).reset_index() + +# 按销售额总和升序排序 +sorted_data_sales = grouped_data.sort_values(by='销售额', ascending=True) + +# 获取排名前十的单品编码 +bottom_10_data_sales = sorted_data_sales.iloc[:10] + +# 按销量总和升序排序 +sorted_data_quantity = grouped_data.sort_values(by='销量(千克)', ascending=True) + +# 获取排名前十的单品编码 +bottom_10_data_quantity = sorted_data_quantity.iloc[:10] + +# 去除data中排名前十的单品编码 +selected_data = selected_data[~selected_data['单品编码'].isin(bottom_10_data_sales['单品编码'])] +# 进一步去除销量最少的十个单品编码 +selected_data = selected_data[~selected_data['单品编码'].isin(bottom_10_data_quantity['单品编码'])] + +# 计算销售净利润率 +selected_data['销售净利润率'] = ((selected_data['销售单价(元/千克)'] - selected_data['批发价格(元/千克)']) / selected_data['批发价格(元/千克)']) * 100 + +# 按单品编码分组,计算销售净利润率总和 +grouped_profit = selected_data.groupby('单品编码')['销售净利润率'].sum().reset_index() + +# 按销售净利润率升序排序 +sorted_profit = grouped_profit.sort_values(by='销售净利润率', ascending=True) + +# 获取排名前七的单品编码 +bottom_6_data_profit = sorted_profit.iloc[:6] + +# 从selected_data中去除销售净利润率最低的七个单品编码 +selected_data = selected_data[~selected_data['单品编码'].isin(bottom_6_data_profit['单品编码'])] + +df=selected_data + +# 将日期列转换为日期格式 +df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d') +df['总成本']=df['批发价格(元/千克)']*(1+df['损耗率(%)']/100)*df['销量(千克)'] + +# 使用groupby按日期分组,然后使用agg计算每一天 +df1 = df.groupby('日期').agg({'销售额': 'sum'}).reset_index() +df2 = df.groupby('日期').agg({'总成本': 'sum'}).reset_index() +df3=df1.merge(df2,on='日期') + +df3['总利润']=df3['销售额']-df3['总成本'] +df3['成本利润率']=df3['总利润']/df3['总成本'] + +df4=df.merge(df3,on='日期') + +df4['成本加成价']=df4['批发价格(元/千克)']*(1+df4['成本利润率']) +df4['日期'] = df4['日期'].dt.date + +df4=df4.merge(data,on=['单品编码','扫码销售时间']) +# 将筛选后的数据保存到Excel文件 +output_file_path = r'C:\Users\86173\Desktop\问题三数据筛选后.xlsx' +df4.to_excel(output_file_path, index=False) # index=False表示不保存行索引 +print("done!") + diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\210\252\345\233\276\346\210\226\350\200\205\345\275\225\345\261\217/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\210\252\345\233\276\346\210\226\350\200\205\345\275\225\345\261\217/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\210\252\345\233\276\346\210\226\350\200\205\345\275\225\345\261\217/\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217.png" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\210\252\345\233\276\346\210\226\350\200\205\345\275\225\345\261\217/\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217.png" new file mode 100644 index 0000000000000000000000000000000000000000..a294c1db13ee08b73853a1f6b6c6287d78385a1d Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\210\252\345\233\276\346\210\226\350\200\205\345\275\225\345\261\217/\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217.png" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\345\244\204\347\220\206\345\220\216\347\232\204\346\225\260\346\215\256.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\345\244\204\347\220\206\345\220\216\347\232\204\346\225\260\346\215\256.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..506683162c2c5c469bc4b39b3cfadf3b400dd98e Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\345\244\204\347\220\206\345\220\216\347\232\204\346\225\260\346\215\256.xlsx" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\346\211\200\346\234\211\347\232\204\345\217\230\351\207\217\347\232\204\346\200\273\350\241\250.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\346\211\200\346\234\211\347\232\204\345\217\230\351\207\217\347\232\204\346\200\273\350\241\250.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..4cdbb1f644e3d9e9a19d60b06bf6f978642e75b1 Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\346\211\200\346\234\211\347\232\204\345\217\230\351\207\217\347\232\204\346\200\273\350\241\250.xlsx" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2661.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2661.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..801e84b736c586837a642aa256abbc044c5e5c0b Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2661.xlsx" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2662.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2662.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..060d0a3b47dd120dddf6aeea37773a5bbf54477f Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2662.xlsx" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2663.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2663.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..ebef9ef868c35d8867aaeb16dd0a1cfd1ee954eb Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2663.xlsx" differ diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2664.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2664.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..10264863a4c8213d9e4a007c663e5d7d6108e4d9 Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/SE2102002/\351\241\271\347\233\256\346\225\260\346\215\256/\351\231\204\344\273\2664.xlsx" differ