數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析_第1頁
數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析_第2頁
數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析_第3頁
數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析_第4頁
數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)分析:數(shù)據(jù)清洗項目案例分析1數(shù)據(jù)清洗的重要性1.1數(shù)據(jù)質(zhì)量對分析的影響在數(shù)據(jù)分析的領(lǐng)域中,數(shù)據(jù)質(zhì)量是決定分析結(jié)果準(zhǔn)確性和可靠性的重要因素。數(shù)據(jù)清洗,作為數(shù)據(jù)分析流程中的關(guān)鍵步驟,旨在提高數(shù)據(jù)質(zhì)量,確保后續(xù)分析的有效性。數(shù)據(jù)質(zhì)量問題可能包括但不限于:缺失值:數(shù)據(jù)集中某些字段可能沒有記錄,這會影響分析的完整性。異常值:數(shù)據(jù)中可能包含極端值,這些值可能由于測量錯誤或數(shù)據(jù)錄入錯誤而出現(xiàn),影響分析的準(zhǔn)確性。重復(fù)數(shù)據(jù):數(shù)據(jù)集中可能有完全相同的記錄,這會導(dǎo)致統(tǒng)計結(jié)果的偏差。不一致的數(shù)據(jù)格式:如日期格式、貨幣單位等不統(tǒng)一,影響數(shù)據(jù)處理的效率。錯誤的數(shù)據(jù)類型:例如,數(shù)值字段被錯誤地記錄為文本,這會阻礙數(shù)據(jù)分析的進行。1.1.1示例:處理缺失值假設(shè)我們有一個銷售數(shù)據(jù)集,其中包含產(chǎn)品ID、銷售日期、銷售數(shù)量和銷售價格。數(shù)據(jù)集中存在一些缺失的銷售價格。importpandasaspd

#創(chuàng)建示例數(shù)據(jù)集

data={

'ProductID':['A','B','C','D','E'],

'SaleDate':['2023-01-01','2023-01-02','2023-01-03','2023-01-04','2023-01-05'],

'Quantity':[10,20,30,40,50],

'Price':[100,200,None,400,500]

}

df=pd.DataFrame(data)

#檢查缺失值

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

#使用平均價格填充缺失值

mean_price=df['Price'].mean()

df['Price'].fillna(mean_price,inplace=True)

#再次檢查缺失值

print(df.isnull().sum())在這個例子中,我們首先創(chuàng)建了一個包含缺失值的DataFrame。然后,我們使用isnull().sum()來檢查數(shù)據(jù)集中每個字段的缺失值數(shù)量。接下來,我們計算了銷售價格的平均值,并使用fillna()函數(shù)將缺失的銷售價格替換為平均值,從而處理了缺失值問題。1.2數(shù)據(jù)清洗的基本步驟數(shù)據(jù)清洗是一個系統(tǒng)性的過程,通常包括以下基本步驟:數(shù)據(jù)審查:檢查數(shù)據(jù)集,識別數(shù)據(jù)質(zhì)量問題。處理缺失值:根據(jù)數(shù)據(jù)的特性和分析需求,選擇合適的方法填充或刪除缺失值。處理異常值:識別并處理數(shù)據(jù)中的異常值,可能通過刪除、修正或使用統(tǒng)計方法來處理。數(shù)據(jù)格式標(biāo)準(zhǔn)化:確保數(shù)據(jù)字段的格式一致,如統(tǒng)一日期格式、貨幣單位等。數(shù)據(jù)類型轉(zhuǎn)換:將數(shù)據(jù)字段轉(zhuǎn)換為正確的數(shù)據(jù)類型,以支持后續(xù)的數(shù)據(jù)處理和分析。重復(fù)數(shù)據(jù)處理:識別并刪除重復(fù)的記錄,以避免分析結(jié)果的偏差。數(shù)據(jù)驗證:確保數(shù)據(jù)清洗后的數(shù)據(jù)集符合預(yù)期的質(zhì)量標(biāo)準(zhǔn)。1.2.1示例:處理重復(fù)數(shù)據(jù)假設(shè)我們有一個客戶數(shù)據(jù)集,其中包含客戶ID、姓名、年齡和電子郵件。數(shù)據(jù)集中存在重復(fù)的客戶記錄。#創(chuàng)建示例數(shù)據(jù)集

data={

'CustomerID':[1,2,3,4,5,1],

'Name':['Alice','Bob','Charlie','David','Eve','Alice'],

'Age':[25,30,35,40,45,25],

'Email':['alice@','bob@','charlie@','david@','eve@','alice@']

}

df=pd.DataFrame(data)

#檢查重復(fù)數(shù)據(jù)

print(df.duplicated().sum())

#刪除重復(fù)數(shù)據(jù)

df.drop_duplicates(inplace=True)

#再次檢查重復(fù)數(shù)據(jù)

print(df.duplicated().sum())在這個例子中,我們首先創(chuàng)建了一個包含重復(fù)記錄的DataFrame。然后,我們使用duplicated().sum()來檢查數(shù)據(jù)集中重復(fù)記錄的數(shù)量。接下來,我們使用drop_duplicates()函數(shù)刪除了重復(fù)的記錄,從而處理了重復(fù)數(shù)據(jù)問題。通過這些步驟,我們可以確保數(shù)據(jù)集的質(zhì)量,為后續(xù)的數(shù)據(jù)分析和建模提供可靠的基礎(chǔ)。數(shù)據(jù)清洗是一個持續(xù)的過程,需要根據(jù)數(shù)據(jù)的特性和分析需求進行調(diào)整和優(yōu)化。2數(shù)據(jù)清洗項目準(zhǔn)備2.1定義項目目標(biāo)在開始任何數(shù)據(jù)清洗項目之前,定義項目目標(biāo)是至關(guān)重要的第一步。這一步驟確保了后續(xù)的數(shù)據(jù)處理工作有明確的方向和標(biāo)準(zhǔn)。項目目標(biāo)應(yīng)該具體、可衡量,并與業(yè)務(wù)需求緊密相關(guān)。例如,如果項目是關(guān)于提高銷售預(yù)測的準(zhǔn)確性,那么數(shù)據(jù)清洗的目標(biāo)可能包括:去除重復(fù)記錄:確保每個銷售記錄都是唯一的,避免預(yù)測模型中的偏差。處理缺失值:填充或刪除缺失的銷售數(shù)據(jù),以減少預(yù)測誤差。糾正錯誤數(shù)據(jù):修正輸入錯誤或異常值,如將負(fù)數(shù)的銷售額調(diào)整為零或刪除。2.1.1示例:定義銷售預(yù)測數(shù)據(jù)清洗項目目標(biāo)假設(shè)我們正在處理一個銷售數(shù)據(jù)集,目標(biāo)是提高季度銷售預(yù)測的準(zhǔn)確性。以下是項目目標(biāo)的定義:去除重復(fù)銷售記錄:檢查并刪除數(shù)據(jù)集中重復(fù)的銷售記錄,確保每個記錄的唯一性。處理缺失的銷售數(shù)據(jù):對于缺失的銷售金額,使用前一個季度的平均銷售金額進行填充。修正異常銷售數(shù)據(jù):將任何負(fù)數(shù)的銷售額調(diào)整為零,因為銷售額不能為負(fù)。2.2數(shù)據(jù)收集與初步檢查數(shù)據(jù)收集是獲取數(shù)據(jù)的過程,這些數(shù)據(jù)將用于后續(xù)的分析和清洗。數(shù)據(jù)可能來自多個來源,包括數(shù)據(jù)庫、CSV文件、API接口等。初步檢查則是對收集到的數(shù)據(jù)進行初步的質(zhì)量評估,識別數(shù)據(jù)中的問題,如缺失值、異常值、數(shù)據(jù)類型不一致等。2.2.1示例:收集銷售數(shù)據(jù)并進行初步檢查數(shù)據(jù)收集假設(shè)我們從公司的數(shù)據(jù)庫中收集了銷售數(shù)據(jù),數(shù)據(jù)以CSV格式存儲。我們將使用Python的pandas庫來讀取數(shù)據(jù)。importpandasaspd

#讀取CSV文件

sales_data=pd.read_csv('sales_data.csv')初步檢查接下來,我們對數(shù)據(jù)進行初步檢查,以識別任何潛在的問題。#顯示數(shù)據(jù)的前幾行

print(sales_data.head())

#檢查數(shù)據(jù)類型

print(sales_data.dtypes)

#檢查缺失值

print(sales_data.isnull().sum())

#檢查重復(fù)值

print(sales_data.duplicated().sum())2.2.2解釋讀取數(shù)據(jù):使用pandas的read_csv函數(shù)讀取CSV文件,將數(shù)據(jù)加載到DataFrame中。顯示數(shù)據(jù):head()函數(shù)顯示數(shù)據(jù)集的前幾行,幫助我們快速了解數(shù)據(jù)的結(jié)構(gòu)。檢查數(shù)據(jù)類型:dtypes屬性顯示每個列的數(shù)據(jù)類型,確保數(shù)值列是正確的類型。檢查缺失值:isnull().sum()函數(shù)計算每個列中缺失值的數(shù)量,幫助我們識別需要處理的列。檢查重復(fù)值:duplicated().sum()函數(shù)計算重復(fù)行的數(shù)量,這是數(shù)據(jù)清洗中需要處理的另一個常見問題。通過這些步驟,我們?yōu)閿?shù)據(jù)清洗項目奠定了堅實的基礎(chǔ),確保了后續(xù)處理的效率和準(zhǔn)確性。接下來,我們可以根據(jù)定義的項目目標(biāo),開始具體的數(shù)據(jù)清洗工作。3數(shù)據(jù)預(yù)處理技術(shù)數(shù)據(jù)預(yù)處理是數(shù)據(jù)分析流程中的關(guān)鍵步驟,它確保數(shù)據(jù)的質(zhì)量和準(zhǔn)確性,從而提高后續(xù)分析的效率和結(jié)果的可靠性。本教程將深入探討數(shù)據(jù)預(yù)處理中的兩個核心方面:缺失值處理和異常值檢測與處理。3.1缺失值處理3.1.1原理缺失值是指數(shù)據(jù)集中某些觀測值或特征值未被記錄或收集的情況。處理缺失值的方法包括刪除、填充和預(yù)測。刪除列表刪除:刪除含有缺失值的整個行或列。成對刪除:在計算統(tǒng)計量時,僅使用沒有缺失值的觀測值。填充常數(shù)填充:用固定值(如0或平均值)填充缺失值。插值:基于數(shù)據(jù)的分布或趨勢,用預(yù)測值填充缺失值。預(yù)測回歸預(yù)測:使用回歸模型預(yù)測缺失值。KNN預(yù)測:基于最近鄰的觀測值預(yù)測缺失值。3.1.2內(nèi)容與代碼示例假設(shè)我們有一個包含年齡、收入和教育水平的數(shù)據(jù)集,其中年齡和收入有缺失值。importpandasaspd

importnumpyasnp

fromsklearn.imputeimportSimpleImputer

#創(chuàng)建示例數(shù)據(jù)集

data={

'年齡':[25,np.nan,30,35,np.nan],

'收入':[50000,60000,np.nan,55000,65000],

'教育水平':['本科','碩士','博士','本科','碩士']

}

df=pd.DataFrame(data)

#使用平均值填充年齡的缺失值

imputer=SimpleImputer(strategy='mean')

df['年齡']=imputer.fit_transform(df[['年齡']])

#使用中位數(shù)填充收入的缺失值

imputer=SimpleImputer(strategy='median')

df['收入']=imputer.fit_transform(df[['收入']])

print(df)3.1.3解釋在上述代碼中,我們首先導(dǎo)入了pandas和numpy庫,以及SimpleImputer類,用于處理缺失值。我們創(chuàng)建了一個包含年齡、收入和教育水平的數(shù)據(jù)集,其中年齡和收入有缺失值。然后,我們使用平均值填充年齡的缺失值,使用中位數(shù)填充收入的缺失值。最后,我們打印處理后的數(shù)據(jù)集。3.2異常值檢測與處理3.2.1原理異常值是指數(shù)據(jù)集中顯著偏離其他觀測值的值,可能由測量錯誤、數(shù)據(jù)錄入錯誤或真實異常引起。處理異常值的方法包括刪除、修正和保留。刪除基于閾值刪除:設(shè)定閾值,刪除超出該閾值的觀測值?;诮y(tǒng)計方法刪除:如使用標(biāo)準(zhǔn)差或四分位數(shù)范圍(IQR)來識別并刪除異常值。修正替換:用中位數(shù)、平均值或最近鄰值替換異常值。截斷:將異常值限制在一定范圍內(nèi)。保留分析原因:調(diào)查異常值的來源,決定是否保留。3.2.2內(nèi)容與代碼示例假設(shè)我們有一個包含銷售數(shù)據(jù)的數(shù)據(jù)集,其中包含一些異常的銷售記錄。importpandasaspd

importnumpyasnp

fromscipyimportstats

#創(chuàng)建示例數(shù)據(jù)集

data={

'銷售額':[1000,1200,1500,1800,2000,2200,2500,2800,3000,10000]

}

df=pd.DataFrame(data)

#使用Z-score檢測異常值

z_scores=stats.zscore(df['銷售額'])

abs_z_scores=np.abs(z_scores)

filtered_entries=(abs_z_scores<3)

#刪除異常值

df=df[filtered_entries]

print(df)3.2.3解釋在本例中,我們使用pandas和scipy庫來檢測和處理異常值。我們創(chuàng)建了一個包含銷售額的數(shù)據(jù)集,其中包含一個異常值(10000)。我們使用Z-score方法來檢測異常值,Z-score是觀測值與平均值的差除以標(biāo)準(zhǔn)差。通常,如果Z-score的絕對值大于3,則認(rèn)為該觀測值是異常值。我們計算了銷售額的Z-scores,然后使用布爾過濾器filtered_entries來刪除異常值。最后,我們打印處理后的數(shù)據(jù)集,其中異常值已被刪除。通過這些示例,我們可以看到數(shù)據(jù)預(yù)處理技術(shù)在確保數(shù)據(jù)質(zhì)量方面的重要性。正確處理缺失值和異常值可以顯著提高數(shù)據(jù)分析的準(zhǔn)確性和可靠性。4數(shù)據(jù)一致性檢查數(shù)據(jù)一致性檢查是數(shù)據(jù)清洗過程中的關(guān)鍵步驟,旨在確保數(shù)據(jù)集中的所有數(shù)據(jù)遵循相同的格式和編碼規(guī)則,從而提高數(shù)據(jù)質(zhì)量,為后續(xù)的數(shù)據(jù)分析奠定堅實的基礎(chǔ)。本章節(jié)將深入探討數(shù)據(jù)格式標(biāo)準(zhǔn)化和數(shù)據(jù)編碼統(tǒng)一的原理與實踐,通過具體案例和代碼示例,展示如何在Python中實現(xiàn)這些數(shù)據(jù)清洗任務(wù)。4.1數(shù)據(jù)格式標(biāo)準(zhǔn)化數(shù)據(jù)格式標(biāo)準(zhǔn)化涉及將數(shù)據(jù)集中的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的格式,以消除因格式不一致導(dǎo)致的分析誤差。常見的數(shù)據(jù)格式標(biāo)準(zhǔn)化任務(wù)包括日期格式統(tǒng)一、數(shù)值格式標(biāo)準(zhǔn)化、文本格式規(guī)范化等。4.1.1日期格式統(tǒng)一原理日期數(shù)據(jù)在不同的數(shù)據(jù)源中可能采用多種格式,如YYYY-MM-DD、MM/DD/YYYY、DD/MM/YYYY等。在數(shù)據(jù)分析中,統(tǒng)一日期格式可以避免解析錯誤,確保時間序列分析的準(zhǔn)確性。實例代碼假設(shè)我們有一個包含日期數(shù)據(jù)的CSV文件,其中日期格式不一,我們需要將其統(tǒng)一為YYYY-MM-DD格式。importpandasaspd

#讀取數(shù)據(jù)

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

#顯示原始數(shù)據(jù)

print("原始數(shù)據(jù):")

print(data['date'].head())

#將日期列轉(zhuǎn)換為datetime對象,自動處理多種格式

data['date']=pd.to_datetime(data['date'],infer_datetime_format=True)

#將日期格式統(tǒng)一為'YYYY-MM-DD'

data['date']=data['date'].dt.strftime('%Y-%m-%d')

#顯示處理后的數(shù)據(jù)

print("處理后的數(shù)據(jù):")

print(data['date'].head())4.1.2數(shù)值格式標(biāo)準(zhǔn)化原理數(shù)值數(shù)據(jù)可能包含不同的小數(shù)點分隔符、千位分隔符,或者存在缺失值表示方式的差異。標(biāo)準(zhǔn)化數(shù)值格式可以確保數(shù)值的正確解析和比較。實例代碼假設(shè)我們有一個包含數(shù)值數(shù)據(jù)的CSV文件,其中數(shù)值格式不一,包括使用逗號作為小數(shù)點分隔符的情況。importpandasaspd

#讀取數(shù)據(jù)

data=pd.read_csv('data.csv',decimal=',')

#顯示原始數(shù)據(jù)

print("原始數(shù)據(jù):")

print(data['value'].head())

#將數(shù)值列轉(zhuǎn)換為float類型

data['value']=data['value'].str.replace(',','.').astype(float)

#顯示處理后的數(shù)據(jù)

print("處理后的數(shù)據(jù):")

print(data['value'].head())4.2數(shù)據(jù)編碼統(tǒng)一數(shù)據(jù)編碼統(tǒng)一是指將數(shù)據(jù)集中的文本數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的字符編碼,通常為UTF-8,以避免因編碼不一致導(dǎo)致的亂碼問題。4.2.1實例代碼假設(shè)我們有一個包含中文文本的CSV文件,其中文本數(shù)據(jù)的編碼為GBK,我們需要將其轉(zhuǎn)換為UTF-8編碼。importpandasaspd

#讀取數(shù)據(jù),指定編碼為GBK

data=pd.read_csv('data.csv',encoding='gbk')

#顯示原始數(shù)據(jù)

print("原始數(shù)據(jù):")

print(data['text'].head())

#將文本列轉(zhuǎn)換為UTF-8編碼

data['text']=data['text'].str.encode('utf-8').str.decode('utf-8')

#顯示處理后的數(shù)據(jù)

print("處理后的數(shù)據(jù):")

print(data['text'].head())

#保存數(shù)據(jù)為UTF-8編碼的CSV文件

data.to_csv('data_utf8.csv',encoding='utf-8',index=False)通過上述實例,我們可以看到數(shù)據(jù)格式標(biāo)準(zhǔn)化和數(shù)據(jù)編碼統(tǒng)一在數(shù)據(jù)清洗過程中的重要性。這些步驟不僅提高了數(shù)據(jù)的可讀性和可處理性,還為后續(xù)的數(shù)據(jù)分析和挖掘提供了準(zhǔn)確無誤的數(shù)據(jù)基礎(chǔ)。在實際項目中,根據(jù)數(shù)據(jù)的具體情況,可能需要調(diào)整代碼中的參數(shù)和方法,以達到最佳的數(shù)據(jù)清洗效果。5數(shù)據(jù)清洗實戰(zhàn)案例5.1案例一:電子商務(wù)數(shù)據(jù)清洗在電子商務(wù)領(lǐng)域,數(shù)據(jù)清洗是確保數(shù)據(jù)分析準(zhǔn)確性和有效性的重要步驟。本案例將通過清洗一個電子商務(wù)數(shù)據(jù)集,展示如何處理缺失值、異常值、重復(fù)數(shù)據(jù)以及如何進行數(shù)據(jù)類型轉(zhuǎn)換和格式標(biāo)準(zhǔn)化。5.1.1數(shù)據(jù)集描述假設(shè)我們有一個包含產(chǎn)品銷售記錄的數(shù)據(jù)集,字段包括:產(chǎn)品ID、產(chǎn)品名稱、銷售日期、銷售數(shù)量、銷售價格、客戶ID和客戶名稱。5.1.2缺失值處理數(shù)據(jù)集中可能存在某些記錄的字段為空,這需要我們進行處理。常見的策略包括刪除、填充平均值、中位數(shù)或眾數(shù),或者使用預(yù)測模型填充缺失值。示例代碼importpandasaspd

#讀取數(shù)據(jù)

df=pd.read_csv('ecommerce_sales.csv')

#檢查缺失值

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

#刪除含有缺失值的行

df=df.dropna()

#或者填充缺失值,例如使用銷售數(shù)量的平均值填充

df['銷售數(shù)量']=df['銷售數(shù)量'].fillna(df['銷售數(shù)量'].mean())

#顯示處理后的數(shù)據(jù)

print(df.head())5.1.3異常值檢測異常值可能由于數(shù)據(jù)錄入錯誤或測量錯誤產(chǎn)生,需要通過統(tǒng)計方法或機器學(xué)習(xí)模型進行檢測和處理。示例代碼#檢測銷售價格的異常值,使用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

#過濾異常值

df=df[(df['銷售價格']>lower_bound)&(df['銷售價格']<upper_bound)]5.1.4重復(fù)數(shù)據(jù)處理重復(fù)記錄可能導(dǎo)致分析結(jié)果的偏差,需要通過檢查和刪除重復(fù)行來處理。示例代碼#檢查并刪除重復(fù)行

df=df.drop_duplicates()5.1.5數(shù)據(jù)類型轉(zhuǎn)換與格式標(biāo)準(zhǔn)化確保數(shù)據(jù)字段的類型正確,例如日期字段應(yīng)為日期類型,數(shù)值字段應(yīng)為數(shù)值類型。同時,標(biāo)準(zhǔn)化數(shù)據(jù)格式,如統(tǒng)一日期格式。示例代碼#將銷售日期字段轉(zhuǎn)換為日期類型

df['銷售日期']=pd.to_datetime(df['銷售日期'],format='%Y-%m-%d')

#顯示數(shù)據(jù)類型

print(df.dtypes)5.2案例二:醫(yī)療數(shù)據(jù)清洗醫(yī)療數(shù)據(jù)的清洗更為復(fù)雜,因為它涉及到保護患者隱私、處理不一致的醫(yī)療術(shù)語以及確保數(shù)據(jù)的準(zhǔn)確性。5.2.1數(shù)據(jù)集描述假設(shè)我們有一個醫(yī)療數(shù)據(jù)集,包含患者ID、就診日期、診斷結(jié)果、藥物名稱、藥物劑量和費用。5.2.2缺失值處理醫(yī)療數(shù)據(jù)中缺失值的處理需要更加謹(jǐn)慎,因為某些字段的缺失可能意味著數(shù)據(jù)收集過程中的問題。示例代碼#讀取醫(yī)療數(shù)據(jù)

df_medical=pd.read_csv('medical_records.csv')

#檢查缺失值

print(df_medical.isnull().sum())

#使用前向填充或后向填充處理缺失的診斷結(jié)果

df_medical['診斷結(jié)果']=df_medical['診斷結(jié)果'].fillna(method='ffill')

#或者使用預(yù)測模型填充缺失的藥物劑量

#這里使用線性回歸模型作為示例

fromsklearn.linear_modelimportLinearRegression

#假設(shè)我們有其他相關(guān)數(shù)據(jù)可以用來預(yù)測藥物劑量

X=df_medical[['費用','患者年齡']]

y=df_medical['藥物劑量']

#訓(xùn)練模型

model=LinearRegression()

model.fit(X,y)

#使用模型預(yù)測缺失的藥物劑量

df_medical['藥物劑量']=df_medical['藥物劑量'].fillna(model.predict(X))5.2.3異常值檢測醫(yī)療數(shù)據(jù)中的異常值可能影響診斷和治療決策,需要通過領(lǐng)域知識和統(tǒng)計方法進行檢測。示例代碼#檢測費用的異常值

Q1=df_medical['費用'].quantile(0.25)

Q3=df_medical['費用'].quantile(0.75)

IQR=Q3-Q1

#定義異常值的范圍

lower_bound=Q1-1.5*IQR

upper_bound=Q3+1.5*IQR

#過濾異常值

df_medical=df_medical[(df_medical['費用']>lower_bound)&(df_medical['費用']<upper_bound)]5.2.4重復(fù)數(shù)據(jù)處理醫(yī)療數(shù)據(jù)中重復(fù)記錄可能由于多次錄入或系統(tǒng)錯誤,需要通過檢查和刪除重復(fù)行來處理。示例代碼#檢查并刪除重復(fù)行

df_medical=df_medical.drop_duplicates()5.2.5數(shù)據(jù)類型轉(zhuǎn)換與格式標(biāo)準(zhǔn)化確保醫(yī)療數(shù)據(jù)字段的類型正確,如日期、費用應(yīng)為數(shù)值類型,同時標(biāo)準(zhǔn)化數(shù)據(jù)格式,如統(tǒng)一藥物名稱的拼寫。示例代碼#將就診日期字段轉(zhuǎn)換為日期類型

df_medical['就診日期']=pd.to_datetime(df_medical['就診日期'],format='%Y-%m-%d')

#標(biāo)準(zhǔn)化藥物名稱,假設(shè)我們有一個藥物名稱的映射表

drug_mapping={'Aspirin':'阿司匹林','Ibuprofen':'布洛芬','Paracetamol':'對乙酰氨基酚'}

#應(yīng)用映射表

df_medical['藥物名稱']=df_medical['藥物名稱'].map(drug_mapping)

#顯示數(shù)據(jù)類型

print(df_medical.dtypes)通過以上步驟,我們可以有效地清洗電子商務(wù)和醫(yī)療數(shù)據(jù),為后續(xù)的數(shù)據(jù)分析和建模提供更準(zhǔn)確、更可靠的數(shù)據(jù)基礎(chǔ)。6數(shù)據(jù)清洗后的驗證與評估6.1數(shù)據(jù)清洗效果驗證數(shù)據(jù)清洗是數(shù)據(jù)分析流程中的關(guān)鍵步驟,旨在提高數(shù)據(jù)質(zhì)量,確保后續(xù)分析的準(zhǔn)確性和可靠性。清洗后的數(shù)據(jù)驗證是檢查清洗過程是否有效,數(shù)據(jù)是否達到預(yù)期質(zhì)量標(biāo)準(zhǔn)的重要環(huán)節(jié)。以下是一些驗證數(shù)據(jù)清洗效果的方法:6.1.1數(shù)據(jù)完整性檢查確保數(shù)據(jù)清洗過程中沒有丟失重要信息??梢酝ㄟ^比較清洗前后的數(shù)據(jù)行數(shù)和列數(shù)來完成。示例代碼#導(dǎo)入pandas庫

importpandasaspd

#讀取原始數(shù)據(jù)和清洗后的數(shù)據(jù)

df_original=pd.read_csv('data_original.csv')

df_cleaned=pd.read_csv('data_cleaned.csv')

#檢查行數(shù)和列數(shù)

print("原始數(shù)據(jù)行數(shù)和列數(shù):",df_original.shape)

print("清洗后數(shù)據(jù)行數(shù)和列數(shù):",df_cleaned.shape)6.1.2數(shù)據(jù)一致性檢查驗證數(shù)據(jù)清洗后,數(shù)據(jù)的一致性是否得到改善,例如,檢查日期格式是否統(tǒng)一。示例代碼#檢查日期列的格式一致性

print(df_cleaned['date'].apply(lambdax:x.strftime('%Y-%m-%d')).unique())6.1.3數(shù)據(jù)質(zhì)量指標(biāo)計算數(shù)據(jù)清洗前后的質(zhì)量指標(biāo),如缺失值比例、異常值比例等。示例代碼#計算缺失值比例

missing_ratio_original=df_original.isnull().sum()/len(df_original)

missing_ratio_cleaned=df_cleaned.isnull().sum()/len(df_cleaned)

#輸出缺失值比例

print("原始數(shù)據(jù)缺失值比例:\n",missing_ratio_original)

print("清洗后數(shù)據(jù)缺失值比例:\n",missing_ratio_cleane

溫馨提示

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

最新文檔

評論

0/150

提交評論