目录
题目
任务 1 数据预处理与统计
任务 2 数据分析与可视化
代码展示
任务一
任务二
题目
任务 1 数据预处理与统计
任务 1.1 对数据作必要的预处理,在报告中列出处理步骤,将处理后的结 国保存为“task1_1.csv”。
任务 1.2 统计每个大类商品的销售金额,将结果保存为“task1_2.csv”。
任务 1.3 统计每个中类商品的促销销售金额和非促销销售金额,将结果保 存为“task1_3.csv”。
任务 1.4 统计生鲜类产品和一般产品的每周销售金额,将结果保存为 “task1_4.csv”。
任务 1.5 统计每位顾客每月的消费额及消费天数,将结果保存为 “task1_5.csv”,并在报告中列出用户编号为 0-10 的结果。
任务 2 数据分析与可视化
任务 2.1 绘制生鲜类商品和一般商品每天销售金额的折线图,并分析比较 两类产品的销售状况。
任务 2.2 按月绘制各大类商品销售金额的占比饼图,并分析其销售状况。
任务 2.3 绘制促销商品和非促销商品销售金额的周环比增长率柱状图。
代码展示
任务一
代码展示:
#任务1.1
import pandas as pd
import numpy as np
data=pd.read_csv('D:\\桌面\\2019A题\\附件.csv',engine='python',encoding='gbk')
data.pop('规格型号')
data.pop('单位')
data.pop('销售月份')
data.pop('商品编码')
data.index=data['顾客编号']
data.pop('顾客编号')
data.销售日期=pd.to_datetime(data['销售日期'],format='%Y%m%d',errors='coerce')
data.to_csv('D:\\桌面\\2019A题\\task1_1.csv',encoding='utf-8-sig')#任务1.2
data12=pd.read_csv('D:\\桌面\\2019A题\\task1_1.csv',engine='python')
df12=data12.groupby('大类名称').sum('销售金额')
sales=df12['销售金额']
sales.to_csv('D:\\桌面\\2019A题\\task1_2.csv',encoding='utf-8-sig')#任务1.3
df13=data12.groupby(['中类名称','是否促销']).sum('销售金额')
sales13=df13['销售金额']
sales13.to_csv('D:\\桌面\\2019A题\\task1_3.csv',encoding='utf-8-sig')#任务1.4
df14=data12.groupby('商品类型')
data14=df14.get_group('生鲜')
data141=df14.get_group('一般商品')
data141=data141.groupby('销售日期').sum('销售金额')
data14=data14.groupby('销售日期').sum('销售金额')
x=len(data14)
fresh=[]
ord=[]
sum14=0
sum141=0
lst14=data14['销售金额'].tolist()
lst141=data141['销售金额'].tolist()
for i in range(0,x):sum14=sum14+lst14[i]sum141=sum141+lst141[i]if (i+1)%7==0:fresh.append(sum14)ord.append(sum141)sum14=0sum141=0
data14=pd.DataFrame({'生鲜':fresh,'一般商品':ord},index=range(1,len(fresh)+1))
data14.to_csv('D:\\桌面\\2019A题\\task1_4.csv',encoding='utf-8-sig')#任务1.5
data12.销售日期=pd.to_datetime(data12['销售日期'],format='%Y/%m/%d')
data12['月']=data12['销售日期'].dt.month
df15=data12.groupby('月')
data15={}
for i in range(1,5):df151=df15.get_group(i)con = df151.groupby('顾客编号').sum('销售金额')day = df151.groupby(['顾客编号','销售日期']).size()day=day.groupby('顾客编号').size()data15['{:d}月消费天数'.format(i)] = daydata15['{:d}月消费额'.format(i)]=con['销售金额']data15['{:d}月消费天数'.format(i)]=day
data15=pd.DataFrame(data15)
data15=data15.fillna(value=0)
data15.to_csv('D:\\桌面\\2019A题\\task1_5.csv',encoding='utf-8-sig')
任务二
代码展示
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=["SimHei"]
plt.rcParams['axes.unicode_minus']=False#任务2.1
data12=pd.read_csv('D:\\桌面\\2019A题\\task1_1.csv',engine='python')
df14=data12.groupby('商品类型')
data14=df14.get_group('生鲜')
data141=df14.get_group('一般商品')
data141=data141.groupby('销售日期').sum('销售金额')
data14=data14.groupby('销售日期').sum('销售金额')
plt.plot(data14.index,data14['销售金额'],label='生鲜')
plt.plot(data141.index,data141['销售金额'],label='一般商品')
plt.xticks(range(0,len(data14),5),rotation=90)
plt.title('生鲜类商品和一般商品每天销售金额折线图')
plt.legend()
plt.show()#任务2.2
data12.销售日期=pd.to_datetime(data12['销售日期'],format='%Y/%m/%d')
data12['月']=data12['销售日期'].dt.month
data22=data12.groupby('月')
for i in range(1,5):df22=data22.get_group(i)df22=df22.groupby('大类名称').sum('销售金额')patches,l_text,p_text=plt.pie(df22['销售金额'],labels=df22.index,autopct='%.2f%%',textprops={'size':6},startangle=90)plt.title('各大类商品{:d}销售金额的占比饼图'.format(i))for t in p_text:t.set_size(5)for i in l_text:t.set_size(9)plt.show()#任务2.3
data12=data12.groupby('是否促销')
def promotion(str):datay = data12.get_group(str)datay=datay.groupby('销售日期').sum('销售金额')sale23=datay['销售金额'].tolist()x=len(datay)sum=0sumy=[]rate=[]for i in range(0,x):sum=sum+sale23[i]if (i+1)%7==0:sumy.append(sum)sum=0for i in range(1,len(sumy)):rt=(sumy[i]-sumy[i-1])/sumy[i-1]rate.append(rt)x=[i for i in range(1,len(rate)+1) ]if str=='是':label='促销'else:label='非促销'plt.bar(x,rate,label=label)rate=np.array(rate)rate=np.round(rate,2)rate=rate.tolist()for x1 in x:plt.text(x1,rate[x1-1],rate[x1-1],va='bottom',ha='center')
promotion('是')
promotion('否')
plt.title('促销商品和非促销商品销售金额的周环比增长率柱状图')
plt.legend()
plt.show()