具体分析报告地址
PowerBi网页版

数据

2020年5月25日京东大家电-家用电器-冰箱订单数据,按10%抽样,约22MB(70k+条数据)
包含信息:

user_log_acct --用户账号
parent_sale_ord_id --父订单号
sale_ord_id --订单号
sale_ord_tm --订单时间
sale_ord_dt --订单日期
item_sku_id --商品sku
item_name --商品名称
brandname --品牌名称
sale_qtty --商品数量
item_first_cate_name --一级品类名称
item_second_cate_name --二级品类名称
item_third_cate_name --一级品类名称
before_prefr_unit_price --优惠前单价
after_prefr_unit_price --优惠后单价
user_actual_pay_amount --实际支付价格
sale_ord_valid_flag --订单有效标志
cancel_flag --订单取消标志
check_account_tm --支付时间
total_offer_amount --总优惠金额
self_ord_flag --自营标志
user_site_city_id --用户所在城市编号
user_site_province_id–用户所在省份编号
user_lv_cd --用户会员等级

数据预处理

缺失值处理
用户城市和省份信息有部分缺失,猜测原因是部分用户隐藏了IP地址,不影响分析,可以用‘缺失值’代替
部分订单的订单时间是空值,原因是订单尚未支付,不影响分析,可以将其赋特殊值比如-1或者不处理

数据逻辑错误
有用户的城市ID为-1只有1个,影响不大可以删除
优惠前冰箱的最低价格为288,数据中存在大量的低价订单,其中绝大部分是保修、返现等无价值订单,一小部分是异常订单,可以忽略,只筛选出优惠前价格大于500的数据

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from matplotlib.ticker import FuncFormatter
plt.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']
df=pd.read_csv('course_order_d.csv',sep='\t')
df.head()
#查看列名
df.columns

df.info()

#数据清洗
#数据类型转换
#缺失值和异常值处理
#优惠前冰箱的最低价格为288元,低于此价格的订单认为是异常订单  (df['before_prefr_unit_price']<288).sum() 为14252个
#用户的城市ID为-1删除,只有1个
df=df[(df['before_prefr_unit_price']>=288) & (df['user_site_city_id']!=-1)]
df.shape  #(62378, 23)
#查看重复订单数量
print(df["sale_ord_id"].duplicated().sum()) #843#去掉订单号重复的数据(这里京东的建议保留第一个)
df.drop_duplicates(subset=['sale_ord_id'],keep='first',inplace=True)
df.info()

城市、省份信息缺失,订单时间缺失部分订单的订单时间是空值,原因是订单尚未支付,可以将其赋特殊值比如Not Given

df.user_site_city_id.fillna('Not Given',inplace = True)
df.user_site_province_id.fillna('Not Given',inplace = True)
df.check_account_tm.fillna('Not Given',inplace = True)# 添加总价格列  等于 商品数量*优惠后单价
df['total_actual_pay']=df['sale_qtty']* df['after_prefr_unit_price']
df.head()

宏观分析

#取消订单数  17782
order_cancel=df[df.cancel_flag==1]['sale_ord_id'].count()
#总订单数  61535
order_num=df['sale_ord_id'].count()#df2只包含有效订单(sale_ord_valid_flag订单有效标志为1 且 cancel_flag订单取消标志为0 )
df2=df.copy()
df2=df2[(df2['sale_ord_valid_flag']==1)&(df2['cancel_flag']==0)] #有效订单数量  33845
order_vaild=df2['sale_ord_id'].count()#支付订单数量 28768
order_payed=df2['sale_ord_id'][df2['user_actual_pay_amount']!=0].count()#未支付订单数量  5077
order_unpay=df2['sale_ord_id'][df2['user_actual_pay_amount']==0].count()#总销售额
total_sales = df2['user_actual_pay_amount'].sum()
# GMV:本实例中指所有有效订单的总交易额
GMV = df2['total_actual_pay'].sum()#总用户数
total_users = df['user_log_acct'].nunique()print('订单总数:',order_num)
print('取消订单数:',order_cancel)
print('有效订单总数:',order_vaild)
print('已支付订单:',order_payed)
print('总销售额:',total_sales)
print('GMV:',GMV)
print('总用户数:',total_users)

fig,axes = plt.subplots(1,2,figsize =(10,5),dpi=100)labels1=['取消','未取消']
X=[order_cancel,order_num-order_cancel]
axes[0].pie(X,labels=labels1,autopct='%1.2f%%',colors = ['#1a445d','#6490a9'],pctdistance = 1.3,startangle = 90)
axes[0].set_title("订单总数取消情况", fontsize=25)labels2=['支付','未支付']
Y=[order_payed,order_unpay]
axes[1].pie(Y,labels=labels2,autopct='%1.2f%%',colors = ['#1a445d','#6490a9'],pctdistance = 1.2,startangle = 90)
axes[1].set_title("有效订单数支付情况", fontsize=25)


优惠后单价累积分布图
通过整体的价格分布我们可以发现,约80%的订单在3000元以下。

price_series=df2['after_prefr_unit_price']
price_series.describe([0.25,0.5,0.7,0.75,0.8,0.85,0.9])

order_price = pd.DataFrame(df2.groupby('after_prefr_unit_price')['after_prefr_unit_price'].count())
order_price.columns = ['ord_price_qua']
order_price['price_rate_cum'] = (order_price['ord_price_qua']/(order_price['ord_price_qua'].sum())).cumsum()fig = plt.figure(figsize=(20,8),dpi=120)
ax = fig.add_subplot(111,fc='w')
ax.tick_params(labelsize=12,colors='k') #刻度字体大小12
plt.xlabel('优惠后单价',fontdict={'color':'k', 'size':18})def to_percent(temp,position):return '%1.1f'%(100*temp)+'%'plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))ax.plot(order_price.index,order_price['price_rate_cum'],color='#1a445d',linewidth=1.8)
ax.set_title("优惠后单价累积分布图", fontsize=25)
# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]
plt.grid(color = "k", alpha=0.5,linewidth=0.5)

微观分析

时间维度

df3=df2.copy()
#提取小时
df3['order_time_hms']=df3['sale_ord_tm'].apply(lambda x:int(str(x).split(' ')[1][0:2]))
#每个小时订单数
pay_time_df=df3.groupby('order_time_hms')['sale_ord_id'].count()x=pay_time_df.index
y=pay_time_df.values fig = plt.figure(figsize=(20,8),dpi=120)
ax = fig.add_subplot(111,fc='w')
ax.tick_params(labelsize=12,colors='k') #刻度字体大小12
plt.xlabel('小时',fontdict={'color':'k', 'size':18})
plt.ylabel('有效订单量',fontdict={'color':'k', 'size':18})
plt.xticks(range(len(x)),x)
rect =ax.bar(x,y,width=0.5,color=['#6490a9'])
# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.grid(axis='y')

#小时订单数
order_time_df=df3.groupby('order_time_hms')['sale_ord_id'].agg([('order_num','count')])
#或order_time_df=df3.groupby('order_time_hms')['sale_ord_id'].agg(order_num='count')  #小时独立用户数
user_time_df=df3.groupby('order_time_hms')['user_log_acct'].agg(user_num='nunique')#独立用户人均下单数
order_num_per_user=order_time_df['order_num']/user_time_df['user_num']x=order_num_per_user.index
y=order_num_per_user.values
fig = plt.figure(figsize=(20,8),dpi=100)
ax = fig.add_subplot(1,1,1)
plt.tick_params(labelsize=14,colors='k')
plt.xlabel('小时',fontdict={'color':'k', 'size':18})
plt.ylabel('人均有效订单数',fontdict={'color':'k', 'size':18})
# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.xticks(range(len(x)),x)
plt.plot(x,y)
plt.grid(axis='y')

total_pay_time_df=df3.groupby('order_time_hms')['total_actual_pay'].agg(total_pay='sum')
#容单价:销售额/独立用户数
pay_per_user=total_pay_time_df['total_pay']/user_time_df['user_num']
#平均订单价:销售额/订单数
pay_per_order=total_pay_time_df['total_pay']/order_time_df['order_num']x=pay_per_user.index
y=pay_per_user.values
y2=pay_per_order.values fig = plt.figure(figsize=(20,8),dpi=100)
ax = fig.add_subplot(111)
plt.tick_params(labelsize=14,colors='k')
plt.xlabel('小时',fontdict={'color':'k', 'size':18})
plt.ylabel("价格",fontdict={'color':'k', 'size':18})
plt.xticks(range(len(x)),x)plt.plot(x,y,color='#1a445d',linewidth=2.0,linestyle='-')
plt.plot(x,y2,color='#6490a9',linewidth=3.0,linestyle='-.')
plt.legend(['客单价','平均订单价'])
# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]
plt.grid(axis='y')

#每时间段优惠价格及优惠比例
offer_amount = df3.groupby('order_time_hms')['total_offer_amount'].sum() #计算优惠金额
offer_amount_rate=offer_amount.values/(df3.groupby('order_time_hms')['total_actual_pay'].sum())#每时间段优惠价格及优惠比例#绘图
x0 = offer_amount.index
y0 = offer_amount.values/pay_time_df.values #计算平均订单优惠价格x1 = offer_amount_rate.index
y1 = offer_amount_rate.valuesfig,axes = plt.subplots(1,2,figsize =(20,5),dpi=120)axes[0].plot(x0,y0,color='#1a445d')
axes[0].set_title("每单平均优惠价格", fontsize=25)
axes[0].grid()axes[1].plot(x1,y1,color='#1a445d')
axes[1].set_title("每单价格折扣比例", fontsize=25)
axes[1].grid()[axes[0].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]
[axes[1].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]
#将数值转化为百分比显示
def to_percent(temp,position):return'%1.2f'%(100*temp)+'%'
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

offer_order1=df3.groupby('order_time_hms')['sale_ord_id'].agg([('order_num','count')])
offer_order2=df3[df3['total_offer_amount']>0].groupby('order_time_hms')['sale_ord_id'].agg([('offer_num','count')])
offer_order=pd.merge(offer_order1,offer_order2,left_index=True,right_index=True)
offer_order['offer_rate']=offer_order['offer_num']/offer_order['order_num']fig = plt.figure(figsize=(20,8),dpi=100)
ax = fig.add_subplot(1,1,1)
plt.tick_params(labelsize=14,colors='k')
plt.xlabel('小时',fontdict={'color':'k', 'size':18})
plt.ylabel('优惠订单数占比',fontdict={'color':'k', 'size':18})
# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.xticks(range(len(offer_order.index)),offer_order.index)
plt.plot(offer_order.index,offer_order.offer_rate,color='#1a445d')
plt.grid(axis='y')
#将数值转化为百分比显示
def to_percent(temp,position):return'%1.2f'%(100*temp)+'%'
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

地区维度

area=pd.read_csv('city_level.csv',sep=',',encoding='gbk')
area.drop_duplicates(inplace=True)
area = area[["dim_province_name", "province_id"]].drop_duplicates("province_id")  # 只保留省份信息df4=df3.copy()
area['province_id']=area['province_id'].astype('object')
df4=pd.merge(df4, area, left_on='user_site_province_id', right_on='province_id',how='left')
df4['brandname']=df4['brandname'].str.split('(').str[0]
df4=df4[['user_log_acct','sale_ord_id','sale_qtty','total_actual_pay','dim_province_name','brandname','self_ord_flag', 'total_offer_amount']]
#有效订单量,排除省份名未知的,只有8917条有效数据
fig = plt.figure(figsize=(14,8),dpi=120)
ax = fig.add_subplot(111)pro_count=df4[df4.dim_province_name!='Not Given']['dim_province_name'].value_counts()
width=0.6
plt.ylabel('有效订单量',fontdict={'color':'k', 'size':18})# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.bar(pro_count.index,pro_count.values,width,color='#6490a9')
plt.grid(axis='y')

# 各省有效订单量占比
data=np.insert(pro_count.values[:19],0,pro_count.values[19:].sum())
label=np.insert(pro_count.index[:19],0,'其他')
plt.figure(figsize = (6,6),dpi=100)plt.pie(data,labels=label,autopct='%1.2f%%',pctdistance = 1.4)
plt.title("各省有效订单量占比", fontsize=20)

#订单量排前15省份客单价比较order_pro_df=df4[df4.dim_province_name.isin(pro_count.index[:15])]\.groupby('dim_province_name')\.agg({'sale_ord_id':'count','user_log_acct':'nunique','total_actual_pay':'sum'})order_pro_df.columns = ([('order_num'),('unique_acc'), ('total_pay')])
order_pro_df['price_per']=order_pro_df['total_pay']/order_pro_df['unique_acc']
order_pro_df.sort_values(['price_per'], ascending =True,inplace=True)fig = plt.figure(figsize=(10,5),dpi=100)
ax = fig.add_subplot(111)plt.xlabel('客单价',fontdict={'color':'k', 'size':18})
plt.ylabel('省份',fontdict={'color':'k', 'size':18})
plt.title('', fontsize=22)[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','bottom']]plt.barh(order_pro_df.index,order_pro_df['price_per'],color='#6490a9')
plt.grid(axis='x')

# 各省份的客单价和订单数量对比
x=order_pro_df.price_per
y=order_pro_df.order_numfig = plt.figure(figsize=(6,4),dpi=100)
ax = fig.add_subplot(111)plt.xlabel('客单价',fontdict={'color':'k', 'size':18})
plt.ylabel('订单数量',fontdict={'color':'k', 'size':18})[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.scatter(x,y,c='#6490a9',s=800,alpha=0.6)
plt.grid()#添加散点图标签
for x0,y0,pro in zip(x,y,order_pro_df.index):plt.text(x0-30,y0-20,pro,fontsize=10)

地区+品牌维度

# 各品牌有效订单量
#各品牌有效订单量
df5= df4.groupby('brandname',as_index = False)['sale_ord_id'].count().sort_values('sale_ord_id',ascending = False)df5['rate'] = df5['sale_ord_id'] / (df5['sale_ord_id'].sum())
df5['rate_cum'] = df5['rate'].cumsum()x = df5['brandname']
y1 = df5['sale_ord_id']
y2 = df5['rate_cum']fig,ax1 = plt.subplots(figsize=(10,5))p1=ax1.bar(x,y1,color = '#6490a9',label='订单数量')
ax1.set_ylabel('有效订单数量')
ax1.set_xticklabels(x, rotation=90)
ax2 = ax1.twinx()
p2=ax2.plot(x,y2,color = '#1a445d',label='累计占比')ax2.set_ylabel('累计占比')plt.title('各品牌有效订单数量和累计占比',fontsize=20)
plt.grid(alpha =0.5)ax1.legend(loc='center right')
ax2.legend(bbox_to_anchor=[1,0.45])

df6=df4.groupby('brandname').agg({'sale_qtty':'sum','total_actual_pay':'sum'})
df6['per_price']=df6['total_actual_pay']/df6['sale_qtty']
df6.sort_values('per_price',ascending = False,inplace=True)fig = plt.figure(figsize=(18,8),dpi=120)
ax = fig.add_subplot(111)
width=0.5
plt.ylabel('不同品牌的产品单价',fontdict={'color':'k', 'size':12})# 设置有边框和头部边框颜色为空right、top、left
[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]ax.bar(df6.index,df6.per_price,width,color='#6490a9')
plt.grid(axis='y',alpha=0.5)

#各品牌的订单数量和平均优惠价格
bra_ord_price=pd.merge(df6,df5,on='brandname')x=bra_ord_price.rate
y=bra_ord_price.per_pricefig = plt.figure(figsize=(10,8),dpi=100)
ax = fig.add_subplot(111)plt.xlabel('市场占有率',fontdict={'color':'k', 'size':12})
plt.ylabel('市场平均价格',fontdict={'color':'k', 'size':12})[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.scatter(x,y,c='#6490a9',s=500,alpha=0.6)
plt.grid()#添加散点图标签
for x0,y0,bra in zip(x,y,bra_ord_price.brandname):plt.text(x0-0.004,y0-20,bra,fontsize=10)

bra_offer=df4[df4['total_offer_amount']>0]\.groupby('brandname',as_index = False).agg({'total_offer_amount':'sum','sale_qtty':'sum','sale_ord_id':'count'})
#           .rename(columns=({'sale_ord_id':'offer_num'}))
bra_offer['per_offer']=bra_offer['total_offer_amount']/bra_offer['sale_ord_id']
bra_offer.head()
x=bra_offer.sale_ord_id
y=bra_offer.per_offerfig = plt.figure(figsize=(10,8),dpi=100)
ax = fig.add_subplot(111)plt.xlabel('订单数量',fontdict={'color':'k', 'size':10})
plt.ylabel('平均优惠价格',fontdict={'color':'k', 'size':10})[ax.spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]plt.scatter(x,y,c='#6490a9',s=500,alpha=0.6)
plt.grid()#添加散点图标签
for x0,y0,bra in zip(x,y,bra_offer.brandname):plt.text(x0-100,y0-10,bra,fontsize=10)

#头部省份:有效订单数量排前15名的身份
#品牌市场占有率:该省份品牌的订单数/该省份总订单数
pro=pro_count.index[:15]
pro_df = df4[df4['dim_province_name'].isin(pro)]\.groupby(['dim_province_name','brandname'],as_index=False)['sale_ord_id'].count()pro_df=pro_df.sort_values(['dim_province_name','sale_ord_id'],axis=0,ascending=[True,False])
pro_df1=pd.DataFrame(columns=pro_df.columns.to_list())
for i in pro_count.index[0:15]:pro_df1=pd.concat((pro_df1,pro_df[pro_df.dim_province_name==i][0:4]),axis=0)   pro_df1=pd.merge(pro_df1,pro_count,how='left',left_on='dim_province_name',right_index=True)
pro_df1['bra_rate']=pro_df1['sale_ord_id']/pro_df1['dim_province_name_y']
pro_df1=pro_df1.pivot(values ='bra_rate' ,columns ='brandname',index ='dim_province_name_x' )
pro_df1.plot(kind="bar",figsize=(16,8),title = '头部省份前四名的品牌在该省的市场占有率',width=0.8,stacked=True,grid=True) #计算累计占比并绘图'Blues_r'def to_percent(temp,position):return'%1.2f'%(100*temp)+'%'
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))plt.legend(bbox_to_anchor=(1,0.5), loc='center left', borderaxespad=2)
plt.xlabel('')

#头部品牌顶单数占比前4的省份
#头部品牌:有效订单数量排前6名的品牌
#品牌市场占有率:该省份品牌的订单数/该品牌总订单数(总数排除省份未填的订单数)
brand=['海尔','容声','美的','康佳','志高','海信']
df4.dim_province_name.fillna('Not Given',inplace=True)df7=df4[(df4.dim_province_name!='Not Given')&(df4.brandname.isin(brand))]
bra_df = df7.groupby(['dim_province_name','brandname'],as_index=False)['sale_ord_id'].count()
bra_num=df7.groupby('brandname')['sale_ord_id'].count()
bra_df=pd.merge(bra_df,bra_num,left_on='brandname',right_index=True,how='left')
bra_df['bra_rate']=bra_df['sale_ord_id_x']/bra_df['sale_ord_id_y']
bra_df.sort_values(['brandname','bra_rate'],ascending=[True,False],inplace=True)bra_df1=pd.DataFrame(columns=bra_df.columns.to_list())
for i in bra_df.brandname.unique():  #pro_count.index[1:15]bra_df1=pd.concat((bra_df1,bra_df[bra_df.brandname==i][0:4]),axis=0)
bra_df1bra_df1=bra_df1.pivot(values ='bra_rate' ,columns ='dim_province_name',index ='brandname' )
bra_df1.plot(kind="bar",figsize=(16,8),title = '头部品牌市场占有率排前四名的省份',stacked=True,grid=True) #计算累计占比并绘图'Blues_r'def to_percent(temp,position):return'%1.2f'%(100*temp)+'%'
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))plt.legend(bbox_to_anchor=(1,0.5), loc='center left', borderaxespad=2)
plt.xlabel('')

自营/非自营+品牌

#自营和非自营的有效订单占比
self_df=df4.groupby('self_ord_flag',as_index=False)\.agg({'user_log_acct':'nunique','sale_ord_id':'count','total_actual_pay':'sum','total_offer_amount':'sum'})#客单价
self_df['acc_price']=self_df['total_actual_pay']/self_df['user_log_acct']
#平均优惠价格
self_df['offer_price']=self_df['total_offer_amount']/self_df['sale_ord_id']
self_df['self_ord_flag']=self_df['self_ord_flag'].map({0:'非自营',1:'自营'})
fig,axes = plt.subplots(1,3,figsize =(21,7),dpi=120)labels1=self_df.self_ord_flag
X=self_df.sale_ord_id
axes[0].pie(X,labels=labels1,autopct='%1.2f%%',colors = ['#6490a9','#1a445d'],pctdistance = 1.3,startangle = 90)
axes[0].set_title('自营和非自营的有效订单占比', fontsize=20)axes[1].bar(self_df.self_ord_flag,self_df.acc_price,color=['#6490a9','#1a445d'])
axes[1].grid(axis='y')
axes[1].set_title('自营和非自营订单的客单价对比', fontsize=20)
[axes[1].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]axes[2].bar(self_df.self_ord_flag,self_df.offer_price,color=['#6490a9','#1a445d'])
axes[2].grid(axis='y')
axes[2].set_title('自营和非自营订单的平均优惠价格对比', fontsize=20)
[axes[2].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','left']]

# 从品牌的角度来看,非自营商铺的订单主要集中于价格较低的品牌
#自营和非自营的有效订单占比
self_bra=df4.groupby(['self_ord_flag','brandname'],as_index=False)['sale_ord_id'].count()\.sort_values(['self_ord_flag','sale_ord_id'],axis=0,ascending=[True,False])
self_bra['self_ord_flag']=self_bra['self_ord_flag'].map({0:'非自营',1:'自营'})
self_bra=pd.merge(self_bra,self_df[['self_ord_flag','sale_ord_id']],on='self_ord_flag')
self=['自营','非自营']self_bra1=pd.DataFrame(columns=self_bra.columns.to_list())
for i in self:self_bra1=pd.concat((self_bra1,self_bra[self_bra.self_ord_flag==i][0:5]),axis=0)
self_bra1['ord_rate']=self_bra1['sale_ord_id_x']/self_bra1['sale_ord_id_y']self_bra2=self_bra1[self_bra1['self_ord_flag']=='自营'].sort_values('ord_rate')
self_bra3=self_bra1[self_bra1['self_ord_flag']=='非自营'].sort_values('ord_rate')fig,axes = plt.subplots(1,2,figsize =(14,5),dpi=120)axes[0].set_title('自营订单数量排名前五的品牌', fontsize=22)
[axes[0].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','bottom']]
axes[0].barh(self_bra2.brandname,self_bra2['ord_rate'],color='#6490a9')
axes[0].grid(axis='x')
def to_percent(temp,position):return'%1.2f'%(100*temp)+'%'
plt.gca().xaxis.set_major_formatter(FuncFormatter(to_percent))axes[1].set_title('非自营订单数量排名前五的品牌', fontsize=22)
[axes[1].spines[loc_axis].set_visible(False) for loc_axis in ['top','right','bottom']]
axes[1].barh(self_bra3.brandname,self_bra3['ord_rate'],color='#6490a9')
axes[1].grid(axis='x')

冰箱日订单数据分析(京东)python代码相关推荐

  1. 冰箱日订单数据分析报告(京东)

    数据来源 2020年5月25日京东大家电-家用电器-冰箱订单数据,按10%抽样,约22MB(70k+条数据) 订单数据分析的基本思路 宏观分析 宏观把握订单的总体特征 订单总量:61535 GMV:6 ...

  2. 居然在 Bloody Monday 这部日剧里看到 Python 代码了

    看到一位 Pythoner 在博客里推荐了 Bloody Monday, 就看了几集,没想到看到好多的 Python 代码特写镜头... 不能不说这部片子拍的很认真,虽然剧情太俗套,但是作为首部出现 ...

  3. python盘点订单_在线超市-Ulabox订单数据分析(python)

    摘要 本次实践案例利用数据kaggle数据进行分析.链接如下 该数据集为西班牙在线杂货店Ulabox订单数据,数据集包括匿名的子集30K订单从2017年开始的所有类型的客户.整个分析分为五个步骤:&q ...

  4. 手把手教你用直方图、饼图和条形图做数据分析(Python代码)

    导读:对数据进行质量分析以后,接下来可通过绘制图表.计算某些特征量等手段进行数据的特征分析. 其中,分布分析能揭示数据的分布特征和分布类型.本文就手把手教你做分布分析. 作者:张良均 谭立云 刘名军 ...

  5. python股票直方图代码_手把手教你用直方图、饼图和条形图做数据分析(Python代码)...

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 导读:对数据进行质量分析以后,接下来可通过绘制图表.计算某些特征量等手段进行数据的特征分析. 其中 ...

  6. 美团差评数据分析,python代码实现

    文章目录 明确问题 理解数据 处理数据 异常值处理 标签处理 新增计算列 数据分析 分析思路 描述性分析 探索性分析 送达总时长时间过长,导致的差评 骑手个人行为导致的差评 商户行为导致的差评 其他评 ...

  7. python银行信贷风险分析_Lending Club贷款数据分析(python代码)

    背景 目的 数据集获取 数据处理 一.背景 公司背景 Lending Club 创立于2006年,主营业务是为市场提供P2P贷款的平台中介服务,公司总部位于旧金山. 公司在运营初期仅提供个人贷款服务, ...

  8. python 京东_Python数据分析-京东订单数据分析实战

    本次数据来源于京东,类目为大家电-家用电器-冰箱,抽取2020年5月25日10%数据,数据量为 70k+,在 jupyer notebook 内进行分析. 数据文件: 链接:迅雷云盘:提取码:ezQq ...

  9. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

最新文章

  1. 【剑道之道】亦是生存之道
  2. python引用文件 mode写在后面还是前面,python3 文件操作常用mode参数用法详解
  3. C#实现(递归和非递归)快速排序和简单排序
  4. [转]一些需要禁用的PHP危险函数和禁用方法
  5. 2007注册会计师考试
  6. SAP ABAP和Java里的弱引用(WeakReference)和软引用(SoftReference)
  7. python __new__中单例的作用
  8. CSS 全解析实战(一)-导读
  9. java中priorityqueue_详解JAVA中priorityqueue的具体使用
  10. python 小程序搜索排名-用python2.7.9 写个小程序搜索某个目录下行有某关键字
  11. 使用elasticSearch实现以图搜图
  12. 市面上哪款输入法最好用,对比出结论
  13. jsp中你必须记住的379
  14. Aptos教程-参与官方激励测试网(AIT2 激励测试网)
  15. 【老九学堂】【初识C语言】C语言基本数据类型
  16. BI神器Power Query(13)-- PQ制作时间维度表(2)
  17. 计算机网教答辩,计算机论文答辩老师一般问些什么问题?需要怎么回答?
  18. 嵌入式--热敏电阻的应用
  19. springboot集成cas3.5.2
  20. C字符串格式化转string+获取当前时间(精确到毫秒)

热门文章

  1. uV胶点胶机器人_UV胶点胶机工作方式
  2. matlab武汉理工大学数值分析线性函数拟合实验_10数值分析第七章数值微积分大学数学云课堂...
  3. 冀欧速长杆式噪声传感器高规格OSA-36B
  4. Dcip的学习1-计算器
  5. 【算法竞赛入门练习题】判断给定的字符串中是否包含某个字符串
  6. android Bitmap和Drawable的区别
  7. 一步实现阿里云OSS二进制流图片上传
  8. 两篇Nature最新研究成果:令细胞衰老的基因突变作用机制的新理论
  9. JdbcType类型和Java类型的对应关系(java.sql.date,java.sql.time,java.sql,Timestamp)
  10. 沧正称重传感器的工作原理和组成材料