數(shù)據(jù)可視化技術(shù)與應(yīng)用(Python) 課件 項(xiàng)目6-10 疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn) -全球智慧城市平臺(tái)可視化綜合項(xiàng)目實(shí)戰(zhàn)_第1頁
數(shù)據(jù)可視化技術(shù)與應(yīng)用(Python) 課件 項(xiàng)目6-10 疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn) -全球智慧城市平臺(tái)可視化綜合項(xiàng)目實(shí)戰(zhàn)_第2頁
數(shù)據(jù)可視化技術(shù)與應(yīng)用(Python) 課件 項(xiàng)目6-10 疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn) -全球智慧城市平臺(tái)可視化綜合項(xiàng)目實(shí)戰(zhàn)_第3頁
數(shù)據(jù)可視化技術(shù)與應(yīng)用(Python) 課件 項(xiàng)目6-10 疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn) -全球智慧城市平臺(tái)可視化綜合項(xiàng)目實(shí)戰(zhàn)_第4頁
數(shù)據(jù)可視化技術(shù)與應(yīng)用(Python) 課件 項(xiàng)目6-10 疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn) -全球智慧城市平臺(tái)可視化綜合項(xiàng)目實(shí)戰(zhàn)_第5頁
已閱讀5頁,還剩298頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

疾病數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)數(shù)據(jù)可視化技術(shù)與應(yīng)用數(shù)據(jù)可視化技術(shù)與應(yīng)用課程開發(fā)組項(xiàng)目導(dǎo)讀

對(duì)普通大眾來說,將疾病數(shù)據(jù)可視化能夠?yàn)槠涮峁椭?。本?xiàng)目旨在通過可視化的方式展示疾病數(shù)據(jù),包括心血管疾病與年齡相關(guān)性數(shù)據(jù)、心血管疾病與酒精攝入量相關(guān)性數(shù)據(jù),以及心臟疾病相關(guān)數(shù)據(jù)。利用數(shù)據(jù)可視化技術(shù),將這些數(shù)據(jù)以堆疊柱狀圖和小提琴圖的形式展示出來,可以方便人們更好地分析引起疾病的相關(guān)因素。項(xiàng)目導(dǎo)讀01健康意識(shí)提升03科學(xué)決策支持02疾病預(yù)防和管理通過疾病數(shù)據(jù)的可視化展示,能夠更直觀地了解心血管疾病與年齡、酒精攝入量等因素之間的關(guān)系。這有助于提高對(duì)健康風(fēng)險(xiǎn)的認(rèn)識(shí),引發(fā)對(duì)潛在疾病因素的關(guān)注,并更好地調(diào)整生活方式和飲食習(xí)慣。通過對(duì)疾病數(shù)據(jù)進(jìn)行可視化分析,可以了解不同因素對(duì)心血管疾病和心臟疾病的影響程度。這有助于更好地預(yù)防和管理疾病,例如控制飲食、限制酒精攝入量、加強(qiáng)鍛煉等,以降低患病風(fēng)險(xiǎn)和改善生活質(zhì)量。疾病數(shù)據(jù)可視化項(xiàng)目為普通大眾提供了直觀的數(shù)據(jù)展示,能夠更好地了解疾病的發(fā)病因素和相關(guān)規(guī)律。這將為政府、醫(yī)療機(jī)構(gòu)和相關(guān)決策者提供有價(jià)值的參考,幫助他們制定更科學(xué)和有效的疾病預(yù)防和管理策略。項(xiàng)目目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)素養(yǎng)目標(biāo)掌握使用Plotly模塊繪制堆疊柱狀圖的方法掌握使用Plotly模塊繪制小提琴圖的方法從數(shù)據(jù)的角度能了解小提琴圖的使用場(chǎng)景從數(shù)據(jù)的角度區(qū)分柱狀圖、分組柱狀圖和堆疊柱狀圖的使用場(chǎng)景通過疾病數(shù)據(jù)可視化培養(yǎng)學(xué)生的科學(xué)精神,了解科學(xué)方法和數(shù)據(jù)分析在疾病研究和預(yù)防控制中的重要性心血管疾病與年齡相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)心血管疾病與身高和體重相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)心臟疾病相關(guān)性數(shù)據(jù)可視化項(xiàng)目010302總結(jié)與建議04目錄CONCENTS6-1心血管疾病與年齡相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值使用堆疊柱狀圖進(jìn)行數(shù)據(jù)可視化分析0102目錄CONCENTS6-1-1檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-數(shù)據(jù)概述素材與案例\項(xiàng)目6\數(shù)據(jù)集\心血管疾病數(shù)據(jù)集.CSV

檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-數(shù)據(jù)概述字段名稱字段含義idIDage年齡(天)gender性別height身高(厘米)weight體重(千克)ap_hi收縮壓ap_lo舒張壓cholesterol膽固醇,1:正常;2:高于正常;3:遠(yuǎn)高于正常gluc葡萄糖,1:正常;2:高于正常;3:遠(yuǎn)高于正常smoke病人是否吸煙alco酒精攝入量active體育活動(dòng)cardio有無心血管疾病檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值任務(wù)一對(duì)于“Age”列是年齡,那么年齡的范圍不能過大,可以假定年齡的范圍是20-100,那么不在此范圍的年齡被視為異常值,通過以下代碼完成異常值的過濾。檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值importpandasaspd#讀取CSV文件df=pd.read_csv(r'C:\Users\Administrator\Desktop\心血管疾病數(shù)據(jù)集.csv')#將“age”列除以365并取整df['age']=(df['age']/365).astype(int)#檢查“age”列的范圍并打印出不在20-100之間的行號(hào)invalid_age_indices=df[(df['age']<20)|(df['age']>100)].indexprint("不在20-100范圍內(nèi)的行:",invalid_age_indices)代碼如下:可知代碼輸出沒有發(fā)現(xiàn)“age”列的異常值檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值運(yùn)行結(jié)果:檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值df['age']=(df['age']/365).astype(int)這行代碼針對(duì)DataFrame中的“age”列,將其除以365并轉(zhuǎn)換為整數(shù)類型,以實(shí)現(xiàn)將年齡轉(zhuǎn)換為天數(shù),并且取整以得到年齡的整數(shù)值。invalid_age_indices=df[(df['age']<20)|(df['age']>100)].index這行代碼通過條件篩選,找出“age”列中不在20-100范圍內(nèi)的行,并使用index屬性獲取這些行的索引。代碼講解:檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值任務(wù)二對(duì)于“cardio”列表示有無心血管疾病,通過使用0和1來表示,那么在這一列中不能出現(xiàn)除了0和1之外的數(shù)字或字符,通過以下代碼來過濾“cardio”列中的異常值。檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值#讀取CSV文件importpandasaspd#讀取CSV文件心血管疾病數(shù)據(jù)集df=pd.read_csv(r'C:\Users\Administrator\Desktop\心血管疾病數(shù)據(jù)集.csv')#篩選出“cardio”列中不是0或1的行invalid_cardio_rows=df[~df['cardio'].isin([0,1])]ifinvalid_cardio_rows.empty:print("沒有異常值")else:print("不是0或1的行號(hào)和內(nèi)容:")forindex,rowininvalid_cardio_rows.iterrows():print(f"行號(hào):{index},內(nèi)容:{row['cardio']}")代碼如下:可知代碼輸出沒有發(fā)現(xiàn)“cardio”列的異常值檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值運(yùn)行結(jié)果:檢查心血管疾病與年齡相關(guān)性數(shù)據(jù)的異常值-年齡異常值df['cardio'].isin([0,1])

使用isin([0,1])方法來檢查“cardio”列中的值是否是0或者1。這個(gè)方法返回一個(gè)布爾類型的Series,標(biāo)記了是否滿足條件。~:~符號(hào)代表邏輯取反,將滿足條件的行變?yōu)镕alse,不滿足條件的行變?yōu)門rue。代碼講解:6-1-2使用堆疊柱狀圖進(jìn)行數(shù)據(jù)可視化分析使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析知識(shí)新知堆疊柱狀圖可以用于比較銷售數(shù)據(jù)、分析人口統(tǒng)計(jì)數(shù)據(jù)、展示支出構(gòu)成以及進(jìn)行市場(chǎng)份額分析。通過將數(shù)據(jù)以堆疊的方式呈現(xiàn),這種圖表能夠直觀地顯示不同組成部分的相對(duì)比例和差異,幫助我們更好地理解數(shù)據(jù)的分布和關(guān)系。無論是經(jīng)營(yíng)決策、預(yù)算分配還是市場(chǎng)競(jìng)爭(zhēng)分析,堆疊柱狀圖都可以提供直觀且易于理解的視覺展示。在堆疊柱狀圖中,每個(gè)柱子代表一個(gè)類別或組別,而柱子的高度表示該類別或組別的數(shù)值。不同類別或組別的柱子在同一個(gè)位置上堆疊,并通過顏色來區(qū)分。任務(wù)一對(duì)心血管疾病與年齡相關(guān)性數(shù)據(jù)進(jìn)行堆疊柱狀圖的可視化分析。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析importplotly.expressaspximportcsvimportpandasaspddata=[]withopen(r'C:\Users\Administrator\Desktop\心血管疾病數(shù)據(jù)集.csv',newline='')ascsvfile:reader=csv.DictReader(csvfile)forrowinreader:row['age_years']=int(int(row['age'])/365)data.append(row)df=pd.DataFrame(data)代碼如下:使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析grouped=df.groupby(['age_years','cardio']).size().unstack().reset_index()grouped=grouped.fillna(0)fig=px.bar(grouped,x='age_years',y=['0','1'],barmode='stack',labels={'0':'No','1':'Yes'},title='心血管疾病與年齡相關(guān)性')fig.update_layout(xaxis_title='年齡',yaxis_title='數(shù)量(單位:人)',title={'text':'心血管疾病與年齡相關(guān)性','x':0.5})fig.update_xaxes(type='category',categoryorder='categoryascending')fig.show()代碼如下:

由圖可以看出,心血管疾病和年齡有很強(qiáng)的關(guān)聯(lián)性,當(dāng)年齡達(dá)到55歲后得心血管疾病的概率會(huì)增大,那么作為老年人,更需要提防心血管疾病,防范于未然。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析運(yùn)行結(jié)果:使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析在上述代碼中引出了importplotly.expressaspx,plotly.express是Plotly庫中的一個(gè)模塊,它提供了一種簡(jiǎn)單而直觀的方法來創(chuàng)建高級(jí)可視化圖表。plotly.express模塊有以下主要特點(diǎn)和功能。代碼講解:使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:plotly.express模塊特點(diǎn)和功能描述簡(jiǎn)單易用

提供了簡(jiǎn)化的API,只需使用一兩行代碼即可創(chuàng)建多種類型的圖表,如散點(diǎn)圖、線圖、柱狀圖、面積圖、箱線圖、餅圖等。自動(dòng)推斷

該模塊能夠根據(jù)數(shù)據(jù)的類型和結(jié)構(gòu)自動(dòng)推斷出適合的圖表類型。只需提供數(shù)據(jù)和指定要使用的列,plotly.express會(huì)根據(jù)數(shù)據(jù)特征自動(dòng)生成合適的可視化圖表。高級(jí)可視化

除了基本圖表類型,plotly.express還支持許多高級(jí)可視化功能,如熱力圖、3D圖、地理地圖、動(dòng)畫效果等。這些功能使能夠創(chuàng)建更復(fù)雜、更具交互性的可視化圖表。交互式可視化

生成的圖表具有交互性,可以通過縮放、平移、懸停和單擊等操作與圖表進(jìn)行互動(dòng)。此外,還可以將圖表嵌入到Web應(yīng)用程序中,或以靜態(tài)圖像的形式保存。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:除了plotly.express模塊值得注意,代碼實(shí)現(xiàn)中的plotly.express.bar()也同樣值得解釋說明,plotly.express.bar()函數(shù)是plotly.express模塊中用于創(chuàng)建柱狀圖的函數(shù)。它提供了簡(jiǎn)潔的API界面,使得創(chuàng)建柱狀圖變得更加簡(jiǎn)單和直觀。以下是plotly.express.bar()函數(shù)的一般語法:plotly.express.bar(data_frame,x,y,color,facet_row,facet_col,facet_col_wrap,hover_name,hover_data,custom_data,text,base,error_x,error_x_minus,error_y,error_y_minus,animation_frame,animation_group,category_orders,labels,orientation,barmode,barnorm,log_x,log_y,range_x,range_y,title,template,width,height,opacity,color_discrete_sequence,color_discrete_map,color_continuous_scale,range_color,color_continuous_midpoint)使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:考慮到上述參數(shù)較多,只解釋常用的參數(shù)。data_frame:提供數(shù)據(jù)的pandas.DataFrame對(duì)象。x:x軸上的變量名稱,通常代表分類數(shù)據(jù)。y:y軸上的變量名稱,通常代表計(jì)數(shù)或度量值。color:用于根據(jù)數(shù)據(jù)框中某列的值給條形圖上的條形著色。orientation:條形圖的方向。如果是'h'則為水平條形圖,如果是'v'則為垂直條形圖。title:圖表標(biāo)題文本,可以是字符串。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:labels:一個(gè)字典,用來重命名列名或者圖例標(biāo)簽。template:圖表的樣式模板,如'plotly'(中性的顏色),

'plotly_white'(純白色背景),

'plotly_dark'(深色背景)等width:圖表的寬度,以像素為單位。height:圖表的高度,以像素為單位。facet_row:按照該列的不同值創(chuàng)建子圖的行。facet_col:按照該列的不同值創(chuàng)建子圖的列。barmode:指定柱狀圖的顯示模式,可選值為"group"(分組柱狀圖)或"stack"(堆疊柱狀圖)。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:下面解釋上述代碼中的px.bar(grouped,x='age_year',y=['0','1’],barmode='stack',labels={'0':'No','1':'Yes’},title='心血管疾病與年齡相關(guān)性')這組代碼。x='age_years'是指定x軸要使用的數(shù)據(jù)列或列名為age_years,x軸將顯示年齡。y=['0','1']表示y軸將顯示兩個(gè)數(shù)據(jù)列,barmode='stack'指定柱狀圖的顯示模式為堆疊模式。根據(jù)上述參數(shù)解釋,當(dāng)barmode=“group”時(shí),即為分組柱狀圖,修改這組代碼為px.bar(groupedx='age_years',y=['0','1’],barmode=group’,labels={'0':'No','1':'Yes'},title='心血管疾病與年齡相關(guān)性'),即可以分組柱狀圖的形式顯示。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析代碼講解:

那么代碼實(shí)現(xiàn)中的px.bar(grouped,x='age_years',y=['0','1'],barmode='stack',labels={'0':'No','1':'Yes'},title='心血管疾病與年齡相關(guān)性')這行代碼就可以解釋。x='age_years'是指定x軸要使用的數(shù)據(jù)列或列名為'age_years',x軸將顯示年齡。y=['0','1']表示y軸將顯示兩個(gè)數(shù)據(jù)列,barmode='stack指定柱狀圖的顯示模式為堆疊模式,那么根據(jù)上述參數(shù)解釋,當(dāng)barmode="group"即為分組柱狀圖,那么修改此行代碼為px.bar(grouped,x='age_years',y=['0','1'],barmode='group',labels={'0':'No','1':'Yes'},title='心血管疾病與年齡相關(guān)性')即可以分組柱狀圖顯示,如下圖所示。上圖與項(xiàng)目5同樣可以實(shí)現(xiàn)分組柱狀圖的展示,只是兩者所用的函數(shù)是不同的,在項(xiàng)目5中是通過groupby()函數(shù)和plot(kind='bar')實(shí)現(xiàn),在項(xiàng)目5中通過使用groupby()將年份和季度進(jìn)行分組,并使用matplotlib的plot(kind='bar')方法繪制了柱狀圖。而本項(xiàng)目中的plotly.express.bar(barmode="group")是PlotlyExpress庫的函數(shù),提供了更高級(jí)的繪圖功能。它可以輕松實(shí)現(xiàn)分組柱狀圖,并提供了更多的定制選項(xiàng)。使用barmode="group"參數(shù)可以顯示分組柱狀圖,而無需手動(dòng)進(jìn)行數(shù)據(jù)處理和設(shè)置顏色。6-2心血管疾病與身高和體重相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析0102目錄CONCENTS心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作6-2-1心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作-數(shù)據(jù)概述

在本子項(xiàng)目中,使用在子項(xiàng)目一中的“心血管疾病數(shù)據(jù)集.csv”數(shù)據(jù)集,只不過本子項(xiàng)目中,使用數(shù)據(jù)集中的三列數(shù)據(jù),分別是“height”、“weight”和“cardio”,如圖6-7所示。對(duì)于這三列數(shù)據(jù),在子項(xiàng)目一中已經(jīng)處理了“cardio”列的數(shù)據(jù)心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作

通過過濾異常值和刪除重復(fù)行來處理其他兩列的數(shù)據(jù)。任務(wù)一首先采用3σ原則來過濾異常值,并將結(jié)果保存到新的“filtered_心血管疾病數(shù)據(jù)集.csv”文件中。心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作importpandasaspdimportnumpyasnpdf=pd.read_csv(r'C:\Users\Administrator\Desktop\心血管疾病數(shù)據(jù)集.csv')#定義一個(gè)函數(shù)來檢查數(shù)值是否異常defcheck_value(height,weight):#計(jì)算均值和標(biāo)準(zhǔn)差mean_height=np.mean(df['height'])std_dev_height=np.std(df['height'])mean_weight=np.mean(df['weight’]std_dev_weight=np.std(df['weight'])#使用3σ原則過濾異常值代碼如下:心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作ifheight>(mean_height+3*std_dev_height)orheight<(mean_height-3*std_dev_height):returnTrueelifweight>(mean_weight+3*std_dev_weight)orweight<(mean_weight-3*std_dev_weight):returnTrueelse:returnFalse#使用apply函數(shù)過濾異常值filtered_df=df.apply(lambdax:xifnotcheck_value(x['height'],x['weight'])elseNone,axis=1)代碼如下:心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作#去除空值行filtered_df=filtered_df.dropna()#計(jì)算異常值的行數(shù)num_rows_with_outliers=df.shape[0]-filtered_df.shape[0]#輸出異常值的行數(shù)print("異常值的行數(shù):",num_rows_with_outliers)#將結(jié)果保存到新的csv文件filtered_df.to_csv(r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv',index=False)代碼如下:運(yùn)行結(jié)果:心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作任務(wù)二需要處理數(shù)據(jù)中的空值,對(duì)于上述的三列數(shù)據(jù),需要查看單元格的內(nèi)容是否有空值,那么通過以下代碼來檢查這三列數(shù)據(jù)的空值情況。使用堆疊柱狀圖進(jìn)行數(shù)據(jù)的可視化分析心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作importcsvinput_file=r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv'withopen(input_file,'r',newline='')asfile:reader=csv.reader(file)data=[rowforrowinreader]#檢查第4,5,13列中是否有空值columns_to_check=[3,4,12]#需要檢查空值的列索引(從0開始)column_empty=[False,False,False,False]#初始化列的空值檢查結(jié)果為Falseforrowindata:foriincolumns_to_check:代碼如下:心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作ifnotrow[i]:column_empty[columns_to_check.index(i)]=True#如果為空值,將對(duì)應(yīng)列的空值檢查結(jié)果設(shè)置為Trueempty_columns=[i+1foriincolumns_to_checkifcolumn_empty[columns_to_check.index(i)]]ifempty_columns:print(f"第{','.join(map(str,empty_columns))}列中存在空值")else:print("所選列均不存在空值")運(yùn)行結(jié)果證明這三列中不含空值,如下圖6-9所示。代碼如下:心血管疾病與身高和體重相關(guān)性數(shù)據(jù)的操作運(yùn)行結(jié)果:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析6-2-2使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析知識(shí)新知小提琴圖是一種常用于展示數(shù)據(jù)分布的統(tǒng)計(jì)圖表,它結(jié)合了箱線圖和核密度圖的特點(diǎn),能夠展示出數(shù)據(jù)的分布形狀和密度。小提琴圖通常由一對(duì)稱的曲線和中間的盒狀圖組成,曲線部分代表了數(shù)據(jù)的核密度估計(jì),盒狀圖則顯示了數(shù)據(jù)的四分位范圍和中位數(shù)。小提琴圖的曲線部分可以通過寬度來展示數(shù)據(jù)的分布密度,較寬的部分表示該位置上有更多的數(shù)據(jù)點(diǎn),而較窄的部分表示數(shù)據(jù)點(diǎn)較少。通過觀察小提琴圖,可以比較不同類別數(shù)據(jù)的分布情況,識(shí)別數(shù)據(jù)的峰值和密度差異,從而更直觀地理解數(shù)據(jù)的分布,小提琴的主要構(gòu)成如下圖所示。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析知識(shí)新知由圖可以看出小提琴圖和箱線圖是比較類似的,其實(shí)小提琴圖和箱線圖是兩種常用的統(tǒng)計(jì)圖形,都用于可視化數(shù)據(jù)的分布情況和統(tǒng)計(jì)特征。它們?cè)谝恍┓矫嬗邢嗨浦帲泊嬖谝恍┟黠@的差異。如表所示。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析知識(shí)新知

特點(diǎn)小提琴圖箱線圖相同點(diǎn)數(shù)據(jù)分布

兩種圖形都用于顯示數(shù)據(jù)的分布情況。中位數(shù)

兩種圖形都顯示了數(shù)據(jù)的中位數(shù)(即箱線圖中的中位數(shù)線和小提琴圖中的白點(diǎn))。四分位數(shù)

兩種圖形都顯示了數(shù)據(jù)的四分位數(shù)范圍(即箱線圖中的箱體和小提琴圖中的厚實(shí)部分)。不同點(diǎn)形狀

主要展示數(shù)據(jù)的五數(shù)概括(最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)、最大值)更詳細(xì)地顯示了數(shù)據(jù)的整體分布情況密度估計(jì)

通過核密度估計(jì)曲線顯示了數(shù)據(jù)的密度分布,可以更直觀地觀察到數(shù)據(jù)的峰值和尾部情況多變量比較

通過分組、分面或色彩映射來同時(shí)比較多個(gè)變量之間的分布差異主要用于單個(gè)變量的比較異常值

在默認(rèn)設(shè)置下不顯示異常值,但可以通過參數(shù)設(shè)置來顯示異常值。明確顯示了數(shù)據(jù)的異常值使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析知識(shí)新知

由上表可以看出小提琴圖適用于比較多個(gè)變量之間的分布差異,幫助觀察數(shù)據(jù)的整體形狀、峰值和尾部情況,尤其適合于展示數(shù)據(jù)的密度分布和多變量比較。箱線圖則更適用于比較單個(gè)變量在不同類別或組之間的分布差異,側(cè)重于顯示數(shù)據(jù)的五數(shù)概括和異常值,有助于觀察數(shù)據(jù)的中位數(shù)、四分位數(shù)以及異常值的存在。根據(jù)具體分析目的和數(shù)據(jù)特點(diǎn),選擇適合的圖形可以更好地呈現(xiàn)數(shù)據(jù)的特征和幫助做出合理的分析和決策。小提琴圖在以下場(chǎng)景中被應(yīng)用,并具有如下優(yōu)勢(shì),如表所示。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析知識(shí)新知小提琴圖應(yīng)用場(chǎng)景優(yōu)勢(shì)比較分組數(shù)據(jù)的分布

能夠同時(shí)比較多個(gè)組或類別之間數(shù)值變量的分布情況,使差異更加直觀可見。觀察數(shù)據(jù)的中位數(shù)和分位數(shù)

通過小提琴圖,可以直觀地觀察數(shù)據(jù)的中位數(shù)位置和分布的離散程度,提供了對(duì)數(shù)據(jù)集中趨勢(shì)的直觀認(rèn)識(shí)。數(shù)據(jù)密度估計(jì)

圖的寬度表示數(shù)據(jù)在不同值上的概率密度估計(jì),能夠幫助觀察數(shù)據(jù)的分布特征和峰值。檢測(cè)離群值

圖中細(xì)線延伸到數(shù)據(jù)的最大值和最小值,使得可以快速檢測(cè)到數(shù)據(jù)中的離群值或異常值。與其他變量的關(guān)系

可以與其他變量進(jìn)行組合,通過不同顏色或分組來表示不同類別的數(shù)據(jù)分布,有助于觀察到不同類別之間的差異,并了解到其他變量對(duì)數(shù)據(jù)分布的影響。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析任務(wù)一通過使用“cardio”列和“weight”來繪制小提琴圖。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:importpandasaspdimportseabornassnsimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']file_path=r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv'data=pd.read_csv(file_path)df_melt=pd.melt(frame=data,value_vars=['weight'],id_vars=['cardio'])使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#小提琴圖ax=sns.violinplot(x='variable',y='value',hue='cardio',split=True,data=df_melt,scale='count',scale_hue=False,palette={0:'white',1:'black'})使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標(biāo)的標(biāo)簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標(biāo)的標(biāo)題ax.set(xticklabels=[])#將縱坐標(biāo)的標(biāo)簽設(shè)置為"weight"ax.set(ylabel='體重(單位:kg)')#添加標(biāo)題plt.title('心血管疾病與體重的關(guān)系')plt.show()使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析運(yùn)行結(jié)果:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析在上面的代碼中,可以看出引入了seaborn模塊,seaborn是一個(gè)Python數(shù)據(jù)可視化庫,建立在Matplotlib之上,提供了一種更高級(jí)、更美觀和更簡(jiǎn)化的界面。Seaborn專注于統(tǒng)計(jì)數(shù)據(jù)可視化,并提供了許多用于繪制各種類型圖表的函數(shù)和工具。以下是Seaborn的一些主要特點(diǎn)和功能:美觀的默認(rèn)樣式:seaborn通過提供美觀的默認(rèn)樣式,使得創(chuàng)建具有專業(yè)外觀的圖表變得更加簡(jiǎn)單。它的圖表具有現(xiàn)代感,以及對(duì)顏色和字體的精心設(shè)計(jì),使得圖表更加吸引人。內(nèi)置的統(tǒng)計(jì)主題和調(diào)色板:seaborn提供了多種內(nèi)置的主題和調(diào)色板,使得在可視化過程中能夠輕松選擇適合的風(fēng)格和顏色。這些主題和調(diào)色板旨在強(qiáng)調(diào)統(tǒng)計(jì)圖表中的關(guān)鍵信息,并提供最佳的視覺效果。代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析高級(jí)圖表類型的支持:seaborn支持繪制各種高級(jí)的統(tǒng)計(jì)圖表,如線性回歸模型圖、核密度估計(jì)圖、小提琴圖、箱線圖、熱力圖、分類散點(diǎn)圖等。這些圖表能夠更好地展示數(shù)據(jù)之間的關(guān)系和分布情況。靈活的數(shù)據(jù)可視化功能:Seaborn提供了許多靈活的函數(shù)和選項(xiàng),可以輕松自定義圖表的各個(gè)方面,包括軸標(biāo)簽、圖例、網(wǎng)格線、坐標(biāo)軸范圍等。這使得用戶可以根據(jù)自己的需求定制圖表,以便更好地傳達(dá)數(shù)據(jù)。另外代碼通過sns.violinplot()關(guān)鍵行代碼生成小提琴圖,有必要對(duì)其進(jìn)行更為詳細(xì)的說明。代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析sns.violinplot(x,y,data,hue,split,inner,scale,bw,cut,linewidth,color,palette,order,hue_order,bw_method,scale_hue,gridsize,width,inner,split,dodge,orient,saturation,ax,**kwargs)常用參數(shù)說明:x,y:用于指定小提琴圖中的x軸和y軸的數(shù)據(jù)變量,可以是字符串或數(shù)組。data:包含要繪制的數(shù)據(jù)的數(shù)據(jù)集,可以是DataFrame、數(shù)組或列表。hue:用于分組數(shù)據(jù)的變量名稱,按照該變量的不同取值對(duì)數(shù)據(jù)進(jìn)行分組,并繪制不同顏色的小提琴圖。split:是否將小提琴圖分割成兩半,分別表示不同的類別或組。inner:決定小提琴圖內(nèi)部繪制的內(nèi)容,可以是"box"(默認(rèn))、"quartile"、"point"、"stick"等。代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析scale:尺度參數(shù),用于調(diào)整小提琴圖的寬度??蛇x值有"area"(默認(rèn))、"count"、"width"等。bw:核密度估計(jì)的帶寬參數(shù),用于調(diào)整密度曲線的平滑程度。cut:裁剪參數(shù),用于確定密度曲線截?cái)嗟奈恢?。linewidth:小提琴圖線條的寬度。color:小提琴圖的顏色。palette:調(diào)色板,用于指定不同類別或組的顏色。order:類別或組的順序,用于控制小提琴圖的排列順序。ax:Matplotlib的坐標(biāo)軸對(duì)象,用于將小提琴圖繪制在指定的坐標(biāo)軸上。代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析那么代碼實(shí)現(xiàn)中的ax=sns.violinplot(x='variable',y='value',hue='cardio',split=True,data=df_melt,scale='count',scale_hue=False,palette={0:'white',1:'black'})代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析

這組代碼可以解釋為x軸和y軸的變量名分別為'variable'和'value'。這意味著在繪制小提琴圖時(shí),x軸將顯示變量的名稱,y軸將顯示變量的值。接下來,通過參數(shù)hue='cardio',將數(shù)據(jù)根據(jù)名為'cardio'的變量進(jìn)行分組。這將導(dǎo)致小提琴圖中按照'cardio'的不同取值繪制不同顏色的小提琴圖。參數(shù)split=True表示將小提琴圖分割成兩半,以表示不同的類別或組。數(shù)據(jù)集df_melt被傳遞給參數(shù)data,以指定要繪制的數(shù)據(jù)。通過scale='count',我們調(diào)整小提琴圖的寬度,使其基于每個(gè)類別或組的數(shù)據(jù)點(diǎn)數(shù)量進(jìn)行縮放。參數(shù)scale_hue=False表示不對(duì)hue變量的不同取值進(jìn)行縮放。最后,通過palette={0:'white',1:'black'}指定了調(diào)色板的顏色為黑色和白色。如果想把上圖的小提琴圖分成兩個(gè)小提琴圖只需將參數(shù)split=True改為split=False最后生成如下效果圖。代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼講解:使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析任務(wù)二接下來可以通過小提琴圖觀察心血管疾病與身高的關(guān)系使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:importpandasaspdimportseabornassnsimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']file_path=r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv'data=pd.read_csv(file_path)df_melt=pd.melt(frame=data,value_vars=['height'],id_vars=['cardio'])使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#小提琴圖ax=sns.violinplot(x='variable',y='value',hue='cardio',split=True,data=df_melt,scale='count',scale_hue=False,palette={0:'white',1:'black'})使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標(biāo)的標(biāo)簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標(biāo)的標(biāo)題ax.set(xticklabels=[])#將縱坐標(biāo)的標(biāo)簽設(shè)置為"weight"ax.set(ylabel='身高(單位:厘米)')#添加標(biāo)題plt.title('心血管疾病與身高的關(guān)系')plt.show()使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標(biāo)的標(biāo)簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標(biāo)的標(biāo)題ax.set(xticklabels=[])#將縱坐標(biāo)的標(biāo)簽設(shè)置為"weight"ax.set(ylabel='身高(單位:厘米)')#添加標(biāo)題plt.title('心血管疾病與身高的關(guān)系')plt.show()使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析任務(wù)三

還需要探討心血管疾病和體重、身高共同的關(guān)系。通過數(shù)據(jù)集中的“height”列和“weight”來定義“BMI指數(shù)”,來通過查看BMI指數(shù)正常的人是否有有血管疾病情況,BMI指數(shù)是國(guó)際上常用來衡量人體胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn),其計(jì)算方法為體重(kg)除以身高(m)的平方,即BMI=體重(kg)/身高(m)^2。18.5-24.9kg/m^2為正常。使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:importpandasaspdimportseabornassnsimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']file_path=r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv'data=pd.read_csv(file_path)使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#計(jì)算BMIdata['BMI']=data['weight']/((data['height']/100)**2)#將數(shù)據(jù)進(jìn)行整理df_melt=pd.melt(frame=data,value_vars=['BMI'],id_vars=['cardio'])使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#小提琴圖ax=sns.violinplot(x='variable',y='value',hue='cardio',split=True,data=df_melt,scale='count',scale_hue=False,palette={0:'white',1:'black'})使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標(biāo)的標(biāo)簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標(biāo)的標(biāo)題ax.set(xticklabels=[])#將縱坐標(biāo)的標(biāo)簽設(shè)置為"weight"ax.set(ylabel='BMI')#設(shè)置縱坐標(biāo)刻度間隔為5plt.yticks(range(0,int(data['BMI'].max())+5,5))#添加標(biāo)題plt.title('心血管疾病與BMI指數(shù)的關(guān)系')plt.show()使用小提琴圖進(jìn)行數(shù)據(jù)可視化分析結(jié)論:患心血管疾病的人群BMI值基本不是正常,也就是說明身高和體重與心血管疾病之間存在相關(guān)性,也說明在養(yǎng)成良好的生活習(xí)慣情況下患心血管疾病的可能性較低,但也存在BMI值正常情況下得了心血管疾病,說明心血管疾病也是受到多種因素的影響。6-3心臟疾病相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)心臟疾病相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)綜合實(shí)戰(zhàn)

需要將與心臟疾病相關(guān)性的數(shù)據(jù)以堆疊柱狀圖和小提琴的形式展示出來,針對(duì)堆疊柱狀圖,在項(xiàng)目2和項(xiàng)目5中分別學(xué)習(xí)了柱狀圖和分組柱狀圖,那么和本項(xiàng)目中的堆疊柱狀圖有何異同呢,通過下表6-5所示。心臟疾病相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)綜合實(shí)戰(zhàn)

柱狀圖分組柱狀圖堆疊柱狀圖定義單個(gè)變量的比較多個(gè)變量的比較和組內(nèi)比較多個(gè)變量的比較和總體比較柱子排列方式單根柱子垂直排列多根柱子垂直排列單根柱子垂直排列,相互堆疊比較方式比較不同類別或組之間的數(shù)值比較不同類別或組之間的多個(gè)變量,并在每個(gè)類別或組內(nèi)比較比較不同類別或組之間的多個(gè)變量,并在總體上比較數(shù)據(jù)展示單個(gè)變量多個(gè)變量和組內(nèi)變量多個(gè)變量和總體可視化效果簡(jiǎn)潔、直觀顯示變量間的對(duì)比顯示變量間的對(duì)比和總體占比適用場(chǎng)景單個(gè)變量比較和展示多個(gè)變量比較和展示,組內(nèi)比較多個(gè)變量比較和展示,總體比較結(jié)論:

由上表6-5可知,柱狀圖用于比較單個(gè)變量在不同類別或組之間的差異,分組柱狀圖展示多個(gè)變量在不同類別或組內(nèi)的比較,而堆疊柱狀圖則顯示多個(gè)變量在總體上的占比關(guān)系。接下來請(qǐng)讀者按照以下要求完成實(shí)戰(zhàn):請(qǐng)將心臟疾病相關(guān)性數(shù)據(jù)的導(dǎo)入并對(duì)空缺值和重復(fù)行進(jìn)行處理請(qǐng)使用堆疊柱狀圖對(duì)心臟疾病相關(guān)性數(shù)據(jù)進(jìn)行可視化分析。請(qǐng)使用小提琴圖對(duì)心臟疾病相關(guān)性數(shù)據(jù)進(jìn)行可視化分析心臟疾病相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)6-4總結(jié)建議總結(jié)建議

本項(xiàng)目通過心血管疾病與年齡相關(guān)性數(shù)據(jù)進(jìn)行可視化,介紹了使用plotly模塊進(jìn)行堆疊柱狀圖展示的方法,堆疊柱狀圖作為新提及的圖能夠更好的展示數(shù)據(jù)集。通過心血管疾病與身高和體重相關(guān)性數(shù)據(jù)進(jìn)行可視化,介紹了小提琴圖的展示方法,該圖通過將“cardio”數(shù)據(jù)值繪制在小提琴圖的左右可以更好的展示與審稿體重間的相關(guān)性。在對(duì)本項(xiàng)目進(jìn)行實(shí)踐的過程中,請(qǐng)讀者重點(diǎn)思考柱狀圖、分組柱狀圖和堆疊柱狀圖展示效果的區(qū)別以及針對(duì)心臟疾病相關(guān)性數(shù)據(jù)能否展示更多新穎的可視化效果。感謝您的聆聽數(shù)據(jù)可視化技術(shù)與應(yīng)用金融數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)數(shù)據(jù)可視化技術(shù)與應(yīng)用數(shù)據(jù)可視化技術(shù)與應(yīng)用課程開發(fā)組項(xiàng)目導(dǎo)讀

作為金融機(jī)構(gòu),金融數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)能夠?yàn)榻鹑跈C(jī)構(gòu)提供幫助。該模塊旨在通過可視化的方式展示金融相關(guān)數(shù)據(jù),包括年齡與住房貸款相關(guān)性數(shù)據(jù)、工作類型與住房貸款違約情況數(shù)據(jù),以及信用卡客戶數(shù)據(jù)。通過收集和整理這些數(shù)據(jù),并利用數(shù)據(jù)可視化技術(shù),可以將其以金字塔圖和旭日?qǐng)D的形式展示出來,以便人們更好地分析與金融相關(guān)的信息。項(xiàng)目導(dǎo)讀01風(fēng)險(xiǎn)管理和信用評(píng)估03業(yè)務(wù)決策支持02產(chǎn)品定位和市場(chǎng)拓展利用可視化技術(shù)展示年齡與住房貸款相關(guān)性數(shù)據(jù)、工作類型與住房貸款違約情況數(shù)據(jù),以及信用卡客戶數(shù)據(jù),金融機(jī)構(gòu)可以更直觀地了解不同因素對(duì)風(fēng)險(xiǎn)管理和信用評(píng)估的影響。這有助于金融機(jī)構(gòu)準(zhǔn)確評(píng)估客戶的信用風(fēng)險(xiǎn),并采取相應(yīng)的風(fēng)險(xiǎn)控制措施,提高貸款和信用卡業(yè)務(wù)的風(fēng)險(xiǎn)管理能力。通過金融數(shù)據(jù)的可視化,金融機(jī)構(gòu)可以更好地了解不同年齡段客戶對(duì)住房貸款和信用卡的需求和偏好。這有助于金融機(jī)構(gòu)優(yōu)化產(chǎn)品定位和市場(chǎng)拓展策略,針對(duì)不同客戶群體提供定制化的金融產(chǎn)品和服務(wù),提高客戶滿意度和市場(chǎng)占有率。研究金融數(shù)據(jù)的可視化將為金融機(jī)構(gòu)提供有價(jià)值的業(yè)務(wù)決策支持。通過分析年齡與住房貸款相關(guān)性數(shù)據(jù)、工作類型與住房貸款違約情況數(shù)據(jù),以及信用卡客戶數(shù)據(jù),可以評(píng)估不同因素對(duì)金融業(yè)務(wù)的影響,制定更精準(zhǔn)的業(yè)務(wù)策略,提升業(yè)務(wù)效益和競(jìng)爭(zhēng)力。項(xiàng)目目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)素養(yǎng)目標(biāo)掌握可視化金字塔圖的繪制和代碼掌握可視化旭日?qǐng)D的繪制和代碼能區(qū)分旭日?qǐng)D和餅狀圖的異同通過金融數(shù)據(jù)可視化培養(yǎng)學(xué)生未雨綢繆、居安思危的精神通過信用客戶數(shù)據(jù)可視化培養(yǎng)學(xué)生適度消費(fèi)的習(xí)慣年齡與住房貸款相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)信用卡客戶數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)010302總結(jié)與建議04目錄CONCENTS7-1年齡與住房貸款相關(guān)性數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析0102目錄CONCENTS7-1-1過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值-數(shù)據(jù)概述

素材與案例\項(xiàng)目7\數(shù)據(jù)集\銀行數(shù)據(jù)集.CSV過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值-數(shù)據(jù)概述過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值-數(shù)據(jù)概述過濾年齡與住房貸款相關(guān)性數(shù)據(jù)的異常值-年齡異常值importpandasaspdimportnumpyasnpdf=pd.read_csv(r'C:\Users\Administrator\Desktop\銀行數(shù)據(jù)集.csv')#定義一個(gè)函數(shù)來檢查數(shù)值是否異常defcheck_value(value):mean=np.mean(df['age'])std_dev=np.std(df['age'])ifvalue>(mean+3*std_dev)orvalue<(mean-3*std_dev):returnTrueelse:returnFalsefiltered_df=df.apply(lambdax:xifnotcheck_value(x['age'])elseNone,axis=1)filtered_df=filtered_df.dropna()num_rows_with_outliers=df.shape[0]-filtered_df.shape[0]print("異常值的行數(shù):",num_rows_with_outliers)filtered_df.to_csv(r'C:\Users\Administrator\Desktop\filtered_銀行數(shù)據(jù)集.csv',index=False)代碼如下:7-1-2使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析-金字塔圖金字塔圖是一種圖表類型,其獨(dú)特的結(jié)構(gòu)以視覺分層的方式展示信息,通常用于呈現(xiàn)層次結(jié)構(gòu)、流程、數(shù)據(jù)比例關(guān)系或組織結(jié)構(gòu)等。這種圖表的中間層是最寬的,象征著最大的數(shù)據(jù)集合或基礎(chǔ)層,而金字塔向上、向下逐漸變窄,每個(gè)上層或者下層代表著數(shù)據(jù)集合一個(gè)更小、更細(xì)分的部分。使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析-代碼實(shí)現(xiàn)importpandasaspdimportplotly.graph_objectsasgo#讀取CSV文件data=pd.read_csv(r'C:\Users\Meng\Desktop\filtered_銀行數(shù)據(jù)集.csv')#篩選出“housing”列取值為“yes”的行yes_data=data[data['housing']=='yes']#統(tǒng)計(jì)“age”列對(duì)應(yīng)的“housing”列為“yes”值的情況yes_age_counts=yes_data['age'].value_counts().sort_index()/2代碼如下:使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析-代碼實(shí)現(xiàn)#創(chuàng)建金字塔圖fig=go.Figure()#添加右半部分的條形圖fig.add_trace(go.Bar(y=yes_age_counts.index,x=yes_age_counts.values,orientation='h',text=abs(yes_age_counts.values)*2,textposition='outside',marker=dict(color='steelblue'),showlegend=False#不顯示圖例))代碼如下:使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析-代碼實(shí)現(xiàn)#添加左半部分的條形圖fig.add_trace(go.Bar(y=yes_age_counts.index,x=-yes_age_counts.values,#使用負(fù)值反轉(zhuǎn)條形的方向

orientation='h',textposition='auto',marker=dict(color='steelblue'),showlegend=False#不顯示圖例))代碼如下:使用金字塔圖進(jìn)行數(shù)據(jù)的可視化分析-代碼實(shí)現(xiàn)fig.update_layout(barmode='overlay',#使用覆蓋模式疊加兩個(gè)條形圖yaxis=dict(title='年齡',#設(shè)置縱坐標(biāo)軸標(biāo)題tickvals=yes_age_counts.index[::2],#設(shè)置y軸刻度位置,每隔2個(gè)值顯示一個(gè)刻度ticktext=yes_age_counts.index[::2]#設(shè)置y軸刻度標(biāo)簽,與刻度位置一一對(duì)應(yīng)),xaxis=dict(title='數(shù)量(單位:人)'),#設(shè)置橫坐標(biāo)軸標(biāo)題title=dict(text='不同年齡的房貸人數(shù)',#設(shè)置圖表標(biāo)題文本x=0.5,#將標(biāo)題水平居中y=0.95#將標(biāo)題相對(duì)于圖表頂部略微向下移動(dòng)))fig.show()代碼如下:7-2工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)的操作使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析0102目錄CONCENTS工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)的操作7-2-1工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)的操作importpandasaspd#讀取CSV文件data=pd.read_csv(r'C:\Users\Administrator\Desktop\銀行數(shù)據(jù)集.csv')#檢查“housing”列和“l(fā)oan”列的取值是否合法invalid_values=data[~data['housing'].isin(['yes','no','unknown'])|~data['loan'].isin(['yes','no','unknown'])]ifnotinvalid_values.empty:print("存在異常值的行:")print(invalid_values.index)else:print("沒有異常值")異常值處理使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析7-2-2使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析-旭日?qǐng)D旭日?qǐng)D是一種環(huán)形的層級(jí)結(jié)構(gòu)圖,用于可視化層級(jí)關(guān)系及各層級(jí)在整體中的比例關(guān)系。它通過嵌套的環(huán)形區(qū)塊來表示層級(jí)結(jié)構(gòu),每個(gè)環(huán)形區(qū)塊的大小表示該層級(jí)在整體中的占比,從而形成一種太陽輻射的效果,因此得名旭日?qǐng)D。旭日?qǐng)D常用于展示層級(jí)結(jié)構(gòu)的數(shù)據(jù),如組織架構(gòu)、分類層次和產(chǎn)品銷售結(jié)構(gòu)等。它能夠以一種直觀而美觀的方式呈現(xiàn)數(shù)據(jù),幫助人們更好地理解數(shù)據(jù)的層級(jí)關(guān)系和比例關(guān)系,從而支持?jǐn)?shù)據(jù)分析、決策和溝通。環(huán)塊內(nèi)環(huán)外環(huán)使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析-工作類型與住房貸款相關(guān)性importplotly.expressaspx#讀取CSV文件data=pd.read_csv(r'./filtered_銀行數(shù)據(jù)集.csv')#根據(jù)職業(yè)(job)、住房貸款(housing列進(jìn)行分組統(tǒng)計(jì)job_loan_housing_count=data.groupby(['job','housing']).size().unstack().fillna(0).stack().reset_index(name='count')job_loan_housing_count.head()代碼如下:使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析-工作類型與住房貸款相關(guān)性fig=px.sunburst(job_loan_housing_count,

path=['job','housing'],values='count',color='housing',color_discrete_map={'yes':'green','no':'red','unknown':'grey'})#設(shè)置圖表布局fig.update_layout(title={'text':'工作類型與住房貸款相關(guān)性','x':0.5},)#顯示圖表fig.show()代碼如下:使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析-importplotly.expressaspx#讀取CSV文件data=pd.read_csv(r'./filtered_銀行數(shù)據(jù)集.csv')#根據(jù)職業(yè)(job)和個(gè)人貸款(loan)列進(jìn)行分組統(tǒng)計(jì)job_loan_housing_count=data.groupby(['job','loan']).size().unstack().fillna(0).stack().reset_index(name='count')job_loan_housing_count.head()工作類型與個(gè)人貸款相關(guān)性代碼如下:使用旭日?qǐng)D進(jìn)行數(shù)據(jù)的可視化分析-工作類型與個(gè)人貸款相關(guān)性#創(chuàng)建環(huán)形圖fig=px.sunburst(job_loan_housing_count,path=['job','loan'],values='count',color='loan',color_discrete_map={'yes':'green','no':'red','unknown':'grey'})#設(shè)置圖表布局fig.update_layout(title={'text':'工作類型與個(gè)人貸款相關(guān)性','x':0.5},)#顯示圖表fig.show()代碼如下:7-3信用卡客戶數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)信用卡客戶數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)綜合實(shí)戰(zhàn)在綜合實(shí)戰(zhàn)中,需要將信用卡客戶數(shù)據(jù)以金字塔圖和旭日?qǐng)D的形式展示出來。

旭日?qǐng)D和餅狀圖的區(qū)別見表

7-4。信用卡客戶數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)綜合實(shí)戰(zhàn)旭日?qǐng)D餅狀圖層級(jí)展示

通過嵌套的環(huán)形區(qū)塊表示多個(gè)層級(jí)之間的組織結(jié)構(gòu),每個(gè)環(huán)形區(qū)塊代表一個(gè)層級(jí)

一個(gè)單層級(jí)的圖表,將數(shù)據(jù)劃分為不同的扇區(qū)

數(shù)據(jù)結(jié)構(gòu)

適用于展示多層級(jí)的數(shù)據(jù)結(jié)構(gòu),通過環(huán)形的嵌套關(guān)系顯示層級(jí)關(guān)系。每個(gè)層級(jí)可以根據(jù)數(shù)據(jù)的比例進(jìn)行分割,形成多個(gè)環(huán)形區(qū)塊

適用于展示單一層級(jí)的數(shù)據(jù),將數(shù)據(jù)按比例分割成扇區(qū)

層級(jí)關(guān)系

能夠清晰地展示多個(gè)層級(jí)之間的嵌套關(guān)系,以及各個(gè)層級(jí)在整體中的比例關(guān)系

主要關(guān)注整體與各個(gè)扇區(qū)之間的比例關(guān)系,沒有直接展示層級(jí)嵌套關(guān)系

強(qiáng)調(diào)層級(jí)比例

通過環(huán)形區(qū)塊的大小和顏色漸變,強(qiáng)調(diào)不同層級(jí)之間的比例關(guān)系和重要性

通常只使用扇區(qū)的大小來表示數(shù)據(jù)的相對(duì)比例

復(fù)雜性

可以展示多個(gè)層級(jí)的嵌套關(guān)系,適用于展示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

相對(duì)簡(jiǎn)單,適用于比較簡(jiǎn)單的數(shù)據(jù)展示,通常用于表示幾個(gè)類別的比例關(guān)系

結(jié)論:

旭日?qǐng)D適用于展示多層級(jí)、復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和層級(jí)關(guān)系,提供更詳細(xì)的信息和上下文,餅狀圖適用于展示簡(jiǎn)單的數(shù)據(jù)比例關(guān)系,強(qiáng)調(diào)整體與各部分之間的比例關(guān)系,

選擇使用哪種圖表取決于數(shù)據(jù)的層級(jí)結(jié)構(gòu)和用戶想要傳達(dá)的信息,本項(xiàng)目實(shí)戰(zhàn)因?yàn)楣ぷ黝愋团c貸款數(shù)據(jù)較為復(fù)雜,所以更適合用旭日?qǐng)D來展示。接下來請(qǐng)讀者按照以下要求完成實(shí)戰(zhàn)。請(qǐng)過濾信用卡客戶數(shù)據(jù)中的異常值。請(qǐng)使用金字塔圖對(duì)信用卡客戶數(shù)據(jù)進(jìn)行可視化分析。請(qǐng)使用旭日?qǐng)D對(duì)信用卡客戶數(shù)據(jù)進(jìn)行可視化分析信用卡客戶數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)7-4總結(jié)與建議總結(jié)建議

本項(xiàng)目通過對(duì)年齡與住房貸款相關(guān)性數(shù)據(jù)進(jìn)行可視化,介紹了創(chuàng)建金字塔圖進(jìn)行數(shù)據(jù)可視化分析的方法;通過對(duì)工作類型與住房貸款、個(gè)人貸款數(shù)據(jù)進(jìn)行可視化,介紹了創(chuàng)建旭日?qǐng)D進(jìn)行數(shù)據(jù)可視化分析的方法,并將個(gè)人貸款和房貸進(jìn)行了區(qū)分和包含,以更好地展示兩者的關(guān)系感謝您的聆聽數(shù)據(jù)可視化技術(shù)與應(yīng)用學(xué)生一卡通數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)數(shù)據(jù)可視化技術(shù)與應(yīng)用數(shù)據(jù)可視化技術(shù)與應(yīng)用課程開發(fā)組項(xiàng)目導(dǎo)讀作為學(xué)校的管理者,學(xué)生一卡通數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)能夠?yàn)閷W(xué)校提供幫助。該項(xiàng)目旨在利用可視化技術(shù)展示學(xué)生一卡通數(shù)據(jù),包括學(xué)生基本信息數(shù)據(jù)、學(xué)生消費(fèi)數(shù)據(jù)和學(xué)生門禁數(shù)據(jù)等。學(xué)生一卡通系統(tǒng)整合了身份驗(yàn)證、財(cái)務(wù)支付及數(shù)據(jù)整合等多重功能,形成了一個(gè)綜合信息平臺(tái)。通過收集和整理這些數(shù)據(jù),并利用數(shù)據(jù)可視化技術(shù)將其以面積圖和詞云的形式展示出來,可以更好地理解和分析學(xué)生的消費(fèi)行為,以及學(xué)校食堂等各部門的運(yùn)行狀況等信息。項(xiàng)目導(dǎo)讀01消費(fèi)行為分析03預(yù)警和安全管理02食堂運(yùn)營(yíng)狀況評(píng)估利用可視化技術(shù)展示學(xué)生消費(fèi)數(shù)據(jù),學(xué)校可以更直觀地了解學(xué)生的消費(fèi)習(xí)慣和偏好。這有助于學(xué)校了解學(xué)生的用餐、購物等消費(fèi)需求,優(yōu)化學(xué)校食堂和商業(yè)設(shè)施的布局和經(jīng)營(yíng)策略,提升服務(wù)質(zhì)量和學(xué)生滿意度。利用可視化技術(shù)展示學(xué)生食堂消費(fèi)數(shù)據(jù),學(xué)??梢愿玫卦u(píng)估食堂的運(yùn)營(yíng)狀況,包括食堂的客流量、銷售額和熱門菜品等信息。通過分析這些數(shù)據(jù),學(xué)??梢约皶r(shí)調(diào)整菜品供應(yīng)和服務(wù)策略,提高食堂的運(yùn)營(yíng)效率和經(jīng)濟(jì)效益。利用數(shù)據(jù)可視化技術(shù),學(xué)??梢詫?shí)時(shí)監(jiān)控學(xué)生門禁數(shù)據(jù),如學(xué)生進(jìn)出宿舍樓和教學(xué)樓的記錄。這有助于學(xué)校實(shí)現(xiàn)對(duì)學(xué)生活動(dòng)的實(shí)時(shí)監(jiān)測(cè)和預(yù)警,提高校園安全管理水平。項(xiàng)目目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)素養(yǎng)目標(biāo)掌握面積圖的繪制方法掌握詞云的繪制方法能區(qū)分組合面積圖和折線圖的展示效果通過學(xué)生消費(fèi)數(shù)據(jù)可視化案例培養(yǎng)學(xué)生勤儉節(jié)約的精神,培育時(shí)代新風(fēng)新貌?過學(xué)生門禁數(shù)據(jù)可視化案例培養(yǎng)學(xué)生能吃苦、肯奮斗的精神學(xué)生基本信息數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)學(xué)生消費(fèi)數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)學(xué)生門禁數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)010302總結(jié)建議04目錄CONCENTS8-1學(xué)生基本信息數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行使用面積圖進(jìn)行數(shù)據(jù)的可視化分析0102目錄CONCENTS8-1-1刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行-數(shù)據(jù)概述

素材與案例\項(xiàng)目8\數(shù)據(jù)集\data1.csv、data2.csv、data3.csv刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行-data2.csv刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行iimportpandasaspd#讀取CSV文件df=pd.read_csv(r'C:\Users\Administrator\Desktop\data1_cleaned.csv',encoding='gbk')#找到'CardNo'和'AccessCardNo'列中所有重復(fù)的行duplicate_card_no=df[df.duplicated('CardNo',keep=False)]duplicate_access_card_no=df[df.duplicated('AccessCardNo',keep=False)]#合并包含所有重復(fù)行的索引duplicate_indices=duplicate_card_no.index.union(duplicate_access_card_no.index)代碼如下:刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行ifnotduplicate_card_no.emptyornotduplicate_access_card_no.empty:ifnotduplicate_card_no.empty:print("存在重復(fù)的'CardNo':")print(duplicate_card_no)ifnotduplicate_access_card_no.empty:print("存在重復(fù)的'AccessCardNo':")print(duplicate_access_card_no)df=df.drop(index=duplicate_indices)df.to_csv(r'C:\Users\Administrator\Desktop\data1_cleaned.csv',index=False,encoding='gbk')print("重復(fù)的行已被刪除,并保存到新的CSV文件。")else:print("'CardNo'列和'AccessCardNo'列值唯一")代碼如下:存在重復(fù)的AccessCardNo值,將所在行刪除并保存新的數(shù)據(jù)集為data1_clean.csv。刪除學(xué)生基本信息數(shù)據(jù)的重復(fù)行運(yùn)行結(jié)果:8-1-2使用面積圖進(jìn)行數(shù)據(jù)的可視化分析使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-面積圖

面積圖是一種常用的數(shù)據(jù)可視化圖表,主要用于展示數(shù)量隨時(shí)間變化的趨勢(shì),以及各部分?jǐn)?shù)據(jù)之間的比例關(guān)系。它在基本的折線圖基礎(chǔ)上,將線下方的區(qū)域使用色彩或紋理填充,這樣的視覺效果可以更加直觀地顯示數(shù)據(jù)隨時(shí)間的累積效果或總量變化。面積圖可以是單一的或堆疊的。單一面積圖通常用于表示單一數(shù)據(jù)系列隨時(shí)間的變化情況。而堆疊面積圖則表示多個(gè)數(shù)據(jù)系列的累積值,每一個(gè)數(shù)據(jù)系列都在前一個(gè)系列的基礎(chǔ)上進(jìn)行堆疊,非常適合用來顯示各部分如何貢獻(xiàn)到整體中。

使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-任務(wù)目標(biāo)使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-準(zhǔn)備數(shù)據(jù)importpandasaspdfrompyecharts.chartsimportLinefrompyechartsimportoptionsasoptsimportwebbrowserdf=pd.read_csv(r'C:\Users\Meng\Desktop\data1_cleaned.csv',encoding='gbk')grouped=df.groupby(['Major','Sex']).size().reset_index(name='Count')pivot_df=grouped.pivot(index='Major',columns='Sex',values='Count').fillna(0)pivot_df['Total']=pivot_df.sum(axis=1)pivot_df=pivot_df.sort_values('Total',ascending=False)pivot_df.drop('Total',axis=1,inplace=True)代碼如下:使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-繪制圖形colors={'男':'blue','女':'red'}line=Line()forsexinpivot_df.columns:line.add_xaxis(pivot_df.index.tolist())line.add_yaxis(sex,pivot_df[sex].astype(int).values.tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),itemstyle_opts=opts.ItemStyleOpts(color=colors.get(sex,'gray')))代碼如下:使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-設(shè)置圖表全局選項(xiàng)line.set_global_opts(title_opts=opts.TitleOpts(title='不同專業(yè)的男女生人數(shù)',pos_left='center'),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30,font_size=10),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=10)),legend_opts=opts.LegendOpts(is_show=True,pos_right=20,pos_top=100,orient="v"))代碼如下:使用面積圖進(jìn)行數(shù)據(jù)的可視化分析-生成并顯示圖形#渲染圖表到HTML文件html_file_path='major_sex_area_chart.html'line.render(html_file_path)#使用webbrowser庫打開生成的HTML文件webbrowser.open(html_file_path)代碼如下:8-2學(xué)生消費(fèi)數(shù)據(jù)可視化項(xiàng)目實(shí)戰(zhàn)學(xué)生消費(fèi)數(shù)據(jù)的操作使用詞云進(jìn)行數(shù)據(jù)的可視化分析0102目錄CONCENTS學(xué)生消費(fèi)數(shù)據(jù)的操作8-2-1學(xué)生消費(fèi)數(shù)據(jù)的操作-準(zhǔn)備數(shù)據(jù)importpandasaspdfrompyecharts.chartsimportWordCloudfrom

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論