數(shù)據(jù)可視化技術與應用(Python) 課件 項目6:疾病數(shù)據(jù)可視化項目實戰(zhàn)_第1頁
數(shù)據(jù)可視化技術與應用(Python) 課件 項目6:疾病數(shù)據(jù)可視化項目實戰(zhàn)_第2頁
數(shù)據(jù)可視化技術與應用(Python) 課件 項目6:疾病數(shù)據(jù)可視化項目實戰(zhàn)_第3頁
數(shù)據(jù)可視化技術與應用(Python) 課件 項目6:疾病數(shù)據(jù)可視化項目實戰(zhàn)_第4頁
數(shù)據(jù)可視化技術與應用(Python) 課件 項目6:疾病數(shù)據(jù)可視化項目實戰(zhàn)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

疾病數(shù)據(jù)可視化項目實戰(zhàn)數(shù)據(jù)可視化技術與應用項目導讀

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

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

使用isin([0,1])方法來檢查“cardio”列中的值是否是0或者1。這個方法返回一個布爾類型的Series,標記了是否滿足條件。~:~符號代表邏輯取反,將滿足條件的行變?yōu)镕alse,不滿足條件的行變?yōu)門rue。代碼講解:6-1-2使用堆疊柱狀圖進行數(shù)據(jù)可視化分析使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析知識新知堆疊柱狀圖可以用于比較銷售數(shù)據(jù)、分析人口統(tǒng)計數(shù)據(jù)、展示支出構成以及進行市場份額分析。通過將數(shù)據(jù)以堆疊的方式呈現(xiàn),這種圖表能夠直觀地顯示不同組成部分的相對比例和差異,幫助我們更好地理解數(shù)據(jù)的分布和關系。無論是經營決策、預算分配還是市場競爭分析,堆疊柱狀圖都可以提供直觀且易于理解的視覺展示。在堆疊柱狀圖中,每個柱子代表一個類別或組別,而柱子的高度表示該類別或組別的數(shù)值。不同類別或組別的柱子在同一個位置上堆疊,并通過顏色來區(qū)分。任務一對心血管疾病與年齡相關性數(shù)據(jù)進行堆疊柱狀圖的可視化分析。使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析使用堆疊柱狀圖進行數(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)代碼如下:使用堆疊柱狀圖進行數(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='心血管疾病與年齡相關性')fig.update_layout(xaxis_title='年齡',yaxis_title='數(shù)量(單位:人)',title={'text':'心血管疾病與年齡相關性','x':0.5})fig.update_xaxes(type='category',categoryorder='categoryascending')fig.show()代碼如下:

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

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

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

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

生成的圖表具有交互性,可以通過縮放、平移、懸停和單擊等操作與圖表進行互動。此外,還可以將圖表嵌入到Web應用程序中,或以靜態(tài)圖像的形式保存。使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析代碼講解:除了plotly.express模塊值得注意,代碼實現(xiàn)中的plotly.express.bar()也同樣值得解釋說明,plotly.express.bar()函數(shù)是plotly.express模塊中用于創(chuàng)建柱狀圖的函數(shù)。它提供了簡潔的API界面,使得創(chuàng)建柱狀圖變得更加簡單和直觀。以下是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)使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析代碼講解:考慮到上述參數(shù)較多,只解釋常用的參數(shù)。data_frame:提供數(shù)據(jù)的pandas.DataFrame對象。x:x軸上的變量名稱,通常代表分類數(shù)據(jù)。y:y軸上的變量名稱,通常代表計數(shù)或度量值。color:用于根據(jù)數(shù)據(jù)框中某列的值給條形圖上的條形著色。orientation:條形圖的方向。如果是'h'則為水平條形圖,如果是'v'則為垂直條形圖。title:圖表標題文本,可以是字符串。使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析代碼講解:labels:一個字典,用來重命名列名或者圖例標簽。template:圖表的樣式模板,如'plotly'(中性的顏色),

'plotly_white'(純白色背景),

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

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

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

通過過濾異常值和刪除重復行來處理其他兩列的數(shù)據(jù)。任務一首先采用3σ原則來過濾異常值,并將結果保存到新的“filtered_心血管疾病數(shù)據(jù)集.csv”文件中。心血管疾病與身高和體重相關性數(shù)據(jù)的操作importpandasaspdimportnumpyasnpdf=pd.read_csv(r'C:\Users\Administrator\Desktop\心血管疾病數(shù)據(jù)集.csv')#定義一個函數(shù)來檢查數(shù)值是否異常defcheck_value(height,weight):#計算均值和標準差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σ原則過濾異常值代碼如下:心血管疾病與身高和體重相關性數(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)代碼如下:心血管疾病與身高和體重相關性數(shù)據(jù)的操作#去除空值行filtered_df=filtered_df.dropna()#計算異常值的行數(shù)num_rows_with_outliers=df.shape[0]-filtered_df.shape[0]#輸出異常值的行數(shù)print("異常值的行數(shù):",num_rows_with_outliers)#將結果保存到新的csv文件filtered_df.to_csv(r'C:\Users\Administrator\Desktop\filtered_心血管疾病數(shù)據(jù)集.csv',index=False)代碼如下:運行結果:心血管疾病與身高和體重相關性數(shù)據(jù)的操作任務二需要處理數(shù)據(jù)中的空值,對于上述的三列數(shù)據(jù),需要查看單元格的內容是否有空值,那么通過以下代碼來檢查這三列數(shù)據(jù)的空值情況。使用堆疊柱狀圖進行數(shù)據(jù)的可視化分析心血管疾病與身高和體重相關性數(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]#初始化列的空值檢查結果為Falseforrowindata:foriincolumns_to_check:代碼如下:心血管疾病與身高和體重相關性數(shù)據(jù)的操作ifnotrow[i]:column_empty[columns_to_check.index(i)]=True#如果為空值,將對應列的空值檢查結果設置為Trueempty_columns=[i+1foriincolumns_to_checkifcolumn_empty[columns_to_check.index(i)]]ifempty_columns:print(f"第{','.join(map(str,empty_columns))}列中存在空值")else:print("所選列均不存在空值")運行結果證明這三列中不含空值,如下圖6-9所示。代碼如下:心血管疾病與身高和體重相關性數(shù)據(jù)的操作運行結果:使用小提琴圖進行數(shù)據(jù)可視化分析6-2-2使用小提琴圖進行數(shù)據(jù)可視化分析知識新知小提琴圖是一種常用于展示數(shù)據(jù)分布的統(tǒng)計圖表,它結合了箱線圖和核密度圖的特點,能夠展示出數(shù)據(jù)的分布形狀和密度。小提琴圖通常由一對稱的曲線和中間的盒狀圖組成,曲線部分代表了數(shù)據(jù)的核密度估計,盒狀圖則顯示了數(shù)據(jù)的四分位范圍和中位數(shù)。小提琴圖的曲線部分可以通過寬度來展示數(shù)據(jù)的分布密度,較寬的部分表示該位置上有更多的數(shù)據(jù)點,而較窄的部分表示數(shù)據(jù)點較少。通過觀察小提琴圖,可以比較不同類別數(shù)據(jù)的分布情況,識別數(shù)據(jù)的峰值和密度差異,從而更直觀地理解數(shù)據(jù)的分布,小提琴的主要構成如下圖所示。使用小提琴圖進行數(shù)據(jù)可視化分析知識新知由圖可以看出小提琴圖和箱線圖是比較類似的,其實小提琴圖和箱線圖是兩種常用的統(tǒng)計圖形,都用于可視化數(shù)據(jù)的分布情況和統(tǒng)計特征。它們在一些方面有相似之處,但也存在一些明顯的差異。如表所示。使用小提琴圖進行數(shù)據(jù)可視化分析知識新知

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

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

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

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

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

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

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

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

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

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

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

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

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

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

這組代碼可以解釋為x軸和y軸的變量名分別為'variable'和'value'。這意味著在繪制小提琴圖時,x軸將顯示變量的名稱,y軸將顯示變量的值。接下來,通過參數(shù)hue='cardio',將數(shù)據(jù)根據(jù)名為'cardio'的變量進行分組。這將導致小提琴圖中按照'cardio'的不同取值繪制不同顏色的小提琴圖。參數(shù)split=True表示將小提琴圖分割成兩半,以表示不同的類別或組。數(shù)據(jù)集df_melt被傳遞給參數(shù)data,以指定要繪制的數(shù)據(jù)。通過scale='count',我們調整小提琴圖的寬度,使其基于每個類別或組的數(shù)據(jù)點數(shù)量進行縮放。參數(shù)scale_hue=False表示不對hue變量的不同取值進行縮放。最后,通過palette={0:'white',1:'black'}指定了調色板的顏色為黑色和白色。如果想把上圖的小提琴圖分成兩個小提琴圖只需將參數(shù)split=True改為split=False最后生成如下效果圖。代碼講解:使用小提琴圖進行數(shù)據(jù)可視化分析代碼講解:使用小提琴圖進行數(shù)據(jù)可視化分析任務二接下來可以通過小提琴圖觀察心血管疾病與身高的關系使用小提琴圖進行數(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'])使用小提琴圖進行數(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'})使用小提琴圖進行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標的標簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標的標題ax.set(xticklabels=[])#將縱坐標的標簽設置為"weight"ax.set(ylabel='身高(單位:厘米)')#添加標題plt.title('心血管疾病與身高的關系')plt.show()使用小提琴圖進行數(shù)據(jù)可視化分析代碼如下:#去掉橫坐標的標簽ax.set(xlabel='心血管疾病')#去掉橫軸坐標的標題ax.set(xticklabels=[])#將縱坐標的標簽設置為"weight"ax.set(ylabel='身高(單位:厘米)')#添加標題plt.title('心血管疾病與身高的關系')plt.show()使用小提琴圖進行數(shù)據(jù)可視化分析任務三

還需要探討心血管疾病和體重、身高共同的關系。通過數(shù)據(jù)集中的“height”列和“weight”來定義“BMI指數(shù)”,來通過查看BMI指數(shù)正常的人是否有有血管疾病情況,BMI指數(shù)是國際上常用來衡量人體胖瘦程度以及是否健康的一個標準,其計算方法為體重(kg)除以身高(m)的平方,即BMI=體重(kg)/身高(m)^2。18.5-24.9kg/m^2為正常。使用小提琴圖進行數(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)使用小提琴圖進行數(shù)據(jù)可視化分析代碼如下:

溫馨提示

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

評論

0/150

提交評論