题目与数据选取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()