自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

大數(shù)據(jù)
當(dāng)我們需要觀察比較2個變量間的關(guān)系時,散點(diǎn)圖是我們首選圖表??僧?dāng)數(shù)據(jù)量非常大,數(shù)據(jù)點(diǎn)又比較集中在某個區(qū)間中,圖表沒法看,密密麻麻的怎么看?

當(dāng)我們需要觀察比較2個變量間的關(guān)系時,散點(diǎn)圖是我們首選圖表。

可當(dāng)數(shù)據(jù)量非常大,數(shù)據(jù)點(diǎn)又比較集中在某個區(qū)間中,圖表沒法看,密密麻麻的怎么看? 

[[337680]]

怎么辦?這時候就得看密度圖了

什么是密度圖? 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

所謂的密度圖 (Density Plot) 就是數(shù)據(jù)的分布稠密情況,它常用于顯示數(shù)據(jù)在連續(xù)時間段內(nèi)的分布狀況。嚴(yán)格來說,它是由直方圖演變而來,類似于把直方圖進(jìn)行了填充。

一般是使用平滑曲線來繪制數(shù)值水平來觀察分布,峰值數(shù)值位置是該時間段內(nèi)最高度集中的地方。

它比直方圖適用性更強(qiáng),不受分組數(shù)量(直方圖的條形數(shù)量不宜過多)的影響,能更好地界定分布形狀 。

本篇文章不談?wù)撝狈綀D,之后老海會專門總結(jié)關(guān)于直方圖的使用。

什么是2D密度圖?

說完了密度圖和直方圖,它們都是一維數(shù)據(jù)變量。

這下我們來看看2D密度圖,它顯示了數(shù)據(jù)集中兩個定量變量范圍內(nèi)值的分布,有助于避免在散點(diǎn)圖中過度繪制。

如果點(diǎn)太多,則2D密度圖會計算2D空間特定區(qū)域內(nèi)的觀察次數(shù)。

該特定區(qū)域可以是正方形或六邊形(六邊形),還可以估算2D內(nèi)核密度估算值,并用輪廓表示它。

本篇文章主要描述一下2D密度圖的使用。 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

2D密度圖的基本數(shù)據(jù)樣式 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

2D密度圖的使用建議

  • 密度圖是一種直方圖的代替方案,常用來觀察連續(xù)變量的分布情況
  • 2D密度圖主要用來解決數(shù)據(jù)點(diǎn)密度過大的問題,要注意密度分割是否合理。
  • 當(dāng)數(shù)據(jù)范圍都非常集中,數(shù)據(jù)間變化不大時,密度圖往往很難觀察效果。

下面開始具體的操作案例

準(zhǔn)備工作

還是和之前一樣,引入必要的工具包 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題
  1. ## 初始字體設(shè)置,設(shè)置好可避免很多麻煩 
  2. plt.rcParams['font.sans-serif']=['Source Han Sans CN']      # 顯示中文不亂碼,思源黑體  
  3. plt.rcParams['font.size'] = 22                              # 設(shè)置圖表全局字體大小,后期某個元素的字體大小可以自行調(diào)整 
  4. plt.rcParams['axes.unicode_minus'] = False                  # 顯示負(fù)數(shù)不亂碼 
  5. ## 初始化圖表大小 
  6. plt.rcParams['figure.figsize'] = (20.0, 8.0)                # 設(shè)置figure_size尺寸 
  7. ## 初始化圖表分辨率質(zhì)量 
  8. plt.rcParams['savefig.dpi'] = 300                           # 設(shè)置圖表保存時的像素分辨率 
  9. plt.rcParams['figure.dpi'] = 300                            # 設(shè)置圖表繪制時的像素分辨率 
  10.  
  11. ## 圖表的顏色自定義 
  12. colors = ['#dc2624''#2b4750''#45a0a2''#e87a59'
  13.          '#7dcaa9''#649E7D''#dc8018''#C89F91',  
  14.          '#6c6d6c''#4f6268''#c7cccf'
  15. plt.rcParams['axes.prop_cycle'] = plt.cycler( color=colors) 
  16.  
  17. path = 'D:\\系列文章\\' 
  18. # 自定義文件路徑,可以自行設(shè)定 
  19. os.chdir(path) 
  20. # 設(shè)置為該路徑為工作路徑,一般存放數(shù)據(jù)源文件 

設(shè)定圖表樣式和文件路徑 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

 

  1. Financial_data = pd.read_excel('虛擬演示案例數(shù)據(jù).xlsx',sheet_name='二維表'
  2. Financial_data 

讀入數(shù)據(jù) 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題
  1. Financial_data = pd.read_excel('虛擬演示案例數(shù)據(jù).xlsx',sheet_name='二維表'
  2. Financial_data 

常見的6種密度圖表類型 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題
  1. from scipy.stats import kde  # 引入核密度計算方法 
  2.  
  3.  
  4. # 為方便演示,創(chuàng)建6個子圖的畫板 
  5. fig, axes = plt.subplots(3,2, figsize=(20, 20)) 
  6.  
  7. # 第一個子圖,我們來畫一個基本的散點(diǎn)圖 
  8. # 散點(diǎn)圖是最經(jīng)典的觀察2個變量關(guān)系,但數(shù)據(jù)量非常大就會出數(shù)據(jù)點(diǎn)堆疊交錯,當(dāng)值我們無法進(jìn)一步探索 
  9. axes[0][0].set_title('散點(diǎn)圖')                                           # 設(shè)置標(biāo)題 
  10. axes_0 = axes[0][0].plot(Financial_data['材料'], Financial_data['管理'], 'ko')    # 畫出散點(diǎn)圖 
  11.  
  12.  
  13.  
  14. # 第二個子圖,我們畫出六邊形蜂巢圖 
  15. # 當(dāng)尋找2個數(shù)值型變量的關(guān)系,數(shù)據(jù)量很大且不希望數(shù)據(jù)堆疊在一起,就可以按照蜂巢形狀切割數(shù)據(jù)點(diǎn),計算每個六邊形里的點(diǎn)數(shù)來表達(dá)密度 
  16. num_bins = 50                                                      # 設(shè)置六邊形包含的距離 
  17. axes[0][1].set_title('蜂巢六邊形圖')                                # 設(shè)置標(biāo)題 
  18. axes_1= axes[0][1].hexbin(Financial_data['材料'], Financial_data['管理'],  
  19.                   gridsize=num_bins,                               # 設(shè)置六邊形的大小 
  20.                   cmap="Blues"                                     # 設(shè)置顏色組合 
  21.                  ) 
  22.  
  23. fig.colorbar(axes_1,ax=axes[0][1])                                 # 設(shè)置顏色顯示條 
  24.  
  25. # 第三個子圖,我們畫出2D直方圖。 
  26. # 我們您需要分析兩個數(shù)據(jù)量比較大的數(shù)值變量關(guān)系時,2D直方圖非常有用,它可以避免在散點(diǎn)圖中出現(xiàn)的的數(shù)據(jù)密度過大問題 
  27. num_bins = 50 
  28. axes[1][0].set_title('2D 直方圖'
  29. axes_2 = axes[1][0].hist2d(Financial_data['材料'], Financial_data['管理'],  
  30.                   bins=(num_bins,num_bins),  
  31.                   cmap="Blues"
  32.  
  33. # fig.colorbar(axes_2,ax=axes[1][0]) 
  34.  
  35.   
  36. # 第四個子圖,我們畫出高斯核密度圖 
  37. # 考慮到想研究具有很多點(diǎn)的兩個數(shù)值變量之間的關(guān)系??梢钥紤]繪圖區(qū)域每個部分上的點(diǎn)數(shù),來計算2D內(nèi)核密度估計值。 
  38. # 就像平滑的直方圖,這個方法不會使某個點(diǎn)掉入特定的容器中,而是會增加周圍容器的權(quán)重,比如顏色會加深。 
  39. k = kde.gaussian_kde(Financial_data.loc[:,['材料','管理']].values.T)           # 進(jìn)行核密度計算 
  40. xi, yi = np.mgrid[Financial_data['材料'].min():Financial_data['材料'].max():num_bins*1j, Financial_data['管理'].min():Financial_data['管理'].max():num_bins*1j] 
  41. zi = k(np.vstack([xi.flatten(), yi.flatten()])) 
  42.  
  43. axes[1][1].set_title('高斯核密度圖'
  44. axes_3 = axes[1][1].pcolormesh(xi,  
  45.                       yi,  
  46.                       zi.reshape(xi.shape),  
  47.                       cmap="Blues"
  48.  
  49. fig.colorbar(axes_3,ax=axes[1][1])                                  # 設(shè)置顏色顯示條 
  50.  
  51. # 第五個子圖,我們畫出帶陰影效果的2D密度圖 
  52. axes[2][0].set_title('帶陰影效果的2D密度圖'
  53. axes[2][0].pcolormesh(xi,  
  54.                       yi,  
  55.                       zi.reshape(xi.shape),  
  56.                       shading='gouraud',  
  57.                       cmap="Blues"
  58.   
  59. # 第六個子圖,我們畫出帶輪廓線的密度圖 
  60. axes[2][1].set_title('帶陰影+輪廓線的2D密度圖'
  61. axes_5 = axes[2][1].pcolormesh(xi,  
  62.                       yi,  
  63.                       zi.reshape(xi.shape),  
  64.                       shading='gouraud',  
  65.                       cmap="Blues"
  66.  
  67. fig.colorbar(axes_5,ax=axes[2][1])                                  # 設(shè)置顏色顯示條 
  68.  
  69. # 畫出輪廓線 
  70. axes[2][1].contour(xi,  
  71.                    yi,  
  72.                    zi.reshape(xi.shape)) 
  73.  
  74. plt.show() 

 數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

特別提一下:2D核密度估計圖

 

數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題
  1. sns.kdeplot(Financial_data['材料'],Financial_data['管理']) 
  2. sns.despine() # 默認(rèn)無參數(shù)狀態(tài),就是刪除上方和右方的邊框,matplotlib貌似做不到  
數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題
  1. sns.kdeplot(Financial_data['材料'],Financial_data['管理'], 
  2.             cmap="Reds",  
  3.             shade=True,                                    # 若為True,則在kde曲線下面的區(qū)域中進(jìn)行陰影處理,color控制曲線及陰影的顏色 
  4.             shade_lowest=True,                        # 如果為True,則屏蔽雙變量KDE圖的最低輪廓。 
  5. #             bw=.15 
  6.            ) 
  7. sns.despine() # 默認(rèn)無參數(shù)狀態(tài),就是刪除上方和右方的邊框,matplotlib貌似做不到  
數(shù)據(jù)量太大?散點(diǎn)圖裝不下怎么辦?用Python解決數(shù)據(jù)密度過大難題

寫在最后

之前介紹了散點(diǎn)圖、熱力圖,這次的2D密度圖,也是觀察數(shù)據(jù)分布的好圖表

它同樣符合圖表演變原則,符合直方圖→1D密度圖→2D密度圖的變化過程

在解決數(shù)據(jù)點(diǎn)密度大,造成數(shù)據(jù)堆疊無法觀察的問題上,密度圖非常有用。

OK,今天先到這里了,老海日常隨筆總結(jié),碼字不易,初心不改!

如果覺得喜歡,請動動小手關(guān)注和轉(zhuǎn)發(fā),鼓勵一下我們。

 

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2024-03-27 14:39:48

MySQL數(shù)據(jù)庫分庫分表

2017-05-31 12:52:55

大數(shù)據(jù)數(shù)據(jù)文件解決思路

2025-04-14 08:30:00

架構(gòu)分庫查詢

2012-01-11 12:31:30

數(shù)據(jù)中心

2015-08-26 11:00:42

機(jī)房環(huán)境

2013-01-11 09:39:56

WLAN3GLTE

2022-12-26 09:16:56

請求量代碼QPS

2024-04-22 08:17:23

MySQL誤刪數(shù)據(jù)

2021-08-13 11:30:07

大數(shù)據(jù)數(shù)據(jù)分析據(jù)中心

2018-02-24 22:47:48

教育大數(shù)據(jù)數(shù)據(jù)平臺

2012-12-18 15:33:44

遞歸數(shù)據(jù)并行計算

2018-07-20 14:41:15

數(shù)據(jù)中心遷移管理運(yùn)維

2009-12-08 15:19:58

WCF大數(shù)據(jù)量

2015-08-12 10:20:47

2021-01-05 10:48:38

RedisAOF日志RDB快照

2022-02-09 12:11:57

數(shù)據(jù)丟失數(shù)據(jù)恢復(fù)硬盤

2010-09-15 10:23:11

數(shù)據(jù)中心設(shè)計

2015-11-18 13:05:09

2025-02-21 10:59:22

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號