入門級的數據分析及數據清洗過程
來自專欄 猴子聊數據分析
PS:具體的操作代碼已經整理在思維導圖上,在此不再贅述。
在數據分析基本過程這一模塊中,主要有四個重要部分:
一、一維數據&二維數據
二、切片功能(loc和iloc)
三、數據清洗過程
四、數據分析基本過程
第一部分
A. 在numpy中一維和二維數據都是以array展現;pandas中一維是series,二維是dataframe,其中均有索引;
在功能上來看,series和dataframe是array的進階,功能更為強大。
B. numpy一維數組與python列表的區別
1.一維數組提供方便統計計算的功能(mean、std)
2. numpy數組可以進行向量化計算
3. numpy數組中必須是同一數據類型,而列表元素可以是不同數據類型
第二部分
切片功能主要有兩個部分,iloc屬性(根據位置獲取值)和loc屬性(根據索引獲取值);主要有以下幾種情況:
- 鎖定某一具體數值
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進行基礎的數據分析
※通俗易懂-數據分析學生是怎麼玩天天酷跑的