分析資料, 缺失值處理 ,去重處理, 噪音處理
看了charlotte的部落格分析資料, 缺失值處理 學習總結,很受用,如是將她的畫圖的部分**新增完整,可以執行,這樣學起來更直觀.
1.分析資料
在實際專案中,當我們確定需求後就會去找相應的資料,拿到資料後,首先要對資料進行描述性統計分析,檢視哪些資料是不合理的,也可以知道資料的基本情況,可以通過作圖的方式了解資料的質量,有無異常點,有無噪音等,常見的作圖方法有:
#繪製直方圖
通過作圖的方式了解資料的質量,有無異常點,有無噪音等
import matplotlib.pyplot as plt
#fig=plt.figure(4)
pay =(11,19,14,22,14,28,13,81,12,43,11,16,31,16,23.42,22,26,17,22,13,27,180,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25,26,16,12,54,40,18,27,16,14,33,29,77,50,19,34)
print(pay)
rects = plt.bar(left = pay,height = pay,width = 1,align="center",yerr=2)
#plt.title('pe')
plt.show()
#繪製箱型圖
import matplotlib.pyplot as plt
import pandas as pd
df=pd.dataframe()
df["nianxin"] =[11,19,14,22,14,28,13,81,12,43,11,16,31,16,23.42,22,26,17,22,13,27,180,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25,26,16,12,54,40,18,27,16,14,33,29,77,50,19,34]
plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
plt.show()
#繪製點圖
import matplotlib.pyplot as plt
pay =(11,19,14,22,14,28,13,81,12,43,11,16,31,16,23.42,22,26,17,22,13,27,180,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25,26,16,12,54,40,18,27,16,14,33,29,77,50,19,34)
print(pay)
plt.plot(pay,pay,'ro')
plt.show()
#繪製散點圖
import matplotlib.pyplot as plt
plt.figure()
plt.scatter([1,2,3],[1,2,3],s=40,c='r',alpha=0.5)
plt.grid(true)
plt.show()
#繪製箱型圖
import matplotlib.pyplot as plt
import pandas as pd
df=pd.dataframe()
df["英語"]=[76,90,97,71,70,93,86,83,78,85,81]
df["經濟數學"]=[65,95,51,74,78,63,91,82,75,71,55]
df["西方經濟學"]=[93,81,76,88,66,79,83,92,78,86,78]
df["計算機應用基礎"]=[85,78,81,95,70,67,82,72,80,81,77]
print(df)
plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
plt.show()
python中也包含了大量的統計命令,其中主要的統計特徵函式如下:sum(),mean(),var(),std(),corr,cov(),skew()
2 缺失值處理
直接刪除 直接賦予0值或者某乙個特殊的值 對於不同的資料場景應該採取不同的策略,首先應該判斷缺失值的分布情況
import scipy as sp
import pandas as pd
df =pd.read_csv("data/goog.csv", index_col=0)
print(df.shape)
print('isnull:')
print(df.isnull().sum(axis=1)) #計算每row中nan值的數量
print(df.isnull().sum(axis=1).tolist())
# df.fillna(0) #use 0 replace nan
# df.fillna(method='pad')#use qianyige shu replace nan
# df.fillna(df.mean())#user pingjunshu replace nan
# df.fillna(df.mean()['open':'high'])
#print(df[:10])
#print(df['open'])
3.異常值處理
異常值我們通常也稱為「離群點」。在講分析資料時,我們舉了個例子說明如何發現離群點,除了畫圖(畫圖其實並不常用,因為資料量多時不好畫圖,而且慢),還有很多其他方法:
1.簡單的統計分析
拿到資料後可以對資料進行乙個簡單的描述性統計分析,譬如最大最小值可以用來判斷這個變數的取值是否超過了合理的範圍,如客戶的年齡為-20歲或200歲,顯然是不合常理的,為異常值。
python中可以直接用pandas的describe()
處理方法:
1.刪除異常值----明顯看出是異常且數量較少可以直接刪除
2.不處理---如果演算法對異常值不敏感則可以不處理,但如果演算法對異常值敏感,則最好不要用,如基於距離計算的一些演算法,包括kmeans,knn之類的。
3.平均值替代----損失資訊小,簡單高效。
4.視為缺失值----可以按照處理缺失值的方法來處理
四.去重處理
dataframe的duplicated方法返回乙個布林型series,表示各行是否是重複行df.duplicated()
df.drop_duplicates方法用於返回乙個移除了重複行的dataframe
#duplicated和drop_duplicates預設保留的是第乙個出現的值組合。傳入take_last=true則保留最後乙個:
data.drop_duplicates(['v1','v2'],take_last = true)list:
list0=['b','c', 'd','b','c','a','a']
方法1:使用set()
list1=sorted(set(list0),key=list0.index)print( list1)
方法2:使用 {}.fromkeys().keys()
list2={}.fromkeys(list0).keys()11 print(list2)
5 噪音處理
噪音,是被測量變數的隨機誤差或方差.將乙個變數看成了另乙個變數;
一些實用的資料處理小工具
去掉檔案中多餘的空行
如何判斷檔案的編碼格式
檔案編碼格式轉換,gbk與utf-8之間的轉換
分析資料, 缺失值處理 ,去重處理, 噪音處理
分析資料,缺失值處理 去重處理,噪音處理 看了charlotte的部落格分析資料,缺失值處理 學習總結,很受用,如是將她的畫圖的部分 新增完整,可以執行,這樣學起來更直觀.1.分析資料 在實際專案中,當我們確定需求後就會去找相應的資料,拿到資料後,首先要對資料進行描述性統計分析,檢視哪些資料是不合理...
資料預處理 缺失值分析與處理
資料的缺失主要包括記錄的缺失和記錄中某個字段資訊的缺失,兩者都會造成分析結果的不準確。資訊暫時無法獲取,或者獲取資訊的代價太大 有些資訊被遺漏或者被忽略,資料理解出錯等問題導致缺失值產生 資料採集裝置故障 儲存介質故障 傳輸 故障等非人為原因導致 屬性值不存在,某些情況下缺失值並不意味著資料有錯誤,...
資料缺失值處理
步驟 1.識別缺失值 2.分析缺失的原因 3.檢視缺失值情況 4.處理缺失值 識別判斷缺失值 is.na 識別矩陣或資料框中的完整觀測 complete.cases any is.na data 檢查是否存在缺失值 head is.na data col1 5 檢視資料data中col1列前5個資料...