pandas filter_数据分析之Pandas操作(2)
生活随笔
收集整理的這篇文章主要介紹了
pandas filter_数据分析之Pandas操作(2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接著數據分析之Pandas操作(1)的介紹,本次介紹在實際應用場景中幾個常用的函數。還是以titanic生存數據為例,本次需要導入pandas?、numpy?、scipy三個工具包。
import pandas as pdimport numpy as npfrom scipy.stats import zscoretrain_data?=?pd.read_csv("titanic/train.csv")
(1)查找及統計缺失值
使用函數:count,功能:統計非空個數#統計非空個數train_data.count()#統計空值個數train_data.shape[0]-train_data.count()使用函數:isnull,?功能:統計空值個數#計算全部數據中空值的總數,與train_data.shape[0]-train_data.count() 一致np.count_nonzero(train_data.isnull())#計算某一列中空值的個數np.count_nonzero(train_data['Age'].isnull())(2)通過apply統計缺失值
首先自定義函數,返回某個維度的空值個數#通過定義函數 統計缺失值def missing_counts(vector): null_vector=pd.isnull(vector) null_counts=np.sum(null_vector) return null_counts將函數作用于數據集的每一行count_missing_row=train_data.apply(missing_counts,axis=1) count_missing_row.head(10)將函數作用于每一列count_missing_col=train_data.apply(missing_counts)(3)缺失值填充使用函數:fillna,功能:填充空值整個數據集填充train_data.fillna(0)具體某一列填充train_data['Age'].fillna(0)(4)缺失值刪除使用函數:dropna,功能:刪除空值train_data.dropna().head(10)注:缺失值填充及缺失中默認是False,即不替換原有的數據集,如果想保留原有的數據集,可以重新一個數據集來存放處理過的數據。(5)匯總統計情景1:統計單個字段,單個數字特征#計算不同倉位的乘客平均年齡avg_age_by_pclass=train_data.groupby('Pclass').Age.mean()#單獨計算1等倉位的平均年齡avg_age_by_pclass=train_data.loc[train_data.Pclass==1]['Age'].mean()情景2:單個字段,多個數字特征,使用agg函數avg_age_by_pclass=train_data.groupby('Pclass')['Age'].agg([np.count_nonzero,np.mean,np.std])情景3:統計統計多個字段,多個數字特征avg_age_by_pclass=train_data.groupby('Pclass').agg( {'Age':'mean','Fare':'median' })情景4:重命名數字特征列,重新設置索引avg_age_by_pclass=train_data.groupby('Pclass')['Age'].agg([ np.count_nonzero, np.mean, np.std]).rename(columns={'count_nonzero':'count','mean':'avg','std':'std_dev'}).reset_index()(6)過濾,類似SQL的having#按照倉位分組,篩選倉位人數大于200的數據,過濾倉位等級為2的數據train_data.groupby('Pclass').filter(lambda?x:x['Pclass'].count()>=200)['Pclass'].value_counts()?#按照倉位分組,篩選年齡均值大于29的數據,過濾倉位等級為2的數據train_data.groupby('Pclass').filter(lambda?x:x['Age'].mean()>=29)['Pclass'].value_counts()(7)轉換:transform定義一個正態標準化函數#標準化函數def zscore_count(x):????return?((x-x.mean())/x.std())按照倉位分組后對年齡字段標準化#按照倉位分組后對年齡字段標準化z_transf=train_data.groupby('Pclass').Age.transform(zscore_count)z_transf.shape,train_data.shape不分組,對全量數據標準化all_z_score=zscore(train_data.Age)總結:通過兩次對pandas常用操作的介紹,希望能幫助大家起到一個入門的作用,但是,pandas功能強大,還有很多細節需要在實際應用中去查閱官方文檔,不要拒絕閱讀英文官方文檔,查字典,慢慢讀。總結
以上是生活随笔為你收集整理的pandas filter_数据分析之Pandas操作(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPI 读取不同长度 寄存器_[读书笔记
- 下一篇: 能用来写安卓吗_iPad能代替笔记本吗,