1. 程式人生 > >分析數據, 缺失值處理 ,去重處理, 噪音處理

分析數據, 缺失值處理 ,去重處理, 噪音處理

異常 str 超過 基礎 基於 center st2 describe 是否

分析數據, 缺失值處理 ,去重處理, 噪音處理

看了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
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之間的轉換

分析數據, 缺失值處理 ,去重處理, 噪音處理