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\260\206\345\233\233\344\270\252\346\225\260\346\215\256\351\233\206\350\241\250\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\260\206\345\233\233\344\270\252\346\225\260\346\215\256\351\233\206\350\241\250\345\220\210\345\271\266" new file mode 100644 index 0000000000000000000000000000000000000000..622953548d800efe0cd8fe1fa1edb206053afeab --- /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\260\206\345\233\233\344\270\252\346\225\260\346\215\256\351\233\206\350\241\250\345\220\210\345\271\266" @@ -0,0 +1,69 @@ +#将题目给的四个表进行合并以便于进行数据的分析等操作 +# -*- 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}") 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..08a37719973e82ef33e54c3be43c61735e7fe59f --- /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!") \ 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/\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..41cda643ab4f19175f8694eb7676ac8a81c106b5 --- /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,75 @@ +问题三处理数据 +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!") \ 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\346\210\252\345\233\276\346\210\226\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\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\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\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..4a31372284b904de1dc9fd630a3c3da844bf5503 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\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 diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/ SE2102002/\351\241\271\347\233\256\350\257\264\346\230\216/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/ SE2102002/\351\241\271\347\233\256\350\257\264\346\230\216/.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\350\257\264\346\230\216/\351\241\271\347\233\256\350\257\264\346\230\216" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/ SE2102002/\351\241\271\347\233\256\350\257\264\346\230\216/\351\241\271\347\233\256\350\257\264\346\230\216" new file mode 100644 index 0000000000000000000000000000000000000000..19514850996371eee64fc1e41c15225a9ca91c06 --- /dev/null +++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/ SE2102002/\351\241\271\347\233\256\350\257\264\346\230\216/\351\241\271\347\233\256\350\257\264\346\230\216" @@ -0,0 +1,12 @@ +1.项目数据 +我们这个项目是关于蔬菜的进货的数据集 +变量分别有日期,扫码销售时间,单品编码,销量(千克),销售单价(元/千克) 是否打折销,分类名称,批发价格(元/千克) ,单品名称,损耗率(%),销售净利润率,销售额,总成本,总利润,成本利润率,成本加成价,销量(千克),销售单价(元/千克) ,分类名称,批发价格(元/千克) 单品名称的变量 +其中主要的是销量、销售额、销售净利润率、总利润、成本加成价、损耗率 +与其相关联的横轴主要是日期、单品编码 + +2.可视化大屏 +可视化大屏我们选用的是有关于蔬菜进货的模板并加以改进 + +3.项目代码 +项目代码分别是将源数据 附件一二三四进行预处理后合并 +其中为了能够提取特征,还算出了销量、销售额、销售净利润率、总利润、成本加成价等变量 \ No newline at end of file