大數據可視化 課件 項目6 Plotly實戰_第1頁
大數據可視化 課件 項目6 Plotly實戰_第2頁
大數據可視化 課件 項目6 Plotly實戰_第3頁
大數據可視化 課件 項目6 Plotly實戰_第4頁
大數據可視化 課件 項目6 Plotly實戰_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目六:—Plotly實戰(用戶行為數據可視化)目錄CONTENTS思考與練習項目概述學習目標用戶畫像數據清洗用戶畫像數據可視化1項目概述在步入大數據時代后,為了更加精準地挖掘市場需求,企業的關注點逐步聚焦在如何利用大數據技術實現精細化運營和精準營銷,這就需要建立本企業的用戶畫像。項目概述本項目結合Plotly繪圖基礎,重點掌握建立企業用戶畫像的一般流程,掌握數據清洗的幾種常用方法,掌握用戶畫像數據的分析方法,靈活利用Plotly可視化工具對分析結果進行展示。本項目主要掌握以下兩個方面的技術:數據清洗的常用方法1Plotly數據可視化方法2項目概述2學習目標

學習目標通過本項目的學習,能夠熟練掌握用戶畫像的相關思維方法,結合項目案例數據集特點,能夠熟練應用Pandas工具包對數據集進行清洗操作,能夠熟練利用Plotly可視化工具實現對分析結果的可視化。通過項目案例的實戰操作,進一步拓寬用戶畫像的思維視野,提升使用Plotly可視化工具的可視化的能力,為做一個合格的大數據專業技術人才奠定堅實的基礎。3用戶畫像數據清洗用戶畫像是根據用戶社會屬性、生活習慣和消費行為等信息抽象出的用戶分析模型。構建用戶畫像的核心工作即是給用戶貼“標簽”,用數據來描述人的行為和特征。用戶畫像維度可以分為自然屬性、社會屬性、消費屬性等,其中自然屬性主要包括年齡、性別、屬地、職業等;社會屬性主要包括抖音(微博)粉絲數、關注數等,消費屬性主要包括消費偏好、下單頻率、消費金額等。任務描述本項目任務主要是對使用某品牌筆記本電腦的用戶的自然屬性、社會屬性和消費屬性的數據進行數據清洗和預處理,利用Pandas數據清洗工具包完成數據集的清洗。包括但不限于以下數據清洗方法:數據集加載、數據去重、缺失值判斷、對缺失值處理、數字轉換等,為后續數據統計分析和分析結果的可視化奠定基礎。通過本任務的學習,掌握Pandas包中數據清洗和預處理的常用函數,如數據去重函數、缺失值處理函數等,并靈活運用Pandas工具包實現對數據的清洗操作。任務描述知識與技能——數據清洗應用方法很多數據集存在數據重復、數據缺失、數據格式不統一(畸形數據),或錯誤數據的情況,這就是所謂的“臟數據”,這種數據不僅影響數據的統計分析、也影響數據的可視化展示,還會給嚴重影響數據模型的訓練。對“臟數據”的科學化、合理化的清洗也是大數據分析或者人工智能領域的重要技術環節。Pandas是Python中非常流行的數據分析庫,使用它可以進行數據科學計算和數據處理和分析,并且可以聯合其他數據科學計算工具一塊兒使用,比如,SciPy,NumPy和Matplotlib等。但在實際業務中,Pandas工具包更多的是應用在數據清洗上,本任務主要針對Pandas在數據清洗上的應用做簡單介紹。知識與技能——數據清洗應用方法1.DataFramehead()方法返回DataFrame或Series的前n行,其中n是用戶輸入值(默認為5行)。head()函數用于獲取前n行,這對于快速測試對象中的數據類型是否正確非常有用。對于n的負值,head()函數返回除最后n行之外的所有行,等效于df[:-n]語法格式:Dataframe.head(n=5);參數說明:n為整數值,要返回的行數,python中的head()函數只是選擇數據,而不對數據內容做任何改變。知識與技能——數據清洗應用方法2.info()函數用于獲取DataFrame

的簡要摘要。在對數據進行探索性分析時,為了快速瀏覽數據集,我們使用()函數。語法格式:DataF(verbose=None,buf=None,max_cols=None,memory_usage=None,null_counts=None)參數說明:Verbose:是否打印完整的摘要;Buf:可寫緩沖區;max_cols:確定是打印完整摘要還是簡短摘要;memory_usage:指定是否應顯示DataFrame元素(包括索引)的總內存使用情況;null_counts:是否顯示非空計數。如果為None,則僅顯示框架是否小于max_info_rows和max_info_columns。如果為True,則始終顯示計數。如果為False,則從不顯示計數。知識與技能——數據清洗應用方法3.drop_duplicates()函數根據指定的字段對數據集進行去重處理。語法格式:DataFrame.drop_duplicates(subset=None,keep=‘first’,inplace=False)參數說明:Subset:根據指定的列名進行去重,默認整個數據集;Keep:可選{‘first’,‘last’,False},默認first,即默認保留第一次出現的重復值,并刪去其他重復的數據,False是指刪去所有重復數據;Inplace:是否對數據集本身進行修改,默認False。知識與技能——數據清洗應用方法4.dropna()函數用來刪除含有空值的行。函數格式:dropna(axis=0,how=‘any’,thresh=None,subset=None,inplace=False)參數說明:axis:0或’index’,表示按行刪除;1或’columns’,表示按列刪除;how:‘any’,表示該行/列只要有一個以上的空值,就刪除該行/列;‘all’,表示該行/列全部都為空值,就刪除該行/列;thresh:int型,默認為None。如果該行/列中,非空元素數量小于這個值,就刪除該行/列;subset:子集。列表,按columns所在的列(或index所在的行)刪除;inplace:是否原地替換調原來的dataframe。布爾值,默認為False。本數據集共包含樣本21480條,樣本共有20列,其中user_id為用戶ID,每列均有字段說明,如表所示。序號字段名稱字段說明1user_id用戶ID2product_name產品名稱和規格3product_price產品價格4age年齡5sex性別6membership_level會員等級7marriage婚姻狀況8city城市9occupation職業10edu_level教育程度11platform_value平臺價值12loyalty忠誠度13brand_prefer品牌偏好14prefer_third_level三級品類下單偏好15bro_prefer_third_level三級品類瀏覽偏好16purchasingpower購買力17promotion_sensitivity促銷敏感度18comment_sensitivity評論敏感度19activity活躍度20city_level城市級別知識與技能——數據集介紹第一步:導入相關包第二步:讀取數據第三步:查看數據的摘要信息任務實施——查看數據摘要importnumpyasnpimportpandasaspddf=pd.read_excel('data.xlsx',index_col=0)()任務實施——查看數據摘要根據以上結果能夠看出:數據樣本總共21480條,product_name和product_price字段無缺失值,其它字段均有數據缺失。我們打開源數據也能看到數據的缺失情況,如下圖所示。任務實施——空值處理因樣本有的特征缺失過多,并且本教材內容重點關注的是數據的可視化,所以我們這里直接刪除含有缺失特征的樣本,不再涉及缺失值填充的相關知識,對缺失數據填充的相關知識大家可以參考其他資料進行學習。#刪除缺失數據df=df.dropna()#顯示數據基本信息()刪除缺失數值數據后,得到上圖所示的結果任務實施——處理重復值這里我們使用drop_duplicates()函數對數據集進行去重處理。df.drop_duplicates()#查看數據的摘要信息()去除重復值后,樣本個數未3640,去除了三條重復值任務實施——處理重復值數據倒數第二列activity其值只有兩種類別:“一周內非常活躍”與“一周內活躍”,此列中“一周內非常活躍”更能表達用戶的購買傾向與購買意愿,為了便于后續的統計分析與可視化呈現,我們這里約定一個轉變規則,就是將“一周內非常活躍”轉變為數字“1”,一周內活躍”轉變為數字“0”。#activity類別數字化df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)#輸出activity替換結果和統計值replace_counts=df['activity'].value_counts()通過對Pandas工具包的學習,掌握了常用的數據清洗函數的使用,如數據的去重、數據的缺失值處理等方法,為后續的數據分析與可視化任務奠定了基礎。數據清洗作為數據可視化的前端技術,在企業中有著重要的應用,因本任務所涉及的數據處理方法有限,有興趣的小伙伴多查閱相關資料來進一步提升數據清洗的相關知識和技能。任務總結4用戶畫像數據可視化任務描述本項目任務針對數據集的特征,區分出用戶的自然屬性、社會屬性以及消費屬性,探索用戶特征與三級品類瀏覽偏好、三級品類下單偏好、以及活躍度之間的關系。從用戶年齡分布、會員等級、性別、教育程度等屬性探索用戶的偏好,并對分析結果可視化,為企業挖掘市場需求,實現精準營銷提供技術支持。本任務首先需要將用戶數據特征中的年齡、性別、職業、教育程度劃分為自然屬性,把城市、城市級別、忠誠度、購買力、促銷敏感度、評論敏感度劃分為社會屬性,三級品類瀏覽偏好、三級品類下單偏好、活躍度、品牌偏好劃分為消費屬性。然后探索自然屬性對消費屬性的影響,探索社會屬性對消費屬性的影響,因篇幅關系,我們這里選取部分的自然屬性和社會屬性做探索,其他未涉及到的屬性,有興趣的小伙伴可以自行研究。通過本任務的學習,掌握用戶畫像的一般方法和步驟,靈活結合數據分析思想和Plotly數據可視化工具實現對分析結果的可視化呈現,鞏固理論知識、提升大數據分析與可視化技能水平,為做一個合格的大數據領域的人才打下基礎。用戶畫像是指通過收集用戶的自然屬性、社會屬性、消費習慣、興趣偏好等各個維度的數據,進一步統計并挖掘潛在的價值信息,進而對用戶的信息全貌進行刻畫的過程。用戶畫像的核心是將用戶的具體信息抽象為標簽,利用這些標簽將用戶形象具體化,每一個標簽都描述了一個維度,各個維度相互聯系,共同構成對用戶的一個整體描述。知識與技能——用戶畫像介紹在上面的描述中,標簽是個抽象的詞匯,標簽有不同的分類,常見的有統計類標簽、規則類標簽等。下面我們對統計類標簽和規則類標簽做簡單介紹。知識與技能——用戶畫像介紹0102如姓名、性別、年齡、地市、活躍時長等。這類標簽一般描述用戶的基本屬性,也稱為自然屬性。統計類標簽像金牌會員、銀牌會員和銅牌會員等,這類標簽一般時按照某種約定的規則制定,如“每周消費大于1000元”稱為金牌會員。規則類標簽知識與技能——構建用戶畫像步驟本任務項目案例已經準備好了數據集,下一步就是探索用戶屬性對用戶行為的關系,這里,我們分為以下二個步驟實現用戶畫像。序號字段名稱字段說明1user_id用戶ID2age年齡3sex性別4city城市5occupation職業6edu_level教育程度7city_level城市級別8marriage婚姻狀況9product_name產品名稱和規格10product_price產品價格1.確定用戶的屬性分類我們把用戶數據集中的屬性分為自然屬性、社會屬性和消費屬性,分別對應下面的表6-2、表6-3和表6-4。表6-2知識與技能——構建用戶畫像步驟序號字段名稱字段說明1membership_level會員等級2platform_value平臺價值3loyalty忠誠度4purchasingpower購買力5promotion_sensitivity促銷敏感度6comment_sensitivity評論敏感度序號字段名稱字段說明1prefer_third_level三級品類下單偏好2bro_prefer_third_level三級品類瀏覽偏好3activity活躍度4brand_prefer品牌偏好表6-3表6-4知識與技能——構建用戶畫像步驟2.

數據分析與可視化本項目案例,我們探索部分屬性與消費屬性的關系,主要從以下幾個方面進行分析與可視化呈現:01用戶數據的年齡分布02不同會員等級一周內非常活躍的用戶分布03不同性別不同會員等級一周內非常活躍的用戶數04不同購買力下,一周內非常活躍用戶分布占比05不同忠誠度下,一周內非常活躍用戶占比06不同年齡段一周內非常活躍的用戶占比07不同會員等級對三級品類下單偏好分布任務實施——用戶年齡分布針對所有用戶,觀察用戶的年齡分布情況,這里我們選擇通過繪制柱狀圖來展示,代碼如下:importnumpyasnpimportpandasaspd%matplotlibinlineimportplotlyimportplotly.graph_objsasgo#fromplotly.offlineimportinit_notebook_mode,iplot#init_notebook_mode(connected=True)#importplotly.ioaspio#當瀏覽器不支持渲染當前圖時,可以用下列代碼選擇支持瀏覽器版本importplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)trace=[go.Histogram(x=df.age)]第一步:導包加載數據數據預處理引入直方圖函數任務實施——用戶年齡分布第二步:設置布局并顯示圖形layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"用戶年齡分布",

'y':0.9,

'x':0.5

})#iplot(fig)fig.show()輸出效果圖如下所示:任務實施——不同會員等級的用戶分布查看不同會員等級下一周內非常活躍用戶分布,我們使用圖柱狀來進行可視化展示,示例代碼如下:importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)data

=df.groupby(by='membership_level')['activity'].sum()x=data.indexy=data.values第一步:導包數據預處理任務實施——不同會員等級的用戶分布trace=[go.Bar(x=list(x),y=y)]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同會員等級下一周內非常活躍用戶分布圖",

'y':0.9,

'x':0.5})fig.show()第二步:設置布局并顯示圖形輸出效果圖如下所示:任務實施——不同性別和不同會員等級的用戶分布我們使用并列柱狀圖來展示不同性別和不同會員等級的用戶分布,示例代碼如下:importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)data_female

=df[df["sex"]=="女"].groupby(by='membership_level')['activity'].sum()data_male

=df[df["sex"]=="男"].groupby(by='membership_level')['activity'].sum()第一步:導包數據預處理統計計算任務實施——不同性別和不同會員等級的用戶分布第二步:設置布局并顯示圖形trace0=go.Bar(

x=list(data_female.index),

y=data_female.values,

name='男')trace1=go.Bar(

x=list(data_male.index),

y=data_male.values,

name='女')trace=[trace0,trace1]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同性別不同會員等級下一周內非常活躍用戶分布圖",

'y':0.9,

'x':0.5})fig.show()任務實施——不同性別和不同會員等級的用戶分布輸出效果圖如下所示:任務實施——不同購買力活躍的用戶分布我們使用餅圖來展示不同購買力一周之內非常活躍的用戶分布情況,示例代碼如下importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)

data_pie=df.groupby(by='purchasingpower')['activity'].sum()pie=go.Pie(labels=list(data_pie.index),

values=data_pie.values,textfont=dict(size=22))

第一步:導包處理數據任務實施——不同購買力活躍的用戶分布第二步:設置布局并顯示圖形trace=[pie]layout=go.Layout(

font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.1,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同購買力一周內非常活躍的用戶分布",

'y':0.9,

'x':0.5})#iplot(fig)fig.show()任務實施——不同購買力活躍的用戶分布輸出效果如下圖所示:任務實施——不同年齡段活躍的用戶分布第一步:導包處理數據我們使用餅圖來展示不同年齡段一周之內非常活躍的用戶分布情況,示例代碼如下importnumpyasnpimportpandasaspd#importmatplotlib.pyplotasplt#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)data_pie=df.groupby(by='age')['activity'].sum()pie=go.Pie(labels=list(data_pie.index),

values=data_pie.values,textfont=dict(size=22),pull=[0.3,0.1,0,0])

任務實施——不同年齡段活躍的用戶分布第二步:設置布局并顯示圖形trace=[pie]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.1,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同年齡段一周內非常活躍的用戶分布",

'y':0.9,

'x':0.5})#iplot(fig)fig.show()任務實施——不同年齡段活躍的用戶分布輸出效果圖如下所示:任務實施——不同會員等級三級品類下單偏好我們使用箱線圖來展示不同不同會員等級對三級品類下單偏好分布,示例代碼如下importnumpyasnpimportpandasaspd#importmatplotlib.pyplotasplt#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周內非常活躍",1,inplace=True)df["activity"].replace("一周內活躍",0,inplace=True)第一步:導包數據預處理任務實施——不同會員等級三級品類下單偏好第二步:創建trace#builddatabox1=go.Box(

y=df[df['membership_level']=='金牌會員']['prefer_third_level'].dropna(),

name='金牌會員')box2=go.Box(

y=df[df['membership_level']=='鉆石會員']['prefer_third_level'].dropna(),

name='鉆石會員')box3=go.Box(

y=df[df['membership_level']=='銅牌會員']['prefer_third_level'].dropna(),

name='銅牌會員')box4=go.Box(

y=df

溫馨提示

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

評論

0/150

提交評論