網站建設地址北京昌平關鍵詞搜索指數(shù)查詢工具
1. 前言
在數(shù)據(jù)分析和統(tǒng)計學中,繪制統(tǒng)計分布圖是非常重要的,因為它幫助我們直觀地理解數(shù)據(jù)的特性,并為進一步的分析提供基礎。統(tǒng)計分布圖能夠揭示數(shù)據(jù)集的結構、趨勢、集中趨勢和離散程度等信息,從而使我們更容易做出合理的假設、判斷和決策。
2. hist直方圖
適用于不同樣本來源的比較,小數(shù)據(jù)集,不同樣本間的數(shù)據(jù)分布比較
或同一來源數(shù)據(jù)集作圖選擇合適統(tǒng)計模型
直方圖是一個常用的工具,用于展示單個變量的分布。它將數(shù)據(jù)按區(qū)間(bins)劃分,并通過條形圖展示每個區(qū)間內數(shù)據(jù)的頻率或數(shù)量。
2.1 直方圖的使用場景
1. 查看數(shù)據(jù)分布
直方圖最常用的場景是查看數(shù)值型數(shù)據(jù)的分布情況。通過直方圖可以直觀了解數(shù)據(jù)是偏向于正態(tài)分布、偏態(tài)分布,還是存在多個峰值(多峰分布)
2. 選擇合適的統(tǒng)計模型
通過直方圖的形狀,可以幫助確定數(shù)據(jù)是否適合某種統(tǒng)計模型。例如,判斷數(shù)據(jù)是否符合正態(tài)分布、均勻分布或指數(shù)分布等。
3. 比較多個數(shù)據(jù)集的分布
直方圖還可以用于比較多個數(shù)據(jù)集的分布。通過疊加或并排顯示不同數(shù)據(jù)集的直方圖,可以對比它們的分布差異
2.2 代碼與圖
import matplotlib.pyplot as plt
import numpy as np# 生成隨機數(shù)據(jù)
data = np.random.randn(1000)# 繪制直方圖
plt.hist(data, bins=30, alpha=0.7, color='b')# 添加標題和標簽
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')# 顯示圖像
plt.show()
2.3 常見參數(shù)
bins | 指定數(shù)據(jù)區(qū)間的數(shù)量 |
alpha | 用于設置透明度,多個圖形疊加時最好使用 |
color | 用于設置柱形的顏色 |
edgecolor | 設置圖形元素的邊緣顏色 |
linewidth | 控制線條的寬度,單位為point |
3. boxplot箱形圖
適用于同一樣本來源,大小數(shù)據(jù)集皆可,內部不同時間/狀況的樣本比較
顯示一組數(shù)據(jù)的分布情況和統(tǒng)計特征,特別是用于比較不同數(shù)據(jù)集的分布。它通過顯示數(shù)據(jù)的?五個數(shù)值摘要(最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)、最大值),以及識別異常值,幫助我們快速了解數(shù)據(jù)的分布、離散程度、中心趨勢等信息。
3.1 使用場景
1. 數(shù)據(jù)分布的可視化
同時展示多個數(shù)據(jù)集的分布情況(如不同實驗組、不同變量的結果)。
適合用來查看數(shù)據(jù)的對稱性、偏態(tài)以及是否存在異常值。
2. 數(shù)據(jù)的對比
可以通過比較多個箱線圖,直觀地對比不同組數(shù)據(jù)的中心趨勢、變異性和分布
例如,比較兩個班級的考試成績分布、不同產品的銷售額分布。
3. 檢測異常值
快速發(fā)現(xiàn)數(shù)據(jù)中的異常值(outliers)。位于箱線圖“胡須”之外的數(shù)據(jù)點即為異常值,幫助分析潛在的極端情況。
4. 查看數(shù)據(jù)的集中趨勢和離散程度
直觀地看到數(shù)據(jù)的中位數(shù)和四分位數(shù),判斷數(shù)據(jù)的集中趨勢和離散程度。
適合用于非對稱分布數(shù)據(jù)的可視化,例如工資分布、房價分布等。
3.2 異常點分析
是的,boxplot
?中的異常值通常是指超出 1.5 倍四分位距(IQR, Interquartile Range)范圍的數(shù)據(jù)點。具體來說,IQR 是上四分位數(shù)(Q3)和下四分位數(shù)(Q1)之間的距離,即:
1.5 倍的 IQR 是一個常用的標準,用于標識數(shù)據(jù)中的異常值。這個標準來源于統(tǒng)計學中對數(shù)據(jù)分布的一個經驗法則。
?3.3 代碼與作圖
import matplotlib.pyplot as plt
import numpy as np# 生成隨機數(shù)據(jù)
np.random.seed(10)
data1 = np.random.normal(100, 10, 200)
data2 = np.random.normal(90, 20, 200)
data3 = np.random.normal(80, 15, 200)# 繪制箱線圖
plt.boxplot([data1, data2, data3], patch_artist=True, widths=0.6, boxprops=dict(facecolor='lightblue'), medianprops=dict(color='red', linewidth=2), whiskerprops=dict(color='green'))# 添加標題
plt.title("Boxplot Example")
plt.xticks([1,2,3],['A','B','C']) #指定修改標簽# 顯示圖形
plt.show()
3.4 相關參數(shù)
vert | 設置箱線圖的方向。True為垂直,False為水平 |
patch_artist | 是否填充箱體,為True則填充 |
showfliers | 是否顯示異常值 |
widths | 箱線圖的寬度 |
positions | 圖所在的位置。position=[1,2,4] |
boxprops | 控制箱體的樣式,boxprops=dict(facecolor='',color='') |
flierprops | 設置異常值的樣式,傳入字典 |
showmeans | 是否顯示數(shù)據(jù)的均值 |
4. errorbar誤差條
適用于同一樣本來源,小數(shù)據(jù)集,比較內部數(shù)據(jù)
誤差條是用來展示每個數(shù)據(jù)的浮動誤差,顯示測量誤差或者不確定性
4.1 使用場景
-
測量誤差:當你有測量數(shù)據(jù)時,通常需要顯示每個數(shù)據(jù)點的誤差范圍。error可以在數(shù)據(jù)點上添加誤差條,幫助顯示這些測量誤差。
-
數(shù)據(jù)的不確定性:在科學實驗或數(shù)據(jù)分析中,數(shù)據(jù)的準確性可能受到各種因素的影響,
errorbar
?可以幫助你表示這些不確定性。 -
比較數(shù)據(jù):當你比較不同實驗組或條件下的數(shù)據(jù)時,誤差條可以幫助你更好地理解數(shù)據(jù)的變異性和可靠性。
4.2 代碼與作圖
#errorbar
x = [2,4,6]
y = [3,7,11]
yerr = [0.3,0.5,0.9]fig,ax = plt.subplots()
ax.errorbar(x,y,yerr,fmt='o',linewidth=3,capsize=10)
4.3 相關參數(shù)
fmt | 設置數(shù)據(jù)點的標記樣式 |
ecolor | 設置誤差線的顏色 |
linewidth | 設置誤差線的寬度 |
capsize | 設置誤差端點的長度 |
xerr | x軸數(shù)據(jù)的誤差 |
yerr | y軸數(shù)據(jù)的誤差 |
5. violinplot小提琴圖
5.1 簡介
同一樣本或不同樣本比較均可使用
Violin圖是結合了箱線圖和核密度線的圖片,展示數(shù)據(jù)的分布情況。
核密度線(KDE):Violin的形狀代表數(shù)據(jù)的分布密度。越寬表示該值附近的數(shù)據(jù)點多,窄就表示越少
兩側對稱:左右分布是一樣的,使圖形更容易解讀
5.2 代碼與作圖
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np# 生成隨機數(shù)據(jù)
data = np.random.normal(size=100)# 使用 seaborn 繪制 violin 圖
sns.violinplot(data=data)# 顯示圖形
plt.show()
6. pie餅狀圖
適用于同一樣本來源,小數(shù)據(jù)集,內部種類比較
餅圖適用于展示數(shù)據(jù)中各部分在整體中所占比例的場景。它能夠直觀地展示每個部分的相對大小,適合少量分類數(shù)據(jù)的可視化。
6.1 使用場景
1. 比例分析
當你想展示數(shù)據(jù)集中不同類別的占比,如市場份額、預算分配、人口構成等,餅圖是很合適的選擇。例如,展示公司不同產品線的銷售額占比。
2. 數(shù)據(jù)種類較少
餅圖通常只適用于少量分類數(shù)據(jù)(一般不超過 5-6 類)。如果分類過多,餅圖會顯得雜亂且難以閱讀。
6.2 代碼與作圖
import matplotlib.pyplot as plt# 數(shù)據(jù)
sizes = [15, 30, 45, 10]
labels = ['Apples', 'Bananas', 'Cherries', 'Dates']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0, 0.1, 0, 0) # 'Bananas' 部分稍微爆開# 繪制餅圖
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=140)# 確保餅圖為圓形
plt.axis('equal')# 添加標題
plt.title("Fruit Consumption Pie Chart")# 顯示圖形
plt.show()
6.3 相關參數(shù)
labels | label=['A','B'],添加標簽 |
color | 自定義塊的顏色 |
autopct | 顯示每個部分的百分比 |
explode | explode=[0,0.1,0,0],設置每部分是否分離,分離的距離 |
shadow | 添加陰影效果 |
radius | 設置餅圖的半徑 |
pctdistance | 設置百分比標簽與餅圖中心的距離 |
7. hist2d二維直方圖
適用于大數(shù)據(jù)集,同一樣本來源的內部數(shù)據(jù)分布比較
適用于將兩個變量的分布情況在二維平面上進行可視化。該函數(shù)會根據(jù)傳入的兩個變量,將數(shù)據(jù)按網格進行劃分,并統(tǒng)計每個網格中的數(shù)據(jù)點數(shù),最終生成一個二維熱圖。
7.1 使用場景
1. 分析兩個連續(xù)變量之間的關系
當你有兩個連續(xù)變量并想觀察它們之間的相關性或分布模式時,hist2d()
?是很好的工具。它會把數(shù)據(jù)分成網格(bins),并顯示每個網格內的數(shù)據(jù)點數(shù)量。
2. 大規(guī)模數(shù)據(jù)集
將數(shù)據(jù)分箱處理,把數(shù)據(jù)點密集的區(qū)域以顏色濃度來表示,能夠更加清晰地顯示數(shù)據(jù)分布。
3. 數(shù)據(jù)量大的情況下替代散點圖
如果數(shù)據(jù)量過大,散點圖的點可能會重疊,導致圖形難以解釋。hist2d()
?可以通過統(tǒng)計數(shù)據(jù)點數(shù)量,以顏色的深淺來表示點的密集程度,能夠更好地處理數(shù)據(jù)重疊的問題。
7.2 代碼與作圖
import matplotlib.pyplot as plt
import numpy as np# 生成一些隨機數(shù)據(jù)
x = np.random.randn(10000) # 橫軸數(shù)據(jù)
y = np.random.randn(10000) # 縱軸數(shù)據(jù)# 繪制二維直方圖
plt.hist2d(x, y, bins=30, cmap='Blues')# 添加顏色欄
plt.colorbar(label='Counts')# 顯示圖形
plt.show()
7.3 相關參數(shù)
bins | 設置每個維度上的箱子數(shù),也決定了網格的分辨率,(3,4) |
range | 定義二維直方圖的范圍 |
cmap | 顏色映射,用于指定不同箱子計數(shù)的顏色,'Blues','Reds' |
density | 返回的數(shù)據(jù)歸一化,總面積為1 |
cmin | 設定顏色強度的最小值,小于將被設置為透明 |
8. hexbin蜂窩圖
適用于大數(shù)據(jù)集,同一樣本來源的內部數(shù)據(jù)分布比較
8.1 簡介
與hist2d效果相似,都用于可視化二維數(shù)據(jù)的分布情況
使用的是?六邊形網格,將數(shù)據(jù)劃分為蜂窩狀的六邊形區(qū)域。這使得視覺上更加緊湊,六邊形網格在表示連續(xù)數(shù)據(jù)分布時可以減少“邊界效應”,在某些情況下能比矩形網格更好地展示數(shù)據(jù)分布。
8.2 代碼與作圖
import numpy as np
import matplotlib.pyplot as plt# 生成隨機數(shù)據(jù)
x = np.random.randn(10000)
y = np.random.randn(10000)# 繪制六邊形分箱圖
plt.hexbin(x, y, gridsize=30, cmap='Blues')
plt.colorbar(label='Counts')
plt.title('hexbin Example')
plt.show()
9. ecdf累計概率密度圖
適用于小數(shù)據(jù)集,同一樣本來源中數(shù)據(jù)大小分布比較
展示了數(shù)據(jù)集中每個數(shù)據(jù)點的值在整體數(shù)據(jù)中的累積百分比,即有多少比例的數(shù)據(jù)點小于等于某個值。
9.1 特點
-
1. 累積分布:ECDF 圖展示的是每個數(shù)據(jù)點的值和它在整個數(shù)據(jù)集中的相對排名(累積百分比)。因此,縱軸(y 軸)表示的是累積概率,范圍從 0 到 1,橫軸(x 軸)是數(shù)據(jù)點的值。
-
2. 每個數(shù)據(jù)點對應一個累積概率:圖中的每一個點表示一個數(shù)據(jù)點和它在數(shù)據(jù)集中所占的比例。例如,某個點的 y 值是 0.6,意味著 60% 的數(shù)據(jù)點小于或等于這個點的 x 值。
-
3. 對數(shù)據(jù)分布的完整描述:與直方圖和密度圖不同,ECDF 圖展示了?每個數(shù)據(jù)點?的信息,避免了由于數(shù)據(jù)分箱導致的失真,因此它保留了數(shù)據(jù)的精確信息,適合小數(shù)據(jù)集。
9.2 代碼與作圖
a = np.random.normal(4,2,10)
print(a)
fig,ax = plt.subplots()
ax.ecdf(a)