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()
75dd5ed8a4c1add7a96264cf3a9dc413.png 使用函数:isnull, 功能:统计空值个数
#计算全部数据中空值的总数,与train_data.shape[0]-train_data.count() 一致np.count_nonzero(train_data.isnull())
fcd402d64e7e9ee979826a87a065ea98.png
#计算某一列中空值的个数np.count_nonzero(train_data['Age'].isnull())
0a34b12774138a73676d241935d2db1a.png

(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)
5e38a0b8f0c152a43f01905147a89a2f.png 将函数作用于每一列
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()
724a655d7b20b125ce20ce98025a9050.png
#单独计算1等仓位的平均年龄avg_age_by_pclass=train_data.loc[train_data.Pclass==1]['Age'].mean()
79aaa3c06d52225acc573b1404475781.png 情景2:单个字段,多个数字特征,使用agg函数
avg_age_by_pclass=train_data.groupby('Pclass')['Age'].agg([np.count_nonzero,np.mean,np.std])
2e934f9c6737e5552df336e27cddd92b.png 情景3:统计统计多个字段,多个数字特征
avg_age_by_pclass=train_data.groupby('Pclass').agg(    {'Age':'mean','Fare':'median'    })
241b4edf9126d6d4eaedd74323cdcd84.png 情景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()
c9e801a6560bbb7a619fce9a80fc7fce.png (6)过滤,类似SQL的having
#按照仓位分组,筛选仓位人数大于200的数据,过滤仓位等级为2的数据train_data.groupby('Pclass').filter(lambda x:x['Pclass'].count()>=200)['Pclass'].value_counts() 
50cdee656c816cbaa06757736650ce56.png
#按照仓位分组,筛选年龄均值大于29的数据,过滤仓位等级为2的数据train_data.groupby('Pclass').filter(lambda x:x['Age'].mean()>=29)['Pclass'].value_counts()
ab15e92ef1f7f9d9bc8c8b2f8ff52c7c.png (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
05f88a5b25385610b46e1c6a96858c7d.png 不分组,对全量数据标准化
all_z_score=zscore(train_data.Age)
66b0f3fe30aa46309fb0004d84a75040.png总结:通过两次对pandas常用操作的介绍,希望能帮助大家起到一个入门的作用,但是,pandas功能强大,还有很多细节需要在实际应用中去查阅官方文档,不要拒绝阅读英文官方文档,查字典,慢慢读。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程概述教会学员快速学会python数据分析,覆盖python基础,pandas,seaborn,matplotlib,SQL,sqlite,lambda等知识。课程是数据科学家居家必备的军火库。课程定期更新,大部分视频分辨率支持2K超清,学员可以看清每一行代码。 适合人群python数据科学从业人员,数据分析师,统计 学习计划和方法1.每天保证1-2个小时学习时间,预计7-15天左右可以学习完整门课程(不同基础学生时间差异较大)。2.每节课的代码实操要保证,建议不要直接复制粘贴代码,自己实操一遍代码对大脑记忆很重要,有利于巩固知识。3.第二次学习时要总结上一节课内容,必要时做好笔记,加深大脑理解。4.不懂问题要罗列出来,先自己上网查询,查不到的可以咨询老师。 作者介绍Toby,持牌照金融公司担任模型验证专家,国内最大医药数据中心数据挖掘部门负责人!和清华大学出版社,重庆儿科医院,中科院教授,赛柏蓝保持慢病数据挖掘项目合作!管理过欧美日中印巴西等国外药典数据库,马丁代尔数据库,FDA溶解度数据库,临床试验数据库,WHO药物预警等数据库。原创公众号(python风控模型) 课程概述教会学员快速学会python数据分析,覆盖python基础,pandas,seaborn,matplotlib,SQL,sqlite,lambda等知识。课程是数据科学家居家必备的军火库。课程定期更新,大部分视频分辨率支持2K超清,学员可以看清每一行代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值