91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3常用的數據清洗方法(小結)

發布時間:2020-08-22 21:00:48 來源:腳本之家 閱讀:225 作者:竹子萊西 欄目:開發技術

首先載入各種包:

import pandas as pd
import numpy as np
from collections import Counter
from sklearn import preprocessing
from matplotlib import pyplot as plt
%matplotlib inline
import seaborn as sns 
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字體設置-黑體
plt.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題
sns.set(font='SimHei') # 解決Seaborn中文顯示問題

讀入數據:這里數據是編造的

data=pd.read_excel('dummy.xlsx')

本案例的真實數據是這樣的:

python3常用的數據清洗方法(小結) 

對數據進行多方位的查看:

實際情況中可能會有很多行,一般用head()看數據基本情況

data.head() #查看長啥樣
data.shape #查看數據的行列大小
data.describe()

python3常用的數據清洗方法(小結)

python3常用的數據清洗方法(小結)

#列級別的判斷,但凡某一列有null值或空的,則為真
data.isnull().any()

#將列中為空或者null的個數統計出來,并將缺失值最多的排前
total = data.isnull().sum().sort_values(ascending=False)
print(total)


#輸出百分比:
percent =(data.isnull().sum()/data.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
missing_data.head(20)

python3常用的數據清洗方法(小結)

也可以從視覺上直觀查看缺失值:

import missingno
missingno.matrix(data)
data=data.dropna(thresh=data.shape[0]*0.5,axis=1) #至少有一半以上是非空的列篩選出來
#如果某一行全部都是na才刪除:
data.dropna(axis=0,how='all') 

python3常用的數據清洗方法(小結)

#默認情況下是只保留沒有空值的行
data=data.dropna(axis=0) 

python3常用的數據清洗方法(小結)

#統計重復記錄數
data.duplicated().sum()
data.drop_duplicates()

對連續型數據和離散型數據分開處理:

data.columns
#第一步,將整個data的連續型字段和離散型字段進行歸類
id_col=['姓名']
cat_col=['學歷','學校'] #這里是離散型無序,如果有序,請參考map用法,一些博客上有寫
cont_col=['成績','能力'] #這里是數值型
print (data[cat_col]) #這里是離散型的數據部分
print (data[cont_col])#這里是連續性數據部分

對于離散型部分:

#計算出現的頻次
for i in cat_col:
  print (pd.Series(data[i]).value_counts())
  plt.plot(data[i])

python3常用的數據清洗方法(小結)

#對于離散型數據,對其獲取啞變量
dummies=pd.get_dummies(data[cat_col])
dummies

python3常用的數據清洗方法(小結) 

對于連續型部分:

#對于連續型數據的大概統計:
data[cont_col].describe()

#對于連續型數據,看偏度,一般大于0.75的數值做一個log轉化,使之盡量符合正態分布,因為很多模型的假設數據是服從正態分布的
skewed_feats = data[cont_col].apply(lambda x: (x.dropna()).skew() )#compute skewness
skewed_feats = skewed_feats[skewed_feats > 0.75]
skewed_feats = skewed_feats.index
data[skewed_feats] = np.log1p(data[skewed_feats])
skewed_feats
#對于連續型數據,對其進行標準化
scaled=preprocessing.scale(data[cont_col])
scaled=pd.DataFrame(scaled,columns=cont_col)
scaled

python3常用的數據清洗方法(小結)

m=dummies.join(scaled)
data_cleaned=data[id_col].join(m)
data_cleaned

python3常用的數據清洗方法(小結) 

看變量之間的相關性:

data_cleaned.corr()

python3常用的數據清洗方法(小結)

#以下是相關性的熱力圖,方便肉眼看
def corr_heat(df):
  dfData = abs(df.corr())
  plt.subplots(figsize=(9, 9)) # 設置畫面大小
  sns.heatmap(dfData, annot=True, vmax=1, square=True, cmap="Blues")
  # plt.savefig('./BluesStateRelation.png')
  plt.show()
corr_heat(data_cleaned)

python3常用的數據清洗方法(小結)

如果有覺得相關性偏高的視情況刪減某些變量。

#取出與某個變量(這里指能力)相關性最大的前四個,做出熱點圖表示
k = 4 #number of variables for heatmap
cols = corrmat.nlargest(k, '能力')['能力'].index
cm = np.corrcoef(data_cleaned[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f',   annot_kws={'size': 10}, yticklabels=cols.values,  xticklabels=cols.values)
plt.show()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潢川县| 绥中县| 玛多县| 隆回县| 荥经县| 商城县| 威宁| 陆河县| 金山区| 于田县| 莱阳市| 格尔木市| 政和县| 吉木乃县| 阜新市| 邻水| 平昌县| 永宁县| 宁安市| 新安县| 武夷山市| 韶关市| 湘潭市| 喜德县| 彰化县| 乌鲁木齐市| 游戏| 正蓝旗| 枣强县| 冀州市| 绵阳市| 永新县| 太仆寺旗| 刚察县| 新化县| 依兰县| 文安县| 怀化市| 九台市| 古蔺县| 延边|