接着数据分析之Pandas操作(1)的介绍,本次介绍在实际应用场景中几个常用的函数。还是以titanic生存数据为例,本次需要导入pandas 、numpy 、scipy三个工具包。
import pandas as pd
import numpy as np
from scipy.stats import zscore
train_data = pd.read_csv("titanic/train.csv")
(1)查找及统计缺失值
使用函数:count,功能:统计非空个数#统计非空个数train_data.count()#统计空值个数train_data.shape[0]-train_data.count()

#计算全部数据中空值的总数,与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()

avg_age_by_pclass=train_data.groupby('Pclass')['Age'].agg([np.count_nonzero,np.mean,np.std])

avg_age_by_pclass=train_data.groupby('Pclass').agg( {'Age':'mean','Fare':'median' })

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

#按照仓位分组,筛选仓位人数大于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()

#标准化函数
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)
