入門級的數據分析及數據清洗過程

入門級的數據分析及數據清洗過程

來自專欄 猴子聊數據分析

PS:具體的操作代碼已經整理在思維導圖上,在此不再贅述。

在數據分析基本過程這一模塊中,主要有四個重要部分:

一、一維數據&二維數據

二、切片功能(loc和iloc)

三、數據清洗過程

四、數據分析基本過程

第一部分

A. 在numpy中一維和二維數據都是以array展現;pandas中一維是series,二維是dataframe,其中均有索引;

在功能上來看,series和dataframe是array的進階,功能更為強大。

B. numpy一維數組與python列表的區別

1.一維數組提供方便統計計算的功能(mean、std)

2. numpy數組可以進行向量化計算

3. numpy數組中必須是同一數據類型,而列表元素可以是不同數據類型

第二部分

切片功能主要有兩個部分,iloc屬性(根據位置獲取值)和loc屬性(根據索引獲取值);主要有以下幾種情況:

  1. 鎖定某一具體數值

a.iloc[位數]a.loc[騰訊]#二維:a.iloc[行號,列號]

2. 查找某行or列

#某行:a.iloc[行號,:]salesDf.loc[:,銷售時間]salsDf[銷售時間]某幾列or行#不連續列:a.iloc[:,[2,4]] (行類似)salesDf.loc[:,銷售時間,藥品名稱]#連續列:a.iloc[:,1:4] (行類似)salesDf.loc[:,銷售時間:藥品名稱]

3. 查詢一定條件的數據

querrySer=salesDf.loc[:,銷售數量]>3 #找到的是行名稱b=salesDf.loc[querrySer,:]print(b)type(querrySer) #返回結果是pandas的Series的數據

第三部分

數據清洗個人認為是這一模塊中最為複雜和重要的一部分,總體分為6個步驟:

1.選擇子集:有許多列,只有幾列是所需要的

subSalesDf=salesDf.loc[0:4,購葯時間:銷售數量]subSalesDf

2.列名重命名:自己不習慣的名稱更改

colNamesDict={購葯時間:銷售時間}salesDf.rename(columns=colNameDict,inplace=True)

3.缺失數據處理

print(刪除缺失值前大小:,salesDf.shape)salesDf=salesDf.dropna(subset=[銷售時間,社保卡號],how=any)print(刪除缺失值後大小:,salesDf.shape[0])

4.數據類型轉換:文本型改為數值型,方便計算等

salesDf[銷售數量]=salesDf[銷售數量].astype(float)salesDf[應收金額]=salesDf[應收金額].astype(float)salesDf[實收金額]=salesDf[實收金額].astype(float)print(轉換後的數據類型:
,salesDf.dtypes) #字元竄轉換為數值

5.數據排序:發現更多數據的價值

#排序:此處按銷售時間(降序!!Fales為升序)排序salesDf=salesDf.sort_values(by=銷售時間,ascending=True)

6.異常值處理

#刪除異常值querySer=salesDf.loc[:,銷售數量]>0print(刪除異常值前:,salesDf.shape)salesDf=salesDf.loc[querySer,:]print(刪除異常值後:,salesDf.shape)

第四部分

數據分析有以下幾個基礎步驟:

1.提出問題(針對某一個問題,提煉出某幾個指標)

2.理解數據(採集數據、導入數據、查看數據信息)

3.數據清洗(第三部分)

4.構建模型

5.數據可視化

第五部分

額外補充:

1.類似excel分列功能

testList=2018-08-09 星期五.split( )testListtestList[0]

2.對一列數據進行分列

要對數據框中[銷售日期]一列來切割,獲取日期,所以要定義切割函數def splitSaletime(timeColSer): timeList=[] for value in timeColSer: dateStr=value.split()[0] timeList.append(dateStr) timeSer=pd.Series(timeList) return timeSertimeSer=salesDdf.loc[:,銷售時間]dateSer=splitSaletime(timeSer)dateSer[0:3] #檢查salesDf.loc[:,銷售時間]=dateSer

3.字元竄轉換為日期

salesDf.loc[:,銷售時間]=pd.to_datetime(salesDf.loc[:,銷售時間],format=%Y-%m-%d,errors=coerce) errors=coerce:轉換中,不符日期格式,即轉為空值salesDf=salesDf.dropna(subset=[銷售時間,社保卡號],how=any)

4.行重命名

重命名行名salesDf=salesDf.reset_index(drop=True)每一列描述統計信息,了解整體數據集信息,可發現異常值salesDf.describe()

5.excel數據導入

讀取excel數據fileNameStr=./照樣醫院2018年銷售數據.xlsx #excel文件是以數字開頭,前加//xls=pd.ExcelFile(fileNameStr)salesDf=xls.parse(Sheet1)

推薦閱讀:

【實戰應用】從銀行分級授信體系看用戶分級分析方法
Quick BI----讓每個人都是數據分析師
用Python進行基礎的數據分析
通俗易懂-數據分析學生是怎麼玩天天酷跑的

TAG:數據分析 | 數據清洗 |