缺失值处理和数据透视表

  • 缺失值处理 pandas中的fillna()方法 必要时设置索引 填充时会自动根据索引填充
  • 数据透视表 pandas中的pivot_table函数

describe函数查看的是 数值变量的 统计信息,并未包括 分类变量数据的信息
如果需要擦汗分类别量的数据,需要使用include参数

titanic_df.describe()#只显示数据类的统计
titanic_df[["Survived","Age", "SibSp", "Parch"]].describe()#只看部分数据的统计量 前面实际上筛选出了想观察的数据
titanic_df.describe(include=[np.object])#使用include参数 查看分类变量的统计信息
#分类变量的统计信息,
#count 表示非缺失值的个数
#unique 非重复值的个数
#top 最高频值
# 最高频值出现的的次数

缺失值处理

  • 真实数据往往会存在缺失值
  • 超过百分之六七十的缺失值 我们可以考虑直接丢掉这个变量 --删除某列数据
  • 重要的数据 缺失百分之二三十,我们可以考虑用中位数或者平均值填补 --填补缺失值
  • 我们一般不提倡去掉带缺失值的行,因为非缺失值的变量可能提供有用的信息 --删除带缺失值的行
  1. 使用info函数 查看数据总量 以及各个变量非空值的个数,以及变量的类型。大致了解缺失值情况
    titanic_df.info()
  2. 在处理某一列之前,可以先查看该列的统计值 以便处理前后做个比较
    titanic_df.Age.describe()
  3. 使用中位数填补年龄数据中的缺失值
    1. 计算中位数
      age_median = titanic_df.Age.median()
    2. 使用fillna填充缺失值 inplace=True表示在原数据上直接修改 要对那一列填充na就点到那一列
      titanic_df.Age.fillna(age_median2, inplace=True)
    3. 再查看下统计值
      titanic_df.Age.describe()
      实际情况中,如果考虑更多的分类因素,会更接近真实数据。比如 考虑性别因素
      因为填充时要依据性别因素填充,因此 需要将这个性别这个属性作为索引

分别计算男女年龄的中位数
age_median2 = titanic_df.groupby('Sex').Age.median()
上面这行命令,依据sex分组,分组计算了年龄的中位数。得到的结果是个Series序列,索引是sex,值是不同性别的中位数。

在对源数据填充的时候,也要给源数据一个相同的索引,所以需要对源数据设置索引

titanic_df.set_index('Sex',inplace=True)

使用fillna填充数据时,会根据索引进行填充

titanic_df.Age.fillna(age_meida2,inplace=True)

填充过之后,要恢复成原来的样子,就要重置索引

titanic_df.reset_index(inplace=True)

查看下使用这种填充后统计量
titanic_df.Age.describe()

索引也可以是多重的,使用多重索引填充时,要保证索引的一致性。
比如分别计算不同舱位男女年龄的中位数

age_median3 = titanic_df.groupby(['Pclass', 'Sex']).Age.median()

计算的结果其实只有一个标量 那就是 age的中位数
而分类依据是作为索引出现的。age_median3是个series数据

因此在填充时,源数据的 这两个分类属性也要作为索引
重设索引时 记得使用inplace参数 保证数据在原数据上修改

# 设置索引
titanic_df.set_index(['Pclass','Sex'], inplace=True)
# 填充数据
titanic_df.Age.fillna(age_median3, inplace=True)
# 重置索引 
titanic_df.reset_index(inplace=True)

数据透视表df.pivot_table()

数据透视表是就是 在整个数据中 找到需要的数据 然后对数据 做一层运算
因此有三个关键参数 value 要操作的数据 index 把那个分类属性作为索引(分组) aggfunc应用的计算

titanic_df.pivot_table(values='Survived', index='Pclass', aggfunc=np.mean)
# 可以根据多个筛选条件对多个数据实行多个运算
titanic_df.pivot_table(values=['Survived','Age'], index=['Pclass','Sex'], aggfunc=[np.mean,np.max])

pivot_table还有一个参数叫做columns 也是个分类变量,跟index一样,不同的是会影响结果的显示。
只不过我们将它列在列里而不是行里,这也是为什么这个变量称为columns

连续变量离散化

  • 连续变量离散化是建模的一种常用方法
  • 离散化指的是 将某个变量所在的区间 分隔成几个小区间 落在同一个区间的观察值用同一个符号表示
  • 以年龄为例,最小值是0.42(婴儿),最大值是80,如果我们想产生一个五个级(levels),我们可使用cut或者qcut函数
  • cut函数将年龄的区间平均分隔为5份,qcut是让每个区间的观察值个数一样(5等分)
# 我们使用cut函数
# 我们可以看到每个区间的大小是固定的,大约是16岁
# 这个函数的第一个参数是 对谁切割,第二个参数是切割几份
titanic_df['AgeBand'] = pd.cut(titanic_df['Age'], 5)

value_counts函数的结果默认是排了序的,可以使用sort参数修改是否对结果排序
titanic_df.AgeBand.value_counts(sort=False)

# 同时绘制不同年龄组的生还概率图
# 参数row='AgeBand'表示将不同的年龄区间的图按行排列
# 参数aspect设置画布的长宽比
# 参数palette(调色板)设置hue分组的颜色
sns.FacetGrid(data = titanic_df, row='AgeBand', aspect=1.5) \
   .map(sns.pointplot, 'Pclass', 'Survived', 'Sex', hue_order=['male', 'female'],  palette='deep', ci=None)
#palette 配色参考 https://seaborn.pydata.org/tutorial/color_palettes.html?highlight=palette
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容