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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/528927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/528927.shtml
英文地址,請注明出處:http://en.pswp.cn/news/528927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

轉轉釣魚php,最新轉轉釣魚源碼程序網站微信:mm88wk 最新轉轉源碼 - 下載 - 搜珍網...

壓縮包 : 轉轉釣魚源碼微:mm88wk.zip 列表轉轉/轉轉/360safe/轉轉/360safe/360webscan.php轉轉/360safe/webscan_cache.php轉轉/admin/轉轉/admin/add.php轉轉/admin/addsite.php轉轉/admin/adduser.php轉轉/admin/downfile.php轉轉/admin/download.php轉轉/admin/e…

PHP即將退出,PHP4即將退出歷史舞臺

http://www.phpeye.com/bbs/viewthread.php?tid92 PHP官方團隊在php.net上發布了一則公告: Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stablehttp://w…

redis 清空db下_PHP操作redis實現的分頁列表

正文內容封裝類文件如下:/* * redis 分頁數據類庫 */class redisPage{protected $_redis;protected $_redis_ip 127.0.0.1; //ipprotected $_redis_port 6379; //端口protected $_redis_db 0; //數據庫號protected $_hash_prefix my_data; //前綴名稱public fun…

php5.1.4,apache 2.2.2 + PHP5.1.4 不能運行的解_php

apache 2.2.2 php5.1.4 不能運行的解決辦法.問題,使用傳統的模塊化方法安裝PHP5.1.* apache 2.2.2 后不能啟動,提示:"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."原因:PHP壓縮包里的php5apache2.dll只適用于apach…

python3中的zip_Python3實現將文件歸檔到zip文件及從zip文件中讀取數據的方法

Created on Dec 24, 2012將文件歸檔到zip文件,并從zip文件中讀取數據author: liury_lab# 壓縮成zip文件from zipfile import * #UnusedWildImportimport osmy_dir d:/中華十大名帖/myzip ZipFile(d:/中華十大名帖.zip, w, ZIP_DEFLATED)for file_name in os.listd…

java mariadb 使用,java連接mariaDB的設置,java連接mariadb

java連接mariaDB的設置,java連接mariadbjava連接mariaDB數據庫的設置:(tomcat 8)第一種方法:使用tomcat自帶的mysql-connector-java-5.1.40-bin.jarjava代碼中的設置:driver驅動類為:com.mysql.jdbc.Driverurl為&#…

python產品發布會_【Mac系統 + Python + Django】之開發一個發布會系統【Django模型(三)】...

上一部分給大家介紹Django的視圖。接下來繼續來了解Django框架,來看第三部分,此部分是對數據庫的操作。目錄:一、設計系統表            返回目錄首先打開sign/models.py,通過模型完成標的創建:from djang…

java 保留字符串,如何在Java中保留字符串而不使用反轉功能

有以下幾種在Java中反轉字符串的方法:使用for循環使用While循環使用靜態方法使用For循環使用for循環在Java中反轉字符串的示例在下面的示例中, 我們使用了for循環來反轉字符串。 for循環執行直到條件i> 0變為false為止。import java.util.Scanner;class ReverseS…

python增刪改查csv文件_Python增刪改查文件

#!/usr/bin/env python# -*- coding:utf-8 -*-# author:Erik Chan# datetime:2018/12/27 9:29# software: PyCharmimport os# 獲取當前文件的父目錄文件夾DIR os.path.dirname(os.path.abspath(__file__))cwd os.getcwd() #獲取當前目錄即dir目錄下print(cwd)# 創建添加一個文…

php 模塊 遠程,ThinkPHP遠程調用模塊的操作方法 URL 參數格式

* 遠程調用模塊的操作方法 URL 參數格式 [項目://][分組/]模塊/操作* param string $url 調用地址* param string|array $vars 調用參數 支持字符串和數組* param string $layer 要調用的控制層名稱* return mixedfunction R($url,$varsarray(),$layer‘‘) {$info pathinfo($…

python3 csv 讀入數組_如何將CSV數據讀入NumPy中的記錄數組?

我建議read_csv函數的pandas圖書館:import pandas as pddfpd.read_csv(myfile.csv, sep,,headerNone)df.valuesarray([[ 1. , 2. , 3. ],[ 4. , 5.5, 6. ]])DataFrame是一種具有潛在不同類型列的二維標記數據結構.你可以把它想象成一個電子表格或SQL表.我也建議…

php用cdn打不開,開啟 CDN 后 wordpress 后臺打不開的解決辦法

現在很多站長把網站放到國外,使用 CDN 加速功能提高國內的訪問速度,前面提到過開啟騰訊云 CDN 后 wordpress 后臺顯示:連接被重置的解決辦法,而今天遇到的是另外一種情況,有時候會遇到開啟 CDN 后 wordpress 后臺打不開…

android 支付寶月賬單 統計圖_記賬其實很簡單,用微信、支付寶就夠了!

用微信、支付寶記賬,從起告別糊涂賬養成記賬的好習慣,能讓你對生活中的各種收支做到心中有數,從此告別糊涂賬。長期堅持,能幫助我們理性消費、科學理財。但或許是因為記賬的過程太枯燥,或許是因為沒找到合適的記賬方法…

mysql抖動可能的原因,12 | 為什么我的MySQL會“抖”一下?

你的 SQL 語句為什么變“慢”了平時執行很快的更新操作,其實就是在寫內存和日志,而 MySQL 偶爾“抖”一下的那個瞬間,可能就是在刷臟頁(flush)。當內存數據頁跟磁盤數據頁內容不一致的時候,我們稱這個內存頁為“臟頁”。內存數據寫…

怎樣快速畫出一個正方體_圖形與幾何---正方體

一.概念描述現代數學:正方體亦稱立方體。它是一種正多面體。即棱長相等的長方體,因此亦稱正六面體,如下圖。小學數學:2007年北京版教材第10冊的第3頁指出:長、寬、高都相等的長方體叫作正方體(也叫作立方體…

python argvparser_Python ArgumentParse的subparser用法說明

在寫一些很小的機器學習項目的時候,我們往往希望training, testing和inference能共用一個入口main,但是不同的功能使用不同的input參數.當然如果三個功能對應三個.py腳本問題也不大,但是畢竟覺得不太優雅.這個時候就需要考慮如何讓代碼更加簡單有條理.主要是最近在看parser有關…

python生成器函數(generator),python3學習筆記:生成器generator

簡單了解下生成器generator,主要是yield的返回值和send的傳參,記錄下。生成器的基本屬性generator 函數 yield簡單說,就是一個函數,里面用到了關鍵字yield,就成為了一個生成器生成器和函數的不同主要在于&#xff1a…

復旦微電子fpga數據手冊_專注FPGA圖像加速領域 深維科技跨入發展快車道

日前,在2019賽靈思開發者大會(美洲站)上,深維科技正式面向全球發布ThunderImage三款重磅圖像加速產品:全球最快的JPEG2JPEG縮略圖方案、超高性能的JPEG2WebP轉碼方案及世界級超高密度算力的JPEG2JPEG縮略圖方案。新產品一經發布立即“技驚”四…

oracle Blob保存方式,關于文件保存到Oracle中BLOB字段的方法及例子

關于文件保存到Oracle中BLOB字段的方法及例子-------------------------------------------public class FileOpClass{public static byte[] GetFileStream(string filepath){byte[] byteArray null;FileStream fs null;try{fs new FileStream(filepath, FileMode.Open);lon…

python 調c++生成的dll 中識別char *_基于tensorflow 實現端到端的OCR:二代身份證號識別...

最近在研究OCR識別相關的東西,最終目標是能識別身份證上的所有中文漢字數字,不過本文先設定一個小目標,先識別定長為18的身份證號,當然本文的思路也是可以復用來識別定長的驗證碼識別的。 本文實現思路主要來源于Xlvector的博客&a…