數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程_第1頁
數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程_第2頁
數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程_第3頁
數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程_第4頁
數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數據分析:統(tǒng)計分析:描述性統(tǒng)計分析教程1數據預處理:數據清洗、數據轉換與數據標準化1.1數據清洗數據清洗是數據分析過程中的關鍵步驟,旨在識別并糾正數據集中的錯誤、不一致和缺失值。這一步驟對于確保后續(xù)分析的準確性和可靠性至關重要。1.1.1原理數據清洗涉及多個子任務,包括:-識別異常值:通過統(tǒng)計方法或業(yè)務規(guī)則找出不符合預期的數據點。-處理缺失值:決定是填充缺失值、刪除含有缺失值的記錄還是預測缺失值。-糾正不一致:確保數據在格式、單位和編碼上的一致性。1.1.2內容與代碼示例假設我們有一個包含銷售數據的CSV文件,其中存在一些缺失值和異常值。1.1.2.1示例數據importpandasaspd

#創(chuàng)建示例數據

data={

'日期':['2023-01-01','2023-01-02','2023-01-03','2023-01-04',None],

'銷售額':[1500,2000,1800,2200,1900],

'產品ID':[101,102,103,104,105],

'數量':[100,150,120,180,None]

}

df=pd.DataFrame(data)1.1.2.2識別和處理缺失值#識別缺失值

print(df.isnull().sum())

#填充缺失值

df['日期'].fillna('2023-01-05',inplace=True)

df['數量'].fillna(df['數量'].mean(),inplace=True)

#刪除含有缺失值的記錄

#df.dropna(inplace=True)

#輸出處理后的數據

print(df)1.1.2.3識別異常值#使用IQR方法識別異常值

Q1=df['銷售額'].quantile(0.25)

Q3=df['銷售額'].quantile(0.75)

IQR=Q3-Q1

lower_bound=Q1-1.5*IQR

upper_bound=Q3+1.5*IQR

outliers=df[(df['銷售額']<lower_bound)|(df['銷售額']>upper_bound)]

print(outliers)1.2數據轉換數據轉換是將數據從一種格式或結構轉換為另一種,以適應分析需求的過程。1.2.1原理數據轉換可以包括:-類型轉換:如將字符串轉換為日期或數值。-數據編碼:將分類數據轉換為數值表示。-函數應用:如對數值進行對數或平方根轉換。1.2.2內容與代碼示例1.2.2.1示例數據#創(chuàng)建示例數據

data={

'日期':['2023-01-01','2023-01-02','2023-01-03'],

'銷售額':[1500,2000,1800],

'產品ID':['A','B','C']

}

df=pd.DataFrame(data)1.2.2.2類型轉換#將日期列轉換為日期類型

df['日期']=pd.to_datetime(df['日期'])

print(df.dtypes)1.2.2.3數據編碼#對產品ID進行編碼

df['產品ID']=df['產品ID'].astype('category').cat.codes

print(df)1.3數據標準化數據標準化是將數據調整到特定范圍或分布,以消除量綱影響和提高模型性能的過程。1.3.1原理數據標準化方法包括:-最小-最大標準化:將數據縮放到0到1之間。-Z-score標準化:將數據轉換為標準正態(tài)分布。1.3.2內容與代碼示例1.3.2.1示例數據#創(chuàng)建示例數據

data={

'銷售額':[1500,2000,1800,2200,1900],

'數量':[100,150,120,180,130]

}

df=pd.DataFrame(data)1.3.2.2最小-最大標準化fromsklearn.preprocessingimportMinMaxScaler

#創(chuàng)建MinMaxScaler對象

scaler=MinMaxScaler()

#對銷售額和數量列進行標準化

df[['銷售額','數量']]=scaler.fit_transform(df[['銷售額','數量']])

print(df)1.3.2.3Z-score標準化fromsklearn.preprocessingimportStandardScaler

#創(chuàng)建StandardScaler對象

scaler=StandardScaler()

#對銷售額和數量列進行Z-score標準化

df[['銷售額','數量']]=scaler.fit_transform(df[['銷售額','數量']])

print(df)通過以上步驟,我們能夠有效地清洗、轉換和標準化數據,為后續(xù)的統(tǒng)計分析和建模奠定堅實的基礎。2描述性統(tǒng)計分析基礎2.1統(tǒng)計量概述描述性統(tǒng)計分析是數據分析的基礎,它通過計算統(tǒng)計量來總結和描述數據集的特征。統(tǒng)計量是基于數據集計算出的數值,用于反映數據的中心位置、離散程度、分布形態(tài)等特性。常見的統(tǒng)計量包括均值、中位數、眾數、標準差、方差、極差等。2.1.1均值均值是所有數值的總和除以數值的個數,是集中趨勢度量中最常用的指標。2.1.1.1代碼示例#導入numpy庫

importnumpyasnp

#創(chuàng)建數據集

data=np.array([1,2,3,4,5])

#計算均值

mean=np.mean(data)

print(f"均值:{mean}")2.1.2中位數中位數是將數據集按數值大小排序后位于中間位置的數值。如果數據集的個數是偶數,則中位數是中間兩個數值的平均值。2.1.2.1代碼示例#使用numpy計算中位數

median=np.median(data)

print(f"中位數:{median}")2.1.3眾數眾數是數據集中出現頻率最高的數值。對于多模態(tài)數據集,可能存在多個眾數。2.1.3.1代碼示例#導入scipy庫

fromscipyimportstats

#創(chuàng)建多模態(tài)數據集

data_mode=np.array([1,2,2,3,3,3,4,5,5,5])

#計算眾數

mode=stats.mode(data_mode)

print(f"眾數:{mode.mode[0]},出現次數:{mode.count[0]}")2.2集中趨勢度量集中趨勢度量用于描述數據集中的中心位置,常見的有均值、中位數和眾數。這些指標幫助我們理解數據的“平均”或“典型”值。2.2.1均值的計算均值的計算公式為:x其中,x是均值,xi是數據集中的每個數值,n2.2.2中位數的計算中位數的計算步驟如下:1.將數據集按數值大小排序。2.如果數據集的個數是奇數,則中位數是位于中間位置的數值。3.如果數據集的個數是偶數,則中位數是中間兩個數值的平均值。2.2.3眾數的計算眾數的計算步驟如下:1.計算數據集中每個數值的出現頻率。2.眾數是出現頻率最高的數值。2.3離散程度度量離散程度度量用于描述數據集中的數值分布的分散程度,常見的有標準差、方差和極差。2.3.1標準差標準差是方差的平方根,用于衡量數據集中的數值與均值的平均差異。2.3.1.1代碼示例#計算標準差

std_dev=np.std(data)

print(f"標準差:{std_dev}")2.3.2方差方差是數據集中每個數值與均值差的平方的平均值,計算公式為:s其中,s2是方差,x是均值,xi是數據集中的每個數值,2.3.2.1代碼示例#計算方差

variance=np.var(data,ddof=1)#ddof=1表示使用無偏估計

print(f"方差:{variance}")2.3.3極差極差是數據集中的最大值與最小值的差,用于衡量數據集的范圍。2.3.3.1代碼示例#計算極差

range_data=np.max(data)-np.min(data)

print(f"極差:{range_data}")2.4實戰(zhàn)案例假設我們有一組銷售數據,我們想要分析這組數據的集中趨勢和離散程度。2.4.1數據集sales_data=np.array([120,150,180,200,220,250,280,300,320,350])2.4.2分析步驟2.4.2.1計算均值mean_sales=np.mean(sales_data)

print(f"銷售數據的均值:{mean_sales}")2.4.2.2計算中位數median_sales=np.median(sales_data)

print(f"銷售數據的中位數:{median_sales}")2.4.2.3計算眾數mode_sales=stats.mode(sales_data)

print(f"銷售數據的眾數:{mode_sales.mode[0]},出現次數:{mode_sales.count[0]}")2.4.2.4計算標準差std_dev_sales=np.std(sales_data)

print(f"銷售數據的標準差:{std_dev_sales}")2.4.2.5計算方差variance_sales=np.var(sales_data,ddof=1)

print(f"銷售數據的方差:{variance_sales}")2.4.2.6計算極差range_sales=np.max(sales_data)-np.min(sales_data)

print(f"銷售數據的極差:{range_sales}")通過上述步驟,我們可以全面地了解銷售數據的集中趨勢和離散程度,為后續(xù)的統(tǒng)計分析和決策提供基礎數據支持。3集中趨勢度量3.1平均數計算平均數是最常用的集中趨勢度量之一,它通過將所有數值相加后除以數值的個數來計算。平均數能夠提供數據集的中心位置信息,但對極端值敏感。3.1.1示例代碼#導入numpy庫

importnumpyasnp

#創(chuàng)建一個數據集

data=np.array([10,20,30,40,50])

#計算平均數

mean=np.mean(data)

#輸出結果

print("平均數:",mean)3.1.2數據樣例與解釋假設我們有以下數據集,代表了某公司員工的年齡:data=np.array([25,30,35,40,45,50,55,60,65,70])使用上述代碼,我們可以計算出該數據集的平均年齡:mean=np.mean(data)

print("平均年齡:",mean)輸出結果為:平均年齡:47.5這表示公司員工的平均年齡為47.5歲。3.2中位數和眾數3.2.1中位數中位數是將數據集按數值大小排序后位于中間的數。如果數據集的個數是偶數,則中位數是中間兩個數的平均值。中位數對極端值不敏感,因此在數據分布不均勻時,它是一個更好的集中趨勢度量。3.2.2眾數眾數是數據集中出現頻率最高的數值。一個數據集可能有多個眾數,也可能沒有眾數。3.2.3示例代碼#導入numpy和scipy庫

importnumpyasnp

fromscipyimportstats

#創(chuàng)建一個數據集

data=np.array([10,20,30,40,50,50,50])

#計算中位數

median=np.median(data)

#計算眾數

mode=stats.mode(data)

#輸出結果

print("中位數:",median)

print("眾數:",mode.mode[0])3.2.4數據樣例與解釋假設我們有以下數據集,代表了某公司員工的年齡:data=np.array([25,30,35,40,45,50,50,50,60,65])使用上述代碼,我們可以計算出該數據集的中位數和眾數:median=np.median(data)

mode=stats.mode(data)

print("中位數:",median)

print("眾數:",mode.mode[0])輸出結果為:中位數:47.5

眾數:50這表示公司員工年齡的中位數為47.5歲,眾數為50歲,即一半員工的年齡低于47.5歲,一半員工的年齡高于47.5歲,而50歲是出現頻率最高的年齡。3.3偏斜度和峰度3.3.1偏斜度偏斜度(Skewness)是衡量數據分布對稱性的統(tǒng)計量。如果偏斜度為0,則數據分布是對稱的;如果偏斜度為正,則數據分布右偏;如果偏斜度為負,則數據分布左偏。3.3.2峰度峰度(Kurtosis)是衡量數據分布峰態(tài)的統(tǒng)計量。如果峰度為0,則數據分布與正態(tài)分布的峰態(tài)相同;如果峰度為正,則數據分布比正態(tài)分布更尖;如果峰度為負,則數據分布比正態(tài)分布更平。3.3.3示例代碼#導入numpy和scipy庫

importnumpyasnp

fromscipyimportstats

#創(chuàng)建一個數據集

data=np.array([10,20,30,40,50,50,50,60,70,80])

#計算偏斜度

skewness=stats.skew(data)

#計算峰度

kurtosis=stats.kurtosis(data)

#輸出結果

print("偏斜度:",skewness)

print("峰度:",kurtosis)3.3.4數據樣例與解釋假設我們有以下數據集,代表了某公司員工的年齡:data=np.array([25,30,35,40,45,50,50,50,60,65,70,75,80,85,90])使用上述代碼,我們可以計算出該數據集的偏斜度和峰度:skewness=stats.skew(data)

kurtosis=stats.kurtosis(data)

print("偏斜度:",skewness)

print("峰度:",kurtosis)輸出結果為:偏斜度:0.6203505602482047

峰度:-0.5142857142857144這表示公司員工年齡的數據分布略微右偏,且分布比正態(tài)分布更平。偏斜度為正說明數據集的長尾在右側,而峰度為負說明數據集的峰值比正態(tài)分布的峰值更平坦。以上內容詳細介紹了集中趨勢度量中的平均數計算、中位數和眾數的計算,以及偏斜度和峰度的計算方法,并提供了具體的代碼示例和數據樣例進行解釋。通過這些度量,我們可以更好地理解數據集的中心位置和分布特性。4離散程度度量4.1方差和標準差方差和標準差是衡量數據離散程度的兩個重要指標。方差表示每個數據與平均數差值的平方的平均數,而標準差是方差的平方根,更直觀地反映了數據的離散程度。4.1.1方差的計算公式σ其中,σ2是方差,xi是每個數據點,μ是平均數,4.1.2標準差的計算公式σ4.1.3代碼示例假設我們有一組數據,代表某個班級學生的數學考試成績:importnumpyasnp

#數據樣例

scores=np.array([85,90,78,92,88,76,95,89,82,80])

#計算平均數

mean=np.mean(scores)

#計算方差

variance=np.var(scores)

#計算標準差

std_dev=np.std(scores)

print("平均數:",mean)

print("方差:",variance)

print("標準差:",std_dev)4.1.4解釋在這個例子中,我們使用了numpy庫來計算平均數、方差和標準差。numpy.mean()函數計算平均數,numpy.var()計算方差,而numpy.std()計算標準差。這些函數簡化了計算過程,使我們能夠快速得到結果。4.2極差與四分位數極差和四分位數提供了另一種衡量數據離散程度的方法,它們關注數據的范圍和分布的中間部分。4.2.1極差的定義極差是數據集中的最大值與最小值之差,簡單直觀地反映了數據的波動范圍。4.2.2分位數的定義四分位數包括第一四分位數(Q1)、中位數(Q2,即第二四分位數)和第三四分位數(Q3)。它們將數據集分為四等份,Q1是下25%數據的上限,Q2是中50%數據的中點,Q3是上75%數據的下限。4.2.3代碼示例使用上述的數學考試成績數據集:#計算極差

range_scores=np.max(scores)-np.min(scores)

#計算四分位數

q1=np.percentile(scores,25)

q2=np.percentile(scores,50)

q3=np.percentile(scores,75)

print("極差:",range_scores)

print("第一四分位數:",q1)

print("中位數:",q2)

print("第三四分位數:",q3)4.2.4解釋numpy.max()和numpy.min()函數分別計算數據集中的最大值和最小值,從而得到極差。numpy.percentile()函數用于計算四分位數,通過設置百分位數參數(25、50、75)來獲取Q1、Q2和Q3。4.3變異系數變異系數是標準差與平均數的比值,用于比較不同數據集的離散程度,特別是在數據集的平均數相差較大的情況下。4.3.1變異系數的計算公式C其中,σ是標準差,μ是平均數。4.3.2代碼示例繼續(xù)使用數學考試成績數據集:#計算變異系數

cv=std_dev/mean*100

print("變異系數:",cv,"%")4.3.3解釋變異系數的計算直接使用了之前計算的標準差和平均數。通過將標準差除以平均數并乘以100%,我們得到了變異系數,它以百分比形式表示數據的相對離散程度。通過上述的方差、標準差、極差、四分位數和變異系數的計算,我們可以全面地了解數據的離散程度,這對于數據分析和統(tǒng)計推斷至關重要。這些指標不僅提供了數據波動的量化信息,還幫助我們識別數據中的異常值和分布特征,從而做出更準確的決策和預測。5數據分布可視化數據分布可視化是描述性統(tǒng)計分析中的重要環(huán)節(jié),它通過圖形直觀地展示數據的分布特征,幫助我們理解數據的中心趨勢、離散程度、偏斜度和峰度。本教程將詳細介紹三種常用的數據分布可視化方法:直方圖繪制、箱線圖分析和密度圖解釋,并通過具體代碼示例和數據樣例進行講解。5.1直方圖繪制直方圖是一種展示數據分布的圖形,它將數據分為若干區(qū)間,統(tǒng)計每個區(qū)間內的數據頻率,然后用矩形的高度表示該區(qū)間數據的頻率。直方圖可以清晰地展示數據的分布形態(tài),如正態(tài)分布、偏斜分布等。5.1.1示例代碼importnumpyasnp

importmatplotlib.pyplotasplt

#生成隨機數據

data=np.random.randn(1000)

#繪制直方圖

plt.hist(data,bins=20,color='blue',edgecolor='black')

plt.title('直方圖示例')

plt.xlabel('數據值')

plt.ylabel('頻率')

plt.show()5.1.2解釋在上述代碼中,我們首先導入了numpy和matplotlib.pyplot庫。numpy用于生成隨機數據,matplotlib.pyplot用于繪制圖形。我們生成了1000個服從標準正態(tài)分布的隨機數,然后使用plt.hist函數繪制直方圖,其中bins參數指定了直方圖的區(qū)間數量。最后,我們添加了標題、x軸和y軸的標簽,并顯示了圖形。5.2箱線圖分析箱線圖,又稱箱須圖,是一種用于展示一組數據分布情況的統(tǒng)計圖。它通過一組數據的五數概括(最小值、下四分位數、中位數、上四分位數、最大值)來展示數據的分布特征,同時也能直觀地識別出異常值。5.2.1示例代碼importnumpyasnp

importmatplotlib.pyplotasplt

#生成隨機數據

data=np.random.normal(0,1,1000)

#繪制箱線圖

plt.boxplot(data,vert=False)

plt.title('箱線圖示例')

plt.xlabel('數據值')

plt.show()5.2.2解釋在箱線圖示例中,我們同樣使用numpy生成了1000個服從正態(tài)分布的隨機數。然后使用plt.boxplot函數繪制箱線圖,vert=False參數表示箱線圖水平顯示。通過箱線圖,我們可以清晰地看到數據的分布范圍、中位數以及潛在的異常值。5.3密度圖解釋密度圖是一種展示數據分布密度的圖形,它通過平滑處理直方圖,得到數據的密度分布曲線。密度圖可以更精確地展示數據的分布形態(tài),尤其適用于數據量較大或需要展示連續(xù)分布的情況。5.3.1示例代碼importnumpyasnp

importmatplotlib.pyplotasplt

fromscipy.statsimportgaussian_kde

#生成隨機數據

data=np.random.randn(1000)

#計算密度

density=gaussian_kde(data)

xs=np.linspace(-4,4,1000)

density.covariance_factor=lambda:.25

density._compute_covariance()

#繪制密度圖

plt.plot(xs,density(xs))

plt.fill_between(xs,density(xs),alpha=0.5)

plt.title('密度圖示例')

plt.xlabel('數據值')

plt.ylabel('密度')

plt.show()5.3.2解釋在密度圖示例中,我們使用numpy生成了1000個隨機數,然后使用scipy.stats中的gaussian_kde函數計算數據的密度分布。gaussian_kde函數通過高斯核密度估計方法來平滑數據,生成密度曲線。我們還使用了linspace函數生成了用于繪制曲線的x軸數據點。最后,我們使用plt.plot和plt.fill_between函數繪制了密度曲線和填充區(qū)域,以更直觀地展示數據的密度分布。通過以上三種數據分布可視化方法,我們可以從不同角度理解數據的分布特征,為后續(xù)的數據分析和統(tǒng)計建模提供基礎。6描述性統(tǒng)計分析案例6.1案例研究:銷售數據分析6.1.1銷售數據概述銷售數據是企業(yè)運營中至關重要的信息,它不僅反映了產品的市場表現,還能夠揭示消費者行為和市場趨勢。通過描述性統(tǒng)計分析,我們可以對銷售數據進行初步的探索,理解數據的分布、集中趨勢和離散程度,為后續(xù)的深入分析和決策提供基礎。6.1.2數據集介紹假設我們有一個銷售數據集,包含以下字段:-產品ID:產品唯一標識。-銷售日期:銷售發(fā)生的具體日期。-銷售數量:該產品在該日期的銷售數量。-銷售價格:該產品的銷售價格。-地區(qū):銷售發(fā)生的地區(qū)。6.1.3Python代碼示例我們將使用Python的pandas庫來加載和分析數據,matplotlib和seaborn庫來可視化數據。importpandasaspd

importmatplotlib.pyplotasplt

importseabornassns

#加載數據

data=pd.read_csv('sales_data.csv')

#數據預覽

print(data.head())

#描述性統(tǒng)計分析

#計算銷售數量的平均值、中位數、標準差

mean_sales=data['銷售數量'].mean()

median_sales=data['銷售數量'].median()

std_sales=data['銷售數量'].std()

#打印結果

print(f'銷售數量的平均值:{mean_sales}')

print(f'銷售數量的中位數:{median_sales}')

print(f'銷售數量的標準差:{std_sales}')

#銷售數量的分布圖

sns.histplot(data['銷售數量'],kde=True)

plt.title('銷售數量分布')

plt.show()

#銷售價格與銷售數量的關系

sns.scatterplot(data=data,x='銷售價格',y='銷售數量')

plt.title('銷售價格與銷售數量的關系')

plt.show()

#按地區(qū)分組的銷售數量

grouped_data=data.groupby('地區(qū)')['銷售數量'].sum()

print(grouped_data)

#按地區(qū)分組的銷售數量的條形圖

grouped_data.plot(kind='bar')

plt.title('按地區(qū)分組的銷售數量')

plt.show()6.1.4代碼解釋數據加載:使用pandas的read_csv函數從CSV文件中讀取數據。數據預覽:head()函數顯示數據集的前幾行,幫助我們理解數據結構。銷售數量的統(tǒng)計:計算銷售數量的平均值、中位數和標準差,這些是描述性統(tǒng)計分析的基本指標。銷售數量分布圖:使用seaborn的histplot函數繪制銷售數量的直方圖,kde=True表示同時繪制核密度估計曲線。銷售價格與銷售數量的關系:通過散點圖來探索銷售價格與銷售數量之間的關系。按地區(qū)分組的銷售數量:使用groupby函數按地區(qū)對銷售數量進行分組匯總,然后繪制條形圖來比較不同地區(qū)的銷售表現。6.2案例研究:客戶滿意度調查6.2.1客戶滿意度調查背景客戶滿意度是衡量企業(yè)服務質量的重要指標,通過定期的客戶滿意度調查,企

溫馨提示

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

評論

0/150

提交評論