目录
一、数据清洗
1.导入模块、数据
2.信息
二、分析过程
1.获取2011年销售额最高的前十的数据的客户ID
2.分析每年销售额的增长率
3.各个地区分店的销售额
4.新老客户数
三、使用工具、数据源
import pandas as pd
data=pd.read_csv('超市数据表整理后.CSV')
data
data.info()
# 查看数据类型、数量
data.describe()
# 查看数据总体情况,比如四分位、平均值等
data.isnull().any()
# 查看是否有空值
# 将日期转换成时间对象
data['OrderDate']=pd.to_datetime(data['OrderDate'])
data.info() # 这里查看数据类型可以看到OrderDate列变成了时间类型datetime64
data['year']=data['OrderDate'].dt.year
data
data_11=data[data['year']==2011]
data_11
data_11_sales10=data_11.sort_values(by='Sales',ascending=False)[:10]
data_11_sales10
sales_year_2011=data[data['year']==2011]['Sales'].sum()
sales_year_2012=data[data['year']==2012]['Sales'].sum()
sales_year_2013=data[data['year']==2013]['Sales'].sum()
sales_year_2014=data[data['year']==2014]['Sales'].sum()
print(sales_year_2011,'\n',sales_year_2012,'\n',sales_year_2013,'\n',sales_year_2014)
sales_rate_2012=sales_year_2012/sales_year_2011-1
sales_rate_2013=sales_year_2013/sales_year_2012-1
sales_rate_2014=sales_year_2014/sales_year_2013-1
# 转换成百分数
sales_rate_2012='%.2f%%'%(sales_rate_2012*100)
sales_rate_2013='%.2f%%'%(sales_rate_2013*100)
sales_rate_2014='%.2f%%'%(sales_rate_2014*100)
df_sales_rate=pd.DataFrame([0,sales_rate_2012,sales_rate_2013,sales_rate_2014],
index=['sales_rate_2011','sales_rate_2012','sales_rate_2013','sales_rate_2014'],
columns=['percent']
)
print(df_sales_rate)
import matplotlib.pyplot as plt
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
ax2=ax1.twinx() # 共享x轴
ax1.bar([2011,2012,2013,2014],[sales_year_2011,sales_year_2012,sales_year_2013,sales_year_2014])
ax2.plot([2011,2012,2013,2014],[0,sales_rate_2012,sales_rate_2013,sales_rate_2014],color='r',marker='*')
ax1.set_xlabel('年份')
ax1.set_ylabel('销售额')
ax2.set_ylabel('增长率')
plt.title('销售额与增长率')
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['figure.dpi']=200
data['Market']
# 饼图\
market_sales=data.groupby(by='Market')['Sales'].sum()
# market_sales
# plt.figure(figsize=(3,3))
plt.pie(market_sales,labels=market_sales.index,autopct='%.1f%%')
market_year=data.groupby(by=['Market','year'],as_index=False)['Sales'].sum()
print(market_year)
market_year_pivot=pd.pivot_table(market_year,
index=['Market'],
columns=['year'],
values='Sales'
)
print(market_year_pivot)
market_year_pivot.plot(kind='bar',title='各地区每年的销售额情况')
category_market=data.groupby(by=['Category','Market'],as_index=False)['Sales'].sum()
category_market
category_market_pivot=pd.pivot_table(category_market,
index='Market',
columns='Category',
values='Sales'
)
print(category_market_pivot)
category_market_pivot.plot(kind='bar',title='不同地区不同种类销售情况')
data['month']=data['OrderDate'].dt.month
year_month=data.groupby(by=['year','month'],as_index=False)['Sales'].sum()
year_month
year_month_pivot=pd.pivot_table(year_month,
index='month',
columns='year',
values='Sales')
plt.figure(figsize=(2,2))
year_month_pivot.plot(title='销售淡旺季折线图')
分析新老用户的意义就在于:通过分析老用户,来确定企业的基础是否稳固,是否存在被淘汰的危机;通过分析新用户,来衡量企业的发展是否顺利,是否有更大的扩展空间。
根据该企业的新老客户分布,从而对超市客户维系健康状态进行了解。在分析之前需要定义一下新客户,将只要在该超市消费过客户就定义为老客户,反之为新客户。由于 2011年的数据为起始数据,根据定义大部分客户皆为新用户,其数据没有分析价值。
customer=data.drop_duplicates(subset='CustomerID')
# .groupby(by=['year','month']).count()
customer_new=customer.groupby(by=['year','month'],as_index=False)['CustomerID'].count()
customer_new
customer_new_pivot=pd.pivot_table(customer_new,
index='month',
columns='year',
values='CustomerID')
print(customer_new_pivot)
customer_new_pivot.plot(title='2011-2014每月新客户数量')
正常分析流程需要根据图形撰写分析报告,这篇文章我主要讲解代码,所以不多赘述。
有什么问题欢迎大家来问哦!