日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)

發布時間:2024/2/28 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先載入各種包:

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')

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

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

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

data.head() #查看長啥樣

data.shape #查看數據的行列大小

data.describe()

#列級別的判斷,但凡某一列有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)

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

import missingno

missingno.matrix(data)

data=data.dropna(thresh=data.shape[0]*0.5,axis=1) #至少有一半以上是非空的列篩選出來

#如果某一行全部都是na才刪除:

data.dropna(axis=0,how='all')

#默認情況下是只保留沒有空值的行

data=data.dropna(axis=0)

#統計重復記錄數

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])

#對于離散型數據,對其獲取啞變量

dummies=pd.get_dummies(data[cat_col])

dummies

對于連續型部分:

#對于連續型數據的大概統計:

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

m=dummies.join(scaled)

data_cleaned=data[id_col].join(m)

data_cleaned

看變量之間的相關性:

data_cleaned.corr()

#以下是相關性的熱力圖,方便肉眼看

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)

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

#取出與某個變量(這里指能力)相關性最大的前四個,做出熱點圖表示

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()

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

本文標題: python3常用的數據清洗方法(小結)

本文地址: http://www.cppcns.com/jiaoben/python/283447.html

總結

以上是生活随笔為你收集整理的使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。