Python數據分析與可視化典型項目實戰(zhàn)模塊八-電商客戶消費偏好特征分析_第1頁
Python數據分析與可視化典型項目實戰(zhàn)模塊八-電商客戶消費偏好特征分析_第2頁
Python數據分析與可視化典型項目實戰(zhàn)模塊八-電商客戶消費偏好特征分析_第3頁
Python數據分析與可視化典型項目實戰(zhàn)模塊八-電商客戶消費偏好特征分析_第4頁
Python數據分析與可視化典型項目實戰(zhàn)模塊八-電商客戶消費偏好特征分析_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

模塊八電商客戶消費偏好特征分析Python數據分析與可視化典型項目實戰(zhàn)(微課版)【任務描述】現有3個Excel文件,分別是“df_short.xlsx”(記錄“客戶消費信息”)、“df_short_buy.xlsx”(記錄“客戶消費信息”并增加統(tǒng)計數量列)、“df_label.xlsx”(記錄?!翱蛻羝锰卣鳌保?,這些數據是京東電子商務網站74天的交易數據。其中“df_short.xlsx”文件有8列、55148行數據,所有列都不存在數據缺失情況;“df_label.xlsx”文件有21列、49003行數據,僅有“Unnamed:0”“customer_id”“browse_not_buy”“cart_not_buy”“buy_again”這5列無數據缺失情況,有16列數據存在缺失情況。其中列名“Unnamed:0”表示臨時列名,暫用“Unnamed:0”表示。針對df_short和df_label兩個數據集完成以下主要操作。(1)查看數據集的相關信息。(2)對數據集進行數據預處理。(3)計算客戶統(tǒng)計總數量。(4)計算客戶消費主要電商指標。(5)統(tǒng)計客戶瀏覽數量與購買數量?!救蝿?-1】京東客戶消費數據預處理與整體消費特征分析【任務實現】在JupyterNotebook開發(fā)環(huán)境中創(chuàng)建tc08-01.ipynb,然后在單元格中編寫代碼并輸出對應的結果。【任務8-1】京東客戶消費數據預處理與整體消費特征分析京東客戶消費數據預處理與整體消費特征分析1.導入模塊導入通用模塊的代碼詳見“本書導學”。data1=pd.read_excel(r'data\df_short.xlsx',parse_dates=['date'],dtype={'customer_id':str,'product_id':str})df_short=data1.copy()2.讀取數據讀取客戶消費信息數據集的代碼如下:data2=pd.read_excel(r'.\data\df_label.xlsx',dtype={'customer_id':str})df_label=data2讀取客戶偏好特征數據集的代碼如下:京東客戶消費數據預處理與整體消費特征分析3.查看數據集df_short的相關信息查看數據集df_short的基本信息df_()查看數據集df_short的大?。ňS度)print('數據集大小:',df_short.shape)查看數據集df_short的部分數據隨機查看數據集的5行數據的代碼如下:df_short.sample(5)同時展示前5行和后5行數據的代碼如下:pd.concat([df_short.head(),df_short.tail()])京東客戶消費數據預處理與整體消費特征分析查看“date”列的基本信息df_short['date'].describe(datetime_is_numeric=True)查看時間范圍,并輸出起始日期、結束日期及日期相差minDate=df_short['date'].min()print('起始日期:',minDate)maxDate=df_short['date'].max()print('結束日期:',maxDate)diffData=maxDate-minDateprint('日期相差:',diffData,'天')print('時間范圍為:{}到{}'.format(min(data1.date),max(data1.date)))刪除無效字段刪除“Unnamed:0”列的代碼如下:df_short.drop(df_short.columns[[0]],axis=1,inplace=True)京東客戶消費數據預處理與整體消費特征分析以下代碼也能實現刪除“Unnamed:0”列的功能:short_df.drop(labels='Unnamed:0',axis=1,inplace=True)df_short=df_short.drop('Unnamed:0',axis=1)deldf_short['Unnamed:0']查看數據集中各列數據的數據類型df_short.dtypes查看是否存在重復記錄查看重復記錄數量的代碼如下:print('數據集中含有%d行重復數據'%(df_short.duplicated().sum()))查看重復記錄內容的代碼如下:df_short[df_short.duplicated()]查看客戶ID為“587314”的購買記錄,代碼如下:df_short[df_short.customer_id=='587314']京東客戶消費數據預處理與整體消費特征分析查看數據集行數df_short['customer_id'].count()查看有無缺失數據df_short.isnull().sum()輸出結果:55148查看數據集中各列數據去重后的數量print('數據集中“customer_id”列去重后的數據數量為:',df_short['customer_id'].nunique())print('數據集中“product_id”列去重后的數據數量為:',df_short['product_id'].nunique())print('數據集中“type”列去重后的數據數量為:',df_short['type'].nunique())print('數據集中“brand”列去重后的數據數量為:',df_short['brand'].nunique())print('數據集中“category”列去重后的數據數量為:',df_short['category'].nunique())print('數據集中“shop_category”列去重后的數據數量為:',df_short['shop_category'].nunique())print('數據集中“date”列去重后的數據數量為:',df_short['date'].nunique())京東客戶消費數據預處理與整體消費特征分析len(df_short['customer_id'].unique())df_short['customer_id'].unique().shape[0]輸出結果:49003查看無重復數據的部分內容print(df_short['type'].unique())print('-'*75)print(df_short['brand'].unique()[0:10])print('-'*75)print(df_short['category'].unique()[0:10])print('-'*75)print(df_short['shop_category'].unique())以下代碼也能實現查看“customer_id”列去重后的數據數量的功能:京東客戶消費數據預處理與整體消費特征分析提取時間數據df_short['datetime']=pd.to_datetime(df_short['date'])df_short['year']=df_short['datetime'].dt.year.astype('int')df_short['month']=df_short['datetime'].dt.month.astype('int')df_short['weekday']=df_short['datetime'].dt.weekday.astype('int')#Monday是0df_short['day']=df_short['datetime'].dt.day.astype('int')#df_short.drop(['date'],axis=1,inplace=True)查看時間數據print('年份:')print(df_short['year'].value_counts())print('月份:')print(df_short['month'].value_counts())print('星期:')print(df_short['weekday'].value_counts())print('總天數:')print(len(df_short['datetime'].unique()))print('時間數據特征:')print(df_short['datetime'].describe(datetime_is_numeric=True))京東客戶消費數據預處理與整體消費特征分析4.針對數據集df_short的數據預處理刪除重復行數據df_short=df_short.drop_duplicates(subset=None,keep='first',inplace=False)df_short.shape()刪除全為空的數據df_short=df_short.dropna(how='all')填充缺失數據df_short=df_short.fillna(np.nan)轉換數據類型df_short['date']=pd.to_datetime(df_short['date'])df_short['date']=df_short.date.apply(lambdax:pd.to_datetime(x))輸出結果:(55138,7)京東客戶消費數據預處理與整體消費特征分析5.查看數據集df_label的相關信息查看數據集df_label的基本信息df_()掃描二維碼在線瀏覽電子活頁8-1查看代碼的輸出結果。查看數據集df_label的大小print('數據集大?。?)print(df_label.shape)查看數據集df_label的行數df_label.shape[0]以下代碼也可以查看數據集的行數:len(df_label['customer_id'])查看數據集df_label各列數據的數據類型print('數據類型:')df_label.dtypes輸出結果:

數據集大?。?49003,21)輸出結果:

49003京東客戶消費數據預處理與整體消費特征分析查看數據集df_label的基本統(tǒng)計情況df_label.describe()查看數據集df_label是否存在重復數據print('數據重復:')df_label.duplicated().sum()查看數據集df_label有無缺失數據df_label.isnull().sum()查看數據集df_label中缺失數據的占比allNum=df_label['customer_id'].count()(df_label.isnull().sum()/allNum*100).round(2)輸出結果:數據重復:0查看購買的時間間隔df_label['interval_buy'].value_counts()京東客戶消費數據預處理與整體消費特征分析取反查看df_label[~df_label["interval_buy"].isnull()]檢查數據邏輯錯誤與評估數據質量#檢查數據邏輯錯誤#未購買無下單時間,符合邏輯df_label[df_label['buy_again']=='未購買']['time_order'].value_counts()#“browse_not_buy”列中的“否”與“buy_again”列中的“未購買”矛盾,邏輯錯誤df_label[df_label['buy_again']=='未購買']['browse_not_buy'].value_counts()#“cart_not_buy”列中的“否”與“buy_again”列中的“未購買”矛盾,邏輯錯誤df_label[df_label['buy_again']=='未購買']['cart_not_buy'].value_counts()#判斷buy_again是否合理,找出下單時間為空但是再次購買的矛盾數據contradict=df_label[(df_label['buy_again']=='是')&\(df_label['interval_buy']!=df_label['interval_buy'])]京東客戶消費數據預處理與整體消費特征分析6.針對數據集df_label的數據預處理填充缺失數據將none、nan用nan替換df_label=df_label.fillna(np.nan)#對空值進行填充df_label[['time_browse','time_order','cate_most_browse','cate_most_order']]=df_label[['time_browse','time_order','cate_most_browse','cate_most_order']].fillna('NoRec')df_label[['month_buy','month_cart','month_active','week_buy','week_cart','week_active','last_order','last_browse']]=df_label[['month_buy','month_cart','month_active','week_buy','week_cart','week_active','last_order','last_browse']].fillna(0)#用0補齊部分缺失數據,表示客戶沒有該行為foriin['month_buy','month_cart','month_active','week_buy','week_cart','week_active']京東客戶消費數據預處理與整體消費特征分析刪除缺失值較多的列df_label=df_label.drop('Unnamed:0',axis=1)df_label.drop(columns=['cate_most_follow','cate_most_savedCart','last_savedCart'],inplace=False)df_label[df_label['buy_again']=='是'].dropna(axis=1)刪除重復數據df_label=df_label.drop_duplicates(subset=None,keep='first',inplace=False)刪除全為空的數據df_label=df_label.dropna(how='all')df_label.dropna(axis=0,subset=['cate_most_browse'],how='all',inplace=True)刪除異常數據#刪除異常數據delete_index=contradict.index.values.tolist()df_label=df_label.drop(delete_index,axis='index')京東客戶消費數據預處理與整體消費特征分析改正邏輯錯誤數據#改正邏輯錯誤數據df_label['browse_not_buy']=np.where(df_label['buy_again']=='未購買','是','否')df_label['cart_not_buy']=np.where(df_label['buy_again']=='未購買','是','否')輸出結果:array(['未購買','否','是'],dtype=object)df_label['buy_again'].value_counts()查看客戶復購情況#buy_again用于表示復購#“未購買”指客戶從未購買,“否”指客戶未復購,“是”指客戶復購pd.unique(df_label["buy_again"].values)輸出結果:未購買45826否3165是7Name:buy_again,dtype:int64京東客戶消費數據預處理與整體消費特征分析7.計算客戶統(tǒng)計總數量讀取數據path=r'data\df_short_buy.xlsx'short_buy_df=pd.read_excel(path)轉換數據類型與提取日期信息short_buy_df['date']=pd.to_datetime(short_buy_df['date'])short_buy_df['date'].max(),short_buy_df['date'].min()提取時間數據short_buy_df['年']=short_buy_df['date'].dt.yearshort_buy_df['月']=short_buy_df['date'].dt.monthshort_buy_df['日']=short_buy_df['date'].dt.dayshort_buy_df['周']=short_buy_df['date'].dt.weekday京東客戶消費數據預處理與整體消費特征分析刪除數據集中多余列與查看數據集前5行數據short_buy_df=short_buy_df.drop('Unnamed:0',axis=1)short_buy_df.head()按日期列排序并重置索引short_buy_df.sort_values(by='date',ascending=True,inplace=True)short_buy_df.reset_index(drop=True,inplace=True)輸出客戶統(tǒng)計總數量print('客戶統(tǒng)計總數量:',short_buy_df['統(tǒng)計數量'].sum(),'件')輸出結果:客戶統(tǒng)計總數量:55138件京東客戶消費數據預處理與整體消費特征分析8.計算客戶消費主要電商指標將表示客戶行為類型的數字轉換為字符action_map={1:'瀏覽',2:'評論',3:'購買',4:'收藏',5:'加入購物車'}df_short['type']=df_short['type'].map(action_map)df_short.head()京東客戶消費數據預處理與整體消費特征分析計算總訪問量、日均訪問量、總訪客數和人均訪問量等pv=df_short[df_short['type']=='瀏覽']['customer_id'].count()#總訪問量uv=len(df_short['customer_id'].unique())#總訪客數pv_per_user=pv/uv#人均訪問量pv_per_day=pv/len(df_short['date'])#日均訪問量print('總訪問量為:%i'%pv)print('日均訪問量為:%.3f'%pv_per_day)print('總訪客數為:%i'%uv)print('人均訪問量為:%.3f'%pv_per_user)輸出結果:總訪問量為:49139日均訪問量為:0.891總訪客數為:49003人均訪問量為:1.003京東客戶消費數據預處理與整體消費特征分析計算消費客戶數、消費客戶訪問量、消費客戶人均訪問量和客戶跳失率等user_pay=df_short[df_short['type']=='購買']['customer_id'].unique()#消費客戶數user_pay_rate=len(user_pay)/uv#消費客戶數占比#消費客戶訪問量pv_pay=df_short[df_short['customer_id'].isin(user_pay)]['type'].value_counts()['瀏覽']pv_pay_rate=pv_pay/pv#消費客戶訪問量占比pv_per_buy_user=pv_pay/len(user_pay)#消費客戶人均訪問量leave_rate=sum(df_short.groupby('customer_id')['type'].count()==1)/(df_short['customer_id'].nunique())print('消費客戶數為:%i'%len(user_pay))print('消費客戶數占比為:%.3f%%'%(user_pay_rate*100))print('消費客戶訪問量為:%i'%pv_pay)print('消費客戶訪問量占比為:%.3f%%'%(pv_pay_rate*100))print('消費客戶人均訪問量為:%.3f'%pv_per_buy_user)print('客戶跳失率為:%.3f%%'%(leave_rate*100))輸出

結果:消費客戶數為:933消費客戶數占比為:1.904%消費客戶訪問量為:199消費客戶訪問量占比為:0.405%消費客戶人均訪問量為:0.213客戶跳失率為:91.415%京東客戶消費數據預處理與整體消費特征分析針對數據集df_short查看購買次數為1次以上的客戶#客戶購買次數sku_num=(df_short[df_short['type']=='購買'].groupby('customer_id')['type'].count().to_frame().rename(columns={'type':'購買次數小計'}).reset_index())#購買次數為1次以上的客戶topsku=sku_num[sku_num['購買次數小計']>1].sort_values(by='customer_id',ascending=False)num=topsku['購買次數小計'].count()print('購買次數為1次以上的客戶的數量為:',num)topsku.head(num)京東客戶消費數據預處理與整體消費特征分析針對數據集df_consume查看有復購行為的客戶df_consume=pd.read_excel(r'.\data\df_consume.xlsx',dtype={'customer_id':str})vip1=df_consume.loc[df_consume['buy_again']=='是']

.sort_values(by='customer_id',ascending=False)num=df_consume[df_consume['buy_again']=='是']['buy_again'].count()print('有復購行為的客戶的數量為:',num)vip1[['customer_id','buy_again']]統(tǒng)計不同購買次數的客戶的人數total_buy_count=(df_short[df_short['type']=='購買'].groupby(['customer_id'])['type'].ount().to_frame().rename(columns={'type':'購買次數小計'}))total_buy_count['購買次數小計'].value_counts()輸出結果:京東客戶消費數據預處理與整體消費特征分析計算復購率re_buy_rate=total_buy_count[total_buy_count['購買次數小計']>=2].count()/total_buy_count.count()print('復購率為:%.2f%%'%(re_buy_rate*100))輸出結果:平臺的復購率較低。由于時間跨度較小,消費者短期內再次購買的動機不強,這符合客觀規(guī)律。平臺應該將營銷重點放在沒有購買的消費者身上,這樣不僅能節(jié)約資源,也能提高平臺的客戶轉化率。京東客戶消費數據預處理與整體消費特征分析9.統(tǒng)計客戶瀏覽數量與購買數量統(tǒng)計各個客戶的瀏覽數量#客戶的瀏覽數量sku_num=(short_buy_df[short_buy_df['type']==1].groupby('customer_id')['type'].count().to_frame().rename(columns={'type':'total'}).reset_index())#瀏覽數量排前5位的客戶topsku=sku_num.sort_values(by='total',ascending=False)topsku.head()統(tǒng)計各個客戶的購買數量#客戶的購買數量sku_num=(short_buy_df[short_buy_df['type']==3].groupby('customer_id')['type'].count().to_frame().rename(columns={'type':'total'}).reset_index())#購買數量排前5位的客戶topsku=sku_num.sort_values(by='total',ascending=False)topsku.head()【任務描述】現有3個Excel文件,分別是“df_product.xlsx”“df_product_buy.xlsx”和“df_consume.xlsx”,“df_product.xlsx”文件中有8列、55148行數據,“df_consume.xlsx”文件中有21列、49003行數據,Excel文件“df_product.xlsx”的主要列名稱及說明可參見表8-1,Excel文件“df_consume.xlsx”的主要列名稱及說明可參見表8-2。針對df_product、df_product_buy和df_consume3個數據集完成以下操作。針對數據集df_product分析京東電商客戶喜好的商品大類。針對數據集df_product分析京東電商客戶喜好的商品小類。數據集df_product_buy中增加了“購買數量”列,針對數據集df_product_buy分析京東電商客戶喜好的商品小類。針對數據集df_consume分析京東電商客戶喜好的商品小類?!救蝿諏崿F】【任務8-2】京東電商客戶喜好的商品大類及細分類型分析京東電商客戶喜好的商品大類及細分類型分析1.針對數據集df_product分析京東電商客戶喜好的商品大類導入模塊importmathimportplotlyaspyimportmatplotlibasmplimportmatplotlib.gridspecasgridspecimportplotly.graph_objsasgofromplotly.graph_objsimportScatterfrompyecharts.globalsimportThemeTypefrompyecharts.fakerimportFakerfromdatetimeimportdatetimesns.set(font='FangSong')pyplot=py.offline.iplot讀取數據與預處理path=r'data\df_product.xlsx'data1=pd.read_excel(path,parse_dates=['date'],dtype={'customer_id':str,'product_id':str})data1=data1.drop('Unnamed:0',axis=1)df_short=data1.copy()京東電商客戶喜好的商品大類及細分類型分析查看商品大類與統(tǒng)計商品大類已購商品的數量查看商品大類的代碼如下:df_short.shop_category.unique()統(tǒng)計每一個商品大類已購商品的數量的代碼如下:統(tǒng)計每一個商品大類已購商品的數量的代碼如下:shopCategoryCounts=df_short.shop_category.value_counts()#shop_category=data_short['shop_category'].value_counts()shopCategoryCounts繪制餅圖分析京東電商客戶喜好的商品大類方法1的代碼如下:輸出結果:array(['Electronics','Clothes','HouseholdElectricAppliance','MotherandInfant','Food','BeautyMakeup','OutdoorSports','Furniture','JewelleryAccessories'],dtype=object)trace=[go.Pie(labels=shopCategoryCounts.index.tolist(),values=shopCategoryCounts.values.tolist(),textfont=dict(size=12,color='white'))]layout=go.Layout(title='商品大類占比')fig=go.Figure(data=trace,layout=layout)pyplot(fig)京東電商客戶喜好的商品大類及細分類型分析京東電商客戶喜好的商品大類及細分類型分析掃描二維碼在線瀏覽電子活頁8-2“繪制餅圖分析京東電商客戶喜好的商品大類方法2”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-3“繪制餅圖分析京東電商客戶喜好的商品大類方法3”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-4“繪制餅圖分析京東電商客戶喜好的商品大類方法4”中的代碼及繪制的圖形。繪制餅圖分析特定的商品大類、商品小類與商品品牌的統(tǒng)計數量electronicsData=df_short[df_short['shop_category']=='Electronics']phoneCategoryCounts=electronicsData.category.value_counts()data_pair_categoryCounts=[list(i)foriinzip(phoneCategoryCounts.keys(),phoneCategoryCounts.values.tolist())]京東電商客戶喜好的商品大類及細分類型分析#繪制餅圖phoneCategoryCountsPie=(Pie().add("商品小類",data_pair_categoryCounts).set_global_opts(title_opts=opts.TitleOpts(title="Electronics大類的各細分種類的統(tǒng)計數量分布",subtitle='2022/02/01-2022/04/15'),tooltip_opts=opts.TooltipOpts(trigger="axis",is_show=True,trigger_on="click",axis_pointer_type="cross",border_color="#FF0000",border_width=5),legend_opts=opts.LegendOpts(type_="plain",is_show=True,orient="vertical",pos_left='right'),).set_series_opts(label_opts=opts.LabelOpts(formatter=":{c}")).render_notebook())phoneCategoryCountsPie京東電商客戶喜好的商品大類及細分類型分析掃描二維碼在線瀏覽電子活頁8-5“針對特定商品大類Clothes分析其細分種類的分布”中的代碼及繪制的圖形。京東電商客戶喜好的商品大類及細分類型分析df_1=df_short.groupby('shop_category')['customer_id'].count().reset_index().sort_values('customer_id',ascending=False).reset_index(drop=True)num=df_1['customer_id'].valueslabels=[xforxindf_1['shop_category']]explode=[0.02,0.01,0,0,0,0,0,0,0]plt.figure(figsize=(12,8))plt.pie(num,labels=labels,explode=explode,autopct='%.2f%%',pctdistance=0.8,labeldistance=1.15,startangle=180,textprops={'fontsize':12})plt.title('各商品大類的統(tǒng)計數量的占比')plt.show()首先繪制各商品大類統(tǒng)計數量占比餅圖,代碼如下:京東電商客戶喜好的商品大類及細分類型分析掃描二維碼在線瀏覽電子活頁8-6“分析Electronics大類中各商品小類的統(tǒng)計數量分布情況”中的代碼及繪制的圖形。分析Phone小類中受歡迎的品牌的統(tǒng)計數量分布情況,其代碼如下:phone=electronics.loc[electronics['category'].str.contains('Phone')]df_3=phone.groupby('brand')['customer_id'].count().reset_index().sort_values('customer_id',ascending=False).reset_index(drop=True)num=df_3['customer_id'].valueslabels=[xforxindf_3['brand']]explode=[0.02,0.01,0,0,0,0,0]plt.subplots(figsize=(12,8))plt.pie(num,labels=labels,explode=explode,autopct='%.2f%%',pctdistance=0.8,labeldistance=1.15,startangle=180,textprops={'fontsize':12})plt.title('受歡迎手機品牌的統(tǒng)計數量分布')plt.show()京東電商客戶喜好的商品大類及細分類型分析京東電商客戶喜好的商品大類及細分類型分析繪制餅圖分析HouseholdElectricAppliance大類的商品小類、商品品牌、分月統(tǒng)計、每周按天統(tǒng)計的數量分布df_short["month"]=df_short["date"].dt.monthdf_short["weekday"]=df_short["date"].dt.weekday#定義分析函數shop_cate()defshop_cate(category):data_1=df_short[df_short['shop_category']==category]print(category+'類的統(tǒng)計數量:',data_1.shape[0])plt.figure(figsize=(16,10))plt.subplot(2,2,1)data_1['category'].value_counts().plot(kind='pie',autopct='%.1f%%',label='')plt.subplot(2,2,2)data_1['brand'].value_counts().plot(kind='pie',autopct='%.1f%%',label='')plt.subplot(2,2,3)data_1['month'].value_counts().plot(kind='pie',autopct='%.1f%%',label='')plt.subplot(2,2,4)data_1['weekday'].value_counts().plot(kind='pie',autopct='%.1f%%',label='')plt.show()#家用電器類shop_cate('HouseholdElectricAppliance')京東電商客戶喜好的商品大類及細分類型分析京東電商客戶喜好的商品大類及細分類型分析繪制條形圖分析京東電商客戶喜好的商品大類df=df_short['shop_category'].value_counts().to_frame()x_name=df.indexy_count=df.shop_categoryplt.figure(figsize=(10,6))sns.barplot(y=x_name,x=y_count.values).set(title='商品大類的統(tǒng)計數量分布')plt.show()京東電商客戶喜好的商品大類及細分類型分析繪制柱形圖分析京東電商客戶喜好的商品大類方法1的代碼如下:trace_basic=go.Bar(x=x_name.tolist(),y=y_count.values.tolist())layout=go.Layout(title='商品大類的受歡迎程度')figure_basic=go.Figure(data=trace_basic,layout=layout)pyplot(figure_basic)京東電商客戶喜好的商品大類及細分類型分析掃描二維碼在線瀏覽電子活頁8-7“繪制柱形圖分析京東電商客戶喜好的商品大類方法2”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-8“繪制柱形圖分析京東電商客戶喜好的商品大類方法3”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-9“繪制柱形圖分析京東電商客戶喜好的商品大類方法4”中的代碼及繪制的圖形。繪制柱形圖分析Electronics大類中的Phone小類的品牌分布情況phoneData=df_short.query('category=="Phone"andshop_category=="Electronics"')brandCounts=phoneData.brand.value_counts()京東電商客戶喜好的商品大類及細分類型分析brandCountsBar=(Bar().add_xaxis(brandCounts.keys().tolist()).add_yaxis('統(tǒng)計數量',brandCounts.values.tolist()).set_global_opts(title_opts=opts.TitleOpts(title="各品牌手機的統(tǒng)計數量分布",subtitle='2022/02/01-2022/04/15'),tooltip_opts=opts.TooltipOpts(trigger="axis",is_show=True,trigger_on="click",axis_pointer_type="cross",border_color="#FF0000",border_width=5),legend_opts=opts.LegendOpts(type_="plain",is_show=True,orient="vertical",pos_left='right'),).set_series_opts(label_opts=opts.LabelOpts(formatter=":{c}")).render_notebook())brandCountsBar京東電商客戶喜好的商品大類及細分類型分析京東電商客戶喜好的商品大類及細分類型分析繪制矩形樹形圖分析京東電商客戶喜好的各商品大類產品的購買情況path=r'data\df_product_buy.xlsx'df_product_buy=pd.read_excel(path)df=df_product_buy.groupby(['shop_category','category','brand']).agg({'購買數量':'sum'})df.reset_index(inplace=True)tdata=[]foriindf.shop_category.unique():df_child1=[]forjindf[(df['shop_category']==i)].category.unique():df_child2=[]forkinrange(0,df[(df['shop_category']==i)&(df['category']==j)].shape[0]):df_child2.append({"value":df[(df['shop_category']==i)&(df['category']==j)].購買數量.tolist()[k],"name":df[(df['shop_category']==i)&(df['category']==j)].brand.tolist()[k]})京東電商客戶喜好的商品大類及細分類型分析df_child1.append({"value":df[(df['shop_category']==i)&(df['category']==j)].購買數量.sum(),"name":j,"children":df_child2,})tdata.append({"value":df[df['shop_category']==i].購買數量.sum(),"name":i,"children":df_child1,})treemap=(TreeMap(init_opts=opts.InitOpts(width="900px",height="600px")).add(series_name="商品大類",data=tdata,leaf_depth=1,label_opts=opts.LabelOpts(position="inside",formatter=':{c}'),).set_global_opts(title_opts=opts.TitleOpts(title="各商品大類產品的購買情況"),))treemap.render_notebook()京東電商客戶喜好的商品大類及細分類型分析從圖8-9可以看出:共有9種一級分類,即9個商品大類,其中Electronics大類的購買數量遠超其他大類的。繪制自定義樣式柱形圖分析京東電商客戶喜好的商品大類京東電商客戶喜好的商品大類及細分類型分析2.針對數據集df_product分析京東電商客戶喜好的商品小類導入模塊導入通用模塊的代碼詳見“本書導學”,其他模塊導入的代碼詳見“1.針對數據集df_product分析京東電商客戶喜好的商品大類”。讀取數據與預處理path=r'data\df_product.xlsx'data1=pd.read_excel(path,parse_dates=['date'],dtype={'customer_id':str,'product_id':str})data1=data1.drop('Unnamed:0',axis=1)df_short=data1在JupyterNotebook開發(fā)環(huán)境中創(chuàng)建tc08-02-02.ipynb,然后在單元格中編寫代碼并輸出對應的結果。京東電商客戶喜好的商品大類及細分類型分析查看商品小類與統(tǒng)計商品小類的數量category10=df_short['category'].value_counts().head(10)category10繪制餅圖分析京東電商客戶喜好的商品小類方法1的代碼如下:pyplot=py.offline.iplottrace=[go.Pie(labels=category10.index.tolist(),values=category10.values.tolist(),textfont=dict(size=12,color='white'))]layout=go.Layout(title='統(tǒng)計數量排前10位的商品小類的數量占比情況')fig=go.Figure(data=trace,layout=layout)pyplot(fig)京東電商客戶喜好的商品大類及細分類型分析掃描二維碼在線瀏覽電子活頁8-10“繪制餅圖分析京東電商客戶喜好的商品小類方法2”中的代碼及繪制的圖形。繪制條形圖分析京東電商客戶喜好的商品小類plt.figure(figsize=(10,6))sns.barplot(y=category10.index,x=category10.values).set(title='統(tǒng)計數量排前10位的商品小類')plt.show()京東電商客戶喜好的商品大類及細分類型分析繪制柱形圖分析京東電商客戶喜好的商品小類plt.figure(figsize=(10,6),dpi=80)plt.bar(x=category10.index,height=category10.values,width=0.5)forx,yinzip(category10.index,category10.values):plt.text(x,y,'{0}'.format(y),ha='center',va='bottom')plt.xlabel('產品小類')plt.ylabel('統(tǒng)計數量')plt.title('統(tǒng)計數量排前10位的商品小類')plt.xticks(rotation=30)plt.show()方法1的代碼如下:京東電商客戶喜好的商品大類及細分類型分析繪制棒棒糖圖分析京東電商客戶喜好的商品小類掃描二維碼在線瀏覽電子活頁8-11“繪制柱形圖分析京東電商客戶喜好的商品小類方法2”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-12“繪制柱形圖分析京東電商客戶喜好的商品小類方法3”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-13“繪制柱形圖分析京東電商客戶喜好的商品小類方法4”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-14“繪制棒棒糖圖分析京東電商客戶喜好的商品小類”中的代碼及繪制的圖形。京東電商客戶喜好的商品大類及細分類型分析繪制商品類型名稱詞云圖cloud1_name=df_short.groupby(['category']).count().sort_values(by='customer_id',ascending=False)['customer_id'].index.to_list()cloud1_num=df_short.groupby(['category']).count().sort_values(by='customer_id',ascending=False)['customer_id'].to_list()cloud1=WordCloud(init_opts=opts.InitOpts(width='600px',height='400px'))cloud1.add('',[list(z)forzinzip(cloud1_name,cloud1_num)],word_size_range=[10,80])cloud1.set_global_opts(title_opts=

opts.TitleOpts(title="商品類型名稱詞云",pos_left='center',pos_top='2%'))cloud1.render_notebook()京東電商客戶喜好的商品大類及細分類型分析3.針對數據集df_product_buy分析京東電商客戶喜好的商品小類讀取數據與預處理path=r'data\df_product_buy.xlsx'df_product_buy=pd.read_excel(path)df_product_buy=df_product_buy.drop('Unnamed:0',axis=1)df_product_buy.head()查看數據集中所有商品小類的總購買數量df_product_buy['購買數量'].sum()輸出結果:945京東電商客戶喜好的商品大類及細分類型分析統(tǒng)計購買數量排前10位的商品小類的購買數量cate_sale=df_product_buy.groupby('category').agg({'購買數量':'sum'})cate_sale.rename(columns={'購買數量':'購買數量'},inplace=True)cate_sale.sort_values(by='購買數量',inplace=True,ascending=False)cate_sale.reset_index(inplace=True)cate_sale=cate_sale.head(10)cate_sale查看數據集中購買數量排前10位的商品小類的總購買數量cate_sale['購買數量'].sum()輸出結果:610繪制自定義樣式條形圖分析購買數量排前10位的商品小類繪制自定義樣式玫瑰圖分析購買數量排前10位的商品小類京東電商客戶喜好的商品大類及細分類型分析4.針對數據集df_consume分析京東電商客戶喜好的商品小類讀取數據與預處理導入通用模塊的代碼詳見“本書導學”,其他模塊導入的代碼詳見“1.針對數據集df_product分析京東電商客戶喜好的商品大類”。讀取數據與預處理data2=pd.read_excel(r'.\data\df_consume.xlsx',dtype={'customer_id':str})df_label=data2.copy()cate_most=df_label[['customer_id','cate_most_browse','cate_most_follow','cate_most_savedCart','cate_most_order']].copy()most_browse=cate_most.copy()most_browse.dropna(axis=0,subset=['cate_most_browse'],how='all',inplace=True)most_browse.reset_index(drop=True,inplace=True)cate_most_browse=pd.DataFrame(cate_most[cate_most['cate_most_browse']!='NoRec']['cate_most_browse].value_counts())cate_most_browse.head()在JupyterNotebook開發(fā)環(huán)境中創(chuàng)建tc08-02-03.ipynb,然后在單元格中編寫代碼并輸出對應的結果。京東電商客戶喜好的商品大類及細分類型分析對數據集“商品類型”列中包含的多個類型名稱進行分解cate_most_browse1=[]foriinrange(most_browse.shape[0]):browse=most_browse['cate_most_browse'].loc[i].split(',')forjinrange(len(browse)):cate=browse[j]cate_most_browse1.append(cate)cate_most_browse1=pd.DataFrame(cate_most_browse1)cate_most_browse1['瀏覽次數']=1cate_most_browse1.rename(columns={0:'商品類型'},inplace=True)cate_most_browse1統(tǒng)計各種商品類型的瀏覽次數cate_most_browse2=cate_most_browse1.groupby('商品類型').count()cate_most_browse2.sort_values(by=['瀏覽次數'],ascending=False,inplace=True)京東電商客戶喜好的商品大類及細分類型分析獲取瀏覽次數排前10位的商品類型方法1的代碼如下:cate_most_browse3=cate_most_browse2.head(10).copy()cate_most_browse3.reset_index(inplace=True)cate_most_browse3cate_category10=cate_most_browse1['商品類型'].value_counts().head(10)方法2的代碼如下:cate_most_browse10=cate_most_browse2.head(10)cate_most_browse10方法3的代碼如下:京東電商客戶喜好的商品大類及細分類型分析繪制條形圖分析京東電商客戶瀏覽次數排前10位的商品類型plt.figure(figsize=(10,8))sns.barplot(y=cate_category10.index,x=cate_category10.values)

.set(title='京東電商客戶瀏覽次數排前10位的商品類型')plt.show()京東電商客戶喜好的商品大類及細分類型分析繪制柱形圖分析京東電商客戶瀏覽次數排前10位的商品類型bar1=(Bar().add_xaxis(cate_most_browse3['商品類型'].to_list()).add_yaxis('商品類型',cate_most_browse3['瀏覽次數'].to_list()).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),

title_opts=opts.TitleOpts(title="瀏覽次數")))bar1.render_notebook()方法1的代碼如下:京東電商客戶喜好的商品大類及細分類型分析定義拆分數據集“商品類型”列中包含的多個類型名稱的函數掃描二維碼在線瀏覽電子活頁8-15“繪制柱形圖分析京東電商客戶瀏覽次數排前10位的商品類型方法2”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-16“繪制柱形圖分析京東電商客戶瀏覽次數排前10位的商品類型方法3”中的代碼及繪制的圖形。defdecompose(cate_most_name,name):most_x=cate_most.copy()most_x.dropna(axis=0,subset=[cate_most_name],how='all',inplace=True)most_x.reset_index(drop=True,inplace=True)cate_most_type=[]foriinrange(most_x.shape[0]):category=most_x[cate_most_name].loc[i].split(',')京東電商客戶喜好的商品大類及細分類型分析forjinrange(len(category)):cate=category[j]cate_most_type.append(cate)cate_most_category=pd.DataFrame(cate_most_type)cate_most_category[name]=1cate_most_category.rename(columns={0:'商品類型'},inplace=True)returncate_most_category京東電商客戶喜好的商品大類及細分類型分析繪制柱形圖分析京東電商客戶訂購次數排前10位的商品類型掃描二維碼在線瀏覽電子活頁8-17“繪制柱形圖分析京東電商客戶加入購物車次數排前10位的商品類型”中的代碼及繪制的圖形。掃描二維碼在線瀏覽電子活頁8-18“繪制柱形圖分析京東電商客戶加入購物車次數排前10位的商品類型方法2”中的代碼及繪制的圖形。cate_most_order1=decompose('cate_most_order','訂購次數')['商品類型'].value_counts().head(10)cate_most_order1.plot(kind='bar',color=['b','g','m'],figsize=(10,6))plt.title('京東電商客戶訂購次數排前10位的商品類型',size=15)plt.xticks(rotation=45)plt.show()繪制柱形圖分析京東電商客戶加入購物車次數排前10位的商品類型方法1的代碼如下:京東電商客戶喜好的商品大類及細分類型分析繪制柱形圖分析實際購買數量較多的京東電商客戶actual_buy_data=df_label[df_label.time_order.isnull()==False]actual_buy_data_counts=actual_buy_data.cate_most_order.value_counts()actual_buy_data_counts=actual_buy_data_counts[actual_buy_data_counts>150]數據集中“time_order”列的值不為空,則表示實際購買。獲取客戶實際購物數據的代碼如下:京東電商客戶喜好的商品大類及細分類型分析actual_buy_data_countsBar=Bar()actual_buy_data_countsBar.add_xaxis(actual_buy_data_counts.keys().tolist())actual_buy_data_countsBar.add_yaxis("購買數量",actual_buy_data_counts.values.tolist())actual_buy_data_countsBar.set_global_opts(title_opts=opts.TitleOpts(title="京東電商客戶購買數量較多的商品"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),tooltip_opts=opts.TooltipOpts(trigger="axis",is_show=True,trigger_on="click",axis_pointer_type="cross",border_color="#FF0000",border_width=5),legend_opts=opts.LegendOpts(type_="plain",is_show=True,orient="vertical",pos_left='right'),)actual_buy_data_countsBar.set_series_opts(label_opts=opts.LabelOpts(formatter=":{c}"))actual_buy_data_countsBar.render_notebook()分析實際購買數量較多的京東電商客戶,繪制其實際購買數量柱形圖的代碼如下:京東電商客戶喜好的商品大類及細分類型分析在同一區(qū)域繪制多張柱形圖分析瀏覽次數、收藏次數、加入購物車次數和訂購次數排前5位的客戶n=5#取前5位df1=decompose('cate_most_browse','瀏覽次數')['商品類型'].value_counts().to_frame().head(n)df1.rename(columns={'商品類型':'瀏覽次數'},inplace=True)df2=decompose('cate_most_follow','收藏次數')['商品類型'].value_counts().to_frame().head(n)df2.rename(columns={'商品類型':'收藏次數'},inplace=True)df3=decompose('cate_most_savedCart','加入購物車次數')['商品類型'].value_counts().to_frame().head(n)df3.rename(columns={'商品類型':'加入購物車次數'},inplace=True)df4=decompose('cate_most_order','訂購次數')['商品類型'].value_counts().to_frame().head(5)df4.rename(columns={'商品類型':'訂購次數'},inplace=True)京東電商客戶喜好的商品大類及細分類型分析繪制多張柱形圖的代碼如下:plt.figure(figsize=(10,8)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論