题目与数据选取2018泰迪杯A题 任务1 我用python对数据进行缺失值统计和重复值统计,然后把缺失值和重复值去掉
import pandas as pd import warnings warnings.filterwarnings('ignore')#忽略提示 path = 'G:/2018泰迪杯A题/附件.csv'#文件若在目录 df = pd.read_csv(path,encoding='gbk') print(df_1.isnull().sum())#缺失值统计 df_1=df.dropna()#缺失值删除 print(df_1.duplicated().sum())#重复值统计 df_1.drop_duplicates()#重复值删除 df_2.to_csv('task1_1.csv')#保存任务 1.2 统计每个大类商品的销售金额,将结果保存为“task1_2.csv”。
df_3=df_2.groupby('大类名称')['销售金额'].sum() df_3.to_csv('task1_2.csv')任务 1.3 统计每个中类商品的促销销售金额和非促销销售金额,将结果保 存为“task1_3.csv”。 发现有些非促销金额不等于单价乘数量
df_2['非促销金额'] = round(df_2['商品单价']*df_2['销售数量'],2)#算出正常的销售金额 df_5=df_2.drop(df_2[(df_2['是否促销']=='否') & (df_2['非促销金额']!=df_2['销售金额'])].index)#把不等的行去掉 df_5=df_5.drop(['非促销金额'],axis=1)#把自己添加的列去掉 #这部分应写进任务1.1,数据处理。 df_6=df_5[df_5['是否促销']=='否'] df_7=df_5[df_5['是否促销']=='是'] df_6_1=df_6.groupby('中类名称')['销售金额'].sum() df_6_2=df_7.groupby('中类名称')['销售金额'].sum() pd_8=pd.concat([df_6_1,df_6_2],axis=0) pd_8.to_csv('task1_3.csv')任务 1.4 统计生鲜类产品和一般产品的每周销售金额,将结果保存为 “task1_4.csv”。
df_6=df_5[df_5['商品类型']=='生鲜'] df_6['销售日期']=pd.to_datetime(df_6['销售日期'],format='%Y%m%d', errors='coerce') df_6['周']=df_6['销售日期'].dt.week df_6_1=df_6.groupby('周')['销售金额'].sum() df_7=df_5[df_5['商品类型']=='一般产品'] df_7['销售日期']=pd.to_datetime(df_7['销售日期'],format='%Y%m%d', errors='coerce') df_7['周']=df_7['销售日期'].dt.week df_7_1=df_6.groupby('周')['销售金额'].sum() pd_8=pd.concat([df_6_1,df_7_1],axis=0) pd_8.to_csv('task1_4.csv')任务 1.5 统计每位顾客每月的消费额及消费天数,将结果保存为 “task1_5.csv”,并在报告中列出用户编号为 0-10 的结果。
df_10_1=df_5.groupby('顾客编号')['销售金额'].sum() df_10_2=df_5.groupby('顾客编号')['销售日期'].count() df_11=pd.concat([df_10_1,df_10_2],axis=1) # print(df_11) df_11.to_csv('task1_5.csv')任务 2.1 绘制生鲜类商品和一般商品每天销售金额的折线图,并分析比较 两类产品的销售状况。
df7=df_5[df_5['商品类型']=='一般商品'] df9=df7.groupby('销售日期',as_index=False)['销售金额'].sum() df8=df_5[df_5['商品类型']=='生鲜'] df9_1=df8.groupby('销售日期',as_index=False)['销售金额'].sum() # print(df9) plt.rcParams['font.sans-serif'] = [u'SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.plot(df9['销售金额'], marker='o',label='一般商品图') plt.plot(df9_1['销售金额'], marker='*',label='生鲜商品图') plt.legend() plt.show()任务 2.2 按月绘制各大类商品销售金额的占比饼图,并分析其销售状况
```python df_6=df_5[df_5['销售月份']==201501] df_6=df_6.groupby(['大类编码','销售月份'],as_index=False)['销售金额'].sum() plt.pie(x=df_6['销售金额'],labels=df_6['大类编码']) plt.show() df_7=df_5[df_5['销售月份']==201502] df_7=df_7.groupby(['大类编码','销售月份'],as_index=False)['销售金额'].sum() plt.pie(x=df_7['销售金额'],labels=df_7['大类编码']) plt.show() df_8=df_5[df_5['销售月份']==201503] df_8=df_8.groupby(['大类编码','销售月份'],as_index=False)['销售金额'].sum() plt.pie(x=df_8['销售金额'],labels=df_8['大类编码']) plt.show() df_9=df_5[df_5['销售月份']==201504] df_9=df_9.groupby(['大类编码','销售月份'],as_index=False)['销售金额'].sum() plt.pie(x=df_9['销售金额'],labels=df_9['大类编码']) plt.show()这是效果图 任务 2.3 绘制促销商品和非促销商品销售金额的周环比增长率柱状图。
df_6=df_5[df_5['是否促销']=='否'] df_6['销售日期']=pd.to_datetime(df_6['销售日期'],format='%Y%m%d', errors='coerce') df_6['周'] = df_6['销售日期'].dt.week df_6_1=df_6.groupby('周',as_index=False)['销售金额'].sum() df_6_1['销售金额']=df_6_1['销售金额'].pct_change(periods=1) df_7=df_5[df_5['是否促销']=='是'] df_7['销售日期']=pd.to_datetime(df_7['销售日期'],format='%Y%m%d', errors='coerce') df_7['周'] = df_7['销售日期'].dt.week df_7_1=df_7.groupby('周',as_index=False)['销售金额'].sum() df_7_1['销售金额']=df_7_1['销售金额'].pct_change(periods=1) print(df_7_1) plt.bar(df_6_1['周'], df_6_1['销售金额']) plt.bar(df_7_1['周'], df_7_1['销售金额']) plt.show()