數據探索
1.數據質量分析
在做數據分析和挖掘時,在獲取數據後,一般第一步就是對數據進行探索性的分析,通過計算一些統計量或者繪製圖表等方法來看數據特徵。數據探索有利於後期的數據建模,本文從數據質量和數據特徵兩部分介紹數據探索的過程。碼字不易,喜歡請點贊!!!
1.1缺失值分析
缺失值主要包括記錄缺失和屬性值缺失,產生原因可能是:
- 信息無法獲取,或獲取成本太高
- 信息遺漏
- 屬性值不存在
缺失值影響主要有:
- 數據建模丟失大量有用信息
- 數據建模不確定性增加,模型中規律更難把握
- 包含空值的數據導致建模過程混亂,輸出的可靠性降低
缺失值處理主要包括刪除缺失值存在的記錄和缺失值插補以及不處理三種方法。缺失值處理的具體過程後面介紹數據預處理的時候再介紹。
1.2異常值分析
異常值也成爲離羣點,異常值對數據建模的影響非常大,因此需要先進行處理,一般會找到異常值後修正,無法修正的就剔除。異常值檢驗的三個方法:
- 簡單統計量分析:通過對變量進行描述性統計,看看哪些數據不合理,比如年齡199歲這樣的不合理數據。
- 3原則:如果數據服從正態分佈,則根據統計學知識可以知道,數據落在3區間之內的概率爲99.73%,如果數據在此之外,則是極小概率事件。若不服從正態分佈,可以用遠離平均值多少倍的標準差來描述。
- 箱型圖分析:落在箱型圖之外的數據稱爲離羣點。箱型圖分析具有更好的魯棒性,因爲多達25%的數據變異不會很大的擾動四分位數。下面代碼展示了某餐飲銷售數據(數據包括日期、銷售額兩列)繪製箱型圖的一個過程:
import pandas as pd
import matplotlib.pyplot as plt
catering_sale = r"...\demo\data\catering_sale.xls"
data = pd.read_excel(catering_sale,index_col='日期')
plt.rcParams['font.sans-serif'] = ['SimHei']#用於正常顯示中文,感覺沒有也行
plt.rcParams['axes.unicode_minus'] = False#用於正常顯示負號,感覺沒有也行
plt.figure(figsize=(8,6))
p = data.boxplot(return_type='dict')
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
y.sort()
#使用annotate函數添加註釋,其中xy爲值的橫縱座標,xytext爲顯示文字的橫縱座標
for i in range(len(x)):
if(i > 0):
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))
畫出來的結果,如下圖:
根據顯示業務,可以將865、4060.3、4065.2定爲正常值,其餘爲異常值,因此後面進行異常值剔除時,可以設置銷售額大於500,小於5000的區間。
1.3一致性分析
有時候同一個數據,在不同的數據源出現不一致的情況,需要注意。
2.數據特徵分析
再數據質量分析之後,可以通過繪製圖表,計算特徵量的方法來進行特徵分析。
2.1分佈分析
- 定量數據分佈:繪製直方圖
- 定性數據分佈:繪製餅圖、條形圖來看各個分類的佔比
2.2對比分析
可以使用折線圖,來從不同維度上進行對比分析,比如比較A、B、C三個部門最近一年銷售額的趨勢;或者比較A部門最近三年各個月分銷售額的變化趨勢。
2.3統計量分析
統計量分析包括集中趨勢和離中趨勢分析。
- 集中趨勢:均值、中位數、衆數等指標
- 離中趨勢:極差、標準差、變異係數(CV = 標準差/均值)、四分位距等指標
2.4週期性分析
通過數據的時序圖,看看是否存在週期性變化,下圖爲某公司用電的時序圖,可以看出存在週期性變化,其中週末休息時,用電量較小。
2.5貢獻度分析
貢獻度分析又稱爲帕累託分析,帕累托法則即28準則,百分之二十的部分產品產生百分之八十的收入。下面代碼展示了某餐飲銷售的帕累託分佈:
import pandas as pd
import matplotlib.pyplot as plt
dish_profit = r"...\data\catering_dish_profit.xls"
data = pd.read_excel(dish_profit,index_col='菜品名')
data = data['盈利']
data = data.sort_values(ascending=False)
plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data.plot(kind='bar')
p = data.cumsum()/data.sum()
#secondary_y 參數設置第二座標軸
p.plot(secondary_y = True,color='r',style='-o')
plt.show()
2.6相關性分析
通過相關性分析,來看變量之間的相關程度。
- 繪製散點圖
- 繪製散點圖矩陣:同時考量多個變量之間的相關性
- 計算相關係數:Pearson相關係數(變量服從正態分佈)、Spearman秩相關係數(變量不服從正態分佈時使用)
3.數據探索主要工具
目前主流的數據分析與挖掘的工具是Python和R,並且Python占主導地位,Python中數據探索基本上使用pandas和matplotlib兩個庫就可以了,其中pandas可以查看統計特徵,而matplotlib通過繪圖展示數據情況。
碼字不易,喜歡請點贊!!!
【參考文獻】
《Python數據分析與挖掘實戰》