缺失值检查与处理

在线刷题

检查 or 强化 Pandas 数据分析操作?👉在线体验「Pandas进阶修炼300题」

Note

本页面代码可以在线编辑、执行

本页数据说明

为了更好的介绍相关操作,本页面使用 豆瓣电影TOP250 数据进行展开,你应该对数据字段、数值、类型等相关信息做一个大致了解!

import pandas as pd
pd.set_option('display.max_colwidth',10)
df = pd.read_excel("TOP250.xlsx")
df.head()
片名 上映年份 评分 评价人数 导演 编剧 主演 类型 国家/地区 语言 时长(分钟)
0 肖申克的救赎 1994 9.7 2317937.0 弗兰克·德拉邦特 弗兰克·德拉... 蒂姆·罗宾斯... 剧情 / 犯罪 美国 英语 142.0
1 霸王别姬 1993 9.6 1720638.0 陈凯歌 芦苇 / 李碧华 张国荣 / ... 剧情 / 爱... 中国 汉语普通话 171.0
2 阿甘正传 1994 9.5 1743966.0 罗伯特·泽米吉斯 艾瑞克·罗斯... 汤姆·汉克斯... 剧情 / 爱情 美国 英语 142.0
3 这个杀手不太冷 1994 9.4 1922740.0 吕克·贝松 吕克·贝松 让·雷诺 /... 剧情 / 动... 法国 英语 110.0
4 泰坦尼克号 1997 9.4 1706127.0 詹姆斯·卡梅隆 詹姆斯·卡梅隆 莱昂纳多·迪... 剧情 / 爱... 美国 英语 194.0

缺失值检查

检查全部缺失值

df.isna().sum().sum()
26

检查每列缺失值

再看看具体每列有多少缺失值

df.isnull().sum()
片名        0
上映年份      0
评分        5
评价人数      3
导演        0
编剧        0
主演        0
类型        0
国家/地区     6
语言        6
时长(分钟)    6
dtype: int64

定位缺失值

为了后面更方便的处理缺失值,现在先看看全部缺失值所在的行

df[df.isnull().T.any() == True]
片名 上映年份 评分 评价人数 导演 编剧 主演 类型 国家/地区 语言 时长(分钟)
6 千与千寻 2001 9.4 1822369.0 宫崎骏 宫崎骏 柊瑠美 / ... 剧情 / 动... 日本 日语 NaN
12 海上钢琴师 1998 9.3 1371726.0 朱塞佩·托纳多雷 亚利桑德罗·... 蒂姆·罗斯 ... 剧情 / 音乐 意大利 NaN 165.0
19 熔炉 2011 9.3 NaN 黄东赫 黄东赫 / 孔枝泳 孔刘 / 郑... 剧情 韩国 韩语 125.0
20 教父 1972 9.3 756991.0 弗朗西斯·福... 马里奥·普佐... 马龙·白兰度... 剧情 / 犯罪 美国 英语 NaN
21 当幸福来敲门 2006 9.1 1237631.0 加布里埃莱·穆奇诺 斯蒂夫·康拉德 威尔·史密斯... 剧情 / 家... 美国 NaN 117.0
22 龙猫 1988 9.2 1032307.0 宫崎骏 宫崎骏 日高法子 /... 动画 / 奇... 日本 日语 NaN
31 乱世佳人 1939 9.3 556888.0 维克多·弗莱... 玛格丽特·米... 费雯·丽 /... 剧情 / 爱... 美国 英语 NaN
43 我不是药神 2018 9.0 1696301.0 文牧野 韩家女 / ... 徐峥 / 王... 剧情 / 喜剧 NaN 汉语普通话 NaN
53 狮子王 1994 9.0 665020.0 罗杰·阿勒斯... 艾琳·梅琪 ... 乔纳森·泰勒... 动画 / 歌... NaN 英语 89.0
73 情书 1995 NaN 726751.0 岩井俊二 岩井俊二 中山美穗 /... 剧情 / 爱情 日本 日语 117.0
81 蝴蝶效应 2004 NaN 751155.0 埃里克·布雷... J·麦基·格... 阿什顿·库彻... 剧情 / 科... 美国 英语 113.0
82 心灵捕手 1997 8.9 565379.0 格斯·范·桑特 本·阿弗莱克... 马特·达蒙 ... 剧情 美国 NaN 126.0
113 无人知晓 2004 9.1 233881.0 是枝裕和 是枝裕和 柳乐优弥 /... 剧情 日本 日语 NaN
133 甜蜜蜜 1996 NaN 420172.0 陈可辛 岸西 黎明 / 张... 剧情 / 爱情 中国 粤语 118.0
135 萤火之森 2011 8.9 NaN 大森贵弘 绿川幸 佐仓绫音 /... 剧情 / 爱... 日本 日语 45.0
139 驯龙高手 2010 8.7 617312.0 迪恩·德布洛... 威廉姆·戴维... 杰伊·巴鲁切... 动画 / 奇... 美国 NaN 98.0
166 英雄本色 1986 8.7 NaN 吴宇森 陈庆嘉 / ... 周润发 / ... 剧情 / 动... 中国 粤语 95.0
170 谍影重重3 2007 NaN 345352.0 保罗·格林格拉斯 托尼·吉尔罗... 马特·达蒙 ... 动作 / 悬... 美国 英语 115.0
181 头脑特工队 2015 NaN 478719.0 彼特·道格特... 彼特·道格特... 艾米·波勒 ... 喜剧 / 动... 美国 NaN 95.0
189 海街日记 2015 8.8 335964.0 是枝裕和 是枝裕和 /... 绫濑遥 / ... 剧情 / 家庭 NaN 日语 127.0
192 惊魂记 1960 9.0 202622.0 阿尔弗雷德·... 约瑟夫·斯蒂... 安东尼·博金... 悬疑 / 惊... NaN 英语 109.0
193 黑天鹅 2010 8.6 680102.0 达伦·阿伦诺夫斯基 安德雷斯·海... 娜塔莉·波特... 剧情 / 惊悚 美国 NaN 108.0
197 冰川时代 2002 8.6 507275.0 卡洛斯·沙尔... 迈克尔·伯格... 雷·罗马诺 ... 喜剧 / 动... NaN 英语 81.0
257 浪潮 2008 8.7 223511.0 丹尼斯·甘塞尔 丹尼斯·甘塞... 于尔根·福格... 剧情 / 惊悚 NaN 德语 107.0

高亮缺失值

很明显,虽然上一题找到了全部缺失值所在的行,但是看的很头疼

我们可以将缺失值进行高亮进一步查看

(df[df.isnull().T.any() == True]
.style
.highlight_null(null_color='skyblue')
.set_table_attributes('style="font-size: 10px"'))
片名 上映年份 评分 评价人数 导演 编剧 主演 类型 国家/地区 语言 时长(分钟)
6 千与千寻 2001 9.400000 1822369.000000 宫崎骏 宫崎骏 柊瑠美 / 入野自由 / 夏木真理 / 菅原文太 / 中村彰男 / 玉井夕海 / 神木隆之介 / 内藤刚志 / 泽口靖子 / 我修院达也 / 大泉洋 / 小林郁夫 / 上条恒彦 / 小野武彦 剧情 / 动画 / 奇幻 日本 日语 nan
12 海上钢琴师 1998 9.300000 1371726.000000 朱塞佩·托纳多雷 亚利桑德罗·巴里克 / 朱塞佩·托纳多雷 蒂姆·罗斯 / 普路特·泰勒·文斯 / 比尔·努恩 / 克兰伦斯·威廉姆斯三世 / 梅兰尼·蒂埃里 / 皮特·沃恩 / 尼尔·奥布赖恩 / 阿尔贝托·巴斯克斯 / 加布里埃莱·拉维亚 / 科里·巴克 / 西德尼·科尔 / Luigi De Luca / 尼古拉·迪·平托 / 费米·依鲁福祖 / 伊斯顿·盖奇 / 凯文·麦克纳利 / 布莱恩·普林格 / 沙拉·鲁宾 / 希思科特·威廉姆斯 / 阿妮妲·扎格利亚 / 安吉洛·迪洛雷塔 剧情 / 音乐 意大利 nan 165.000000
19 熔炉 2011 9.300000 nan 黄东赫 黄东赫 / 孔枝泳 孔刘 / 郑有美 / 金贤秀 / 郑仁絮 / 白承焕 / 张光 / 金民尚 / 林贤成 / 金周灵 / 严孝燮 / 全国焕 / 崔镇浩 / 金志映 / 严智星 / 许在浩 / 张素妍 剧情 韩国 韩语 125.000000
20 教父 1972 9.300000 756991.000000 弗朗西斯·福特·科波拉 马里奥·普佐 / 弗朗西斯·福特·科波拉 马龙·白兰度 / 阿尔·帕西诺 / 詹姆斯·肯恩 / 理查德·卡斯特尔诺 / 罗伯特·杜瓦尔 / 斯特林·海登 / 约翰·马利 / 理查德·康特 / 艾尔·勒提埃里 / 黛安·基顿 / 阿贝·维高达 / 塔莉娅·夏尔 / 吉亚尼·罗素 / 约翰·凯泽尔 / 鲁迪·邦德 / 兰尼·蒙大拿 剧情 / 犯罪 美国 英语 nan
21 当幸福来敲门 2006 9.100000 1237631.000000 加布里埃莱·穆奇诺 斯蒂夫·康拉德 威尔·史密斯 / 贾登·史密斯 / 坦迪·牛顿 / 布莱恩·豪威 / 詹姆斯·凯伦 / 丹·卡斯泰兰尼塔 / 柯特·富勒 / 塔卡尤·费舍尔 / 凯文·韦斯特 / 乔治·张 / 戴维·迈克尔·西尔弗曼 / 多米尼克·博夫 / 杰弗·卡伦 / 乔伊芙·拉文 / 斯科特·克拉斯 剧情 / 家庭 / 传记 美国 nan 117.000000
22 龙猫 1988 9.200000 1032307.000000 宫崎骏 宫崎骏 日高法子 / 坂本千夏 / 糸井重里 / 岛本须美 / 北林谷荣 / 高木均 / 雨笠利幸 / 丸山裕子 / 广濑正志 / 鹫尾真知子 / 铃木玲子 / 千叶繁 / 龙田直树 / 鳕子 / 西村朋纮 / 石田光子 / 神代知衣 / 中村大树 / 水谷优子 / 平松晶子 / 大谷育江 动画 / 奇幻 / 冒险 日本 日语 nan
31 乱世佳人 1939 9.300000 556888.000000 维克多·弗莱明 / 乔治·库克 / 山姆·伍德 玛格丽特·米歇尔 / 西德尼·霍华德 / 奥利弗·H·P·加勒特 / 本·赫克特 / 乔·斯沃林 / 约翰·范·德鲁登 费雯·丽 / 克拉克·盖博 / 奥利维娅·德哈维兰 / 托马斯·米切尔 / 芭芭拉·欧内尔 / 伊夫林·凯耶斯 / 安·卢瑟福德 / 乔治·里弗斯 / 弗莱德·克莱恩 / 海蒂·麦克丹尼尔 / 奥斯卡·波尔克 / 巴特弗莱·麦昆 / 维克托·乔里 / 埃弗雷特·布朗 / 霍华德·C·希克曼 / 艾丽西亚·瑞特 / 莱斯利·霍华德 / 兰德·布鲁克斯 / 卡洛尔·奈 / 劳拉·霍普·克鲁斯 / 埃迪·安德森 / 哈里·达文波特 / 利昂娜·罗伯特 / 简·达威尔 / 欧娜·满森 / 保罗·赫斯特 / 伊莎贝尔·朱尔 / 卡米·金·肯伦 / 艾瑞克·林登 / J·M·克里根 / 沃德·邦德 / 莉莲·肯布尔-库珀 剧情 / 爱情 / 历史 / 战争 美国 英语 nan
43 我不是药神 2018 9.000000 1696301.000000 文牧野 韩家女 / 钟伟 / 文牧野 徐峥 / 王传君 / 周一围 / 谭卓 / 章宇 / 杨新鸣 / 王佳佳 / 王砚辉 / 贾晨飞 / 龚蓓苾 / 宁浩 / 李乃文 / 岳小军 / 苇青 / 富冠铭 / 巴拉特·巴蒂 / 喜利图 / 张海艳 / 朱耕佑 剧情 / 喜剧 nan 汉语普通话 nan
53 狮子王 1994 9.000000 665020.000000 罗杰·阿勒斯 / 罗伯·明可夫 艾琳·梅琪 / 乔纳森·罗伯特 / 琳达·伍尔芙顿 乔纳森·泰勒·托马斯 / 马修·布罗德里克 / 杰瑞米·艾恩斯 / 詹姆斯·厄尔·琼斯 / 莫伊拉·凯利 / 内森·连恩 / 尼基塔·卡兰姆 / 厄尼·萨贝拉 / 乌比·戈德堡 / 罗温·艾金森 动画 / 歌舞 / 冒险 nan 英语 89.000000
73 情书 1995 nan 726751.000000 岩井俊二 岩井俊二 中山美穗 / 丰川悦司 / 酒井美纪 / 柏原崇 / 范文雀 / 篠原胜之 / 铃木庆一 / 田口智朗 / 加贺麻理子 / 光石研 / 铃木兰兰 / 盐见三省 / 中村久美 / 梅田凡乃 / 长田江身子 / 小栗香织 / 神户浩 / 酒井敏也 / 山口诗史 / 山崎一 / 德井优 / 武藤寿美 剧情 / 爱情 日本 日语 117.000000
81 蝴蝶效应 2004 nan 751155.000000 埃里克·布雷斯 / J·麦基·格鲁伯 J·麦基·格鲁伯 / 埃里克·布雷斯 阿什顿·库彻 / 梅洛拉·沃尔特斯 / 艾米·斯马特 / 埃尔登·汉森 / 威廉姆·李·斯科特 / 约翰·帕特里克·阿梅多利 / 艾琳·戈洛瓦娅 / 凯文·G·施密特 / 杰西·詹姆斯 / 罗根·勒曼 / 莎拉·威多斯 / 杰克·凯斯 / 卡梅隆·布莱特 / 埃里克·斯托尔兹 / 考乐姆·吉斯·雷尼 / 凯文·杜兰 剧情 / 科幻 / 悬疑 / 惊悚 美国 英语 113.000000
82 心灵捕手 1997 8.900000 565379.000000 格斯·范·桑特 本·阿弗莱克 / 马特·达蒙 马特·达蒙 / 罗宾·威廉姆斯 / 本·阿弗莱克 / 斯特兰·斯卡斯加德 / 明妮·德里弗 / 卡西·阿弗莱克 / 科尔·豪瑟 / 约翰·迈顿 / 丹·华盛顿 / 艾莉森·福兰德 / 维克·萨海 / 史蒂文·科兹洛夫斯基 / 斯科特·威廉姆·文特斯 / 吉米·弗林 / 乔治·普林普顿 / 弗朗切斯科·克莱门特 剧情 美国 nan 126.000000
113 无人知晓 2004 9.100000 233881.000000 是枝裕和 是枝裕和 柳乐优弥 / 北浦爱 / 木村飞影 / 清水萌萌子 / 韩英惠 / 江原由希子 / 串田和美 / 冈元夕纪子 / 楯隆子 / 加濑亮 / 村野友希 / 田中庆太 / 木村佑一 / 远藤宪一 / 寺岛进 / 平泉成 剧情 日本 日语 nan
133 甜蜜蜜 1996 nan 420172.000000 陈可辛 岸西 黎明 / 张曼玉 / 杨恭如 / 曾志伟 / 杜可风 / 张同祖 / 诸慧荷 / 丁羽 剧情 / 爱情 中国 粤语 118.000000
135 萤火之森 2011 8.900000 nan 大森贵弘 绿川幸 佐仓绫音 / 内山昂辉 / 辻亲八 / 山本兼平 / 后藤弘树 / 今井麻美 剧情 / 爱情 / 动画 / 奇幻 日本 日语 45.000000
139 驯龙高手 2010 8.700000 617312.000000 迪恩·德布洛斯 / 克里斯·桑德斯 威廉姆·戴维斯 / 迪恩·德布洛斯 / 克里斯·桑德斯 / 葛蕾熙达·柯维尔 杰伊·巴鲁切尔 / 杰拉德·巴特勒 / 克雷格·费格森 / 亚美莉卡·费雷拉 / 乔纳·希尔 / 克里斯托夫·梅兹-普莱瑟 / T·J·米勒 / 克里斯汀·韦格 / 罗宾·阿特金·唐斯 / 菲利普·麦格雷德 / 基隆·埃利奥特 / 阿什利·詹森 / 大卫·田纳特 动画 / 奇幻 / 冒险 美国 nan 98.000000
166 英雄本色 1986 8.700000 nan 吴宇森 陈庆嘉 / 吴宇森 / 梁淑华 周润发 / 狄龙 / 张国荣 / 朱宝意 / 李子雄 / 田丰 / 吴宇森 / 曾江 / 成奎安 / 徐克 / 陈志辉 剧情 / 动作 / 犯罪 中国 粤语 95.000000
170 谍影重重3 2007 nan 345352.000000 保罗·格林格拉斯 托尼·吉尔罗伊 / 乔治·诺非 / 斯科特·Z·本恩斯 马特·达蒙 / 朱丽娅·斯蒂尔斯 / 大卫·斯特雷泽恩 / 斯科特·格伦 / 帕迪·康斯戴恩 / 埃德加·拉米雷兹 / 阿尔伯特·芬尼 / 琼·艾伦 / Tom Gallop / 克里·约翰逊 / 丹尼尔·布鲁赫 / 乔伊·安沙 / 科林·斯廷顿 / 丹·弗雷登堡 / Lucy Liemann 动作 / 悬疑 / 惊悚 美国 英语 115.000000
181 头脑特工队 2015 nan 478719.000000 彼特·道格特 / 罗纳尔多·德尔·卡门 彼特·道格特 / 罗纳尔多·德尔·卡门 / 梅格·勒福夫 / 乔什·库雷 / 迈克尔·阿恩特 / 西蒙·里奇 / 鲍勃·彼德森 / 比尔·哈德尔 / 艾米·波勒 艾米·波勒 / 菲利丝·史密斯 / 理查德·坎德 / 比尔·哈德尔 / 刘易斯·布莱克 / 敏迪·卡灵 / 凯特林·迪亚斯 / 戴安·琳恩 / 凯尔·麦克拉克伦 / 波拉·庞德斯通 / 鲍比·莫尼汉 / 宝拉·佩尔 / 大卫·戈尔兹 / 弗兰克·奥兹 / 乔什·库雷 / 弗利 / 约翰·拉岑贝格 / 卡洛斯·阿拉斯拉奇 / 皮特·萨加尔 / 拉什达·琼斯 / 罗里·艾伦 / 约翰·齐甘 / 雪莉·琳恩 / 拉瑞恩·纽曼 / 帕丽斯·冯·戴克 喜剧 / 动画 / 冒险 美国 nan 95.000000
189 海街日记 2015 8.800000 335964.000000 是枝裕和 是枝裕和 / 吉田秋生 绫濑遥 / 长泽雅美 / 夏帆 / 广濑铃 / 大竹忍 / 堤真一 / 加濑亮 / 风吹淳 / 中川雅也 / 前田旺志郎 / 铃木亮平 / 坂口健太郎 / 树木希林 剧情 / 家庭 nan 日语 127.000000
192 惊魂记 1960 9.000000 202622.000000 阿尔弗雷德·希区柯克 约瑟夫·斯蒂凡诺 / 罗伯特·布洛克 安东尼·博金斯 / 维拉·迈尔斯 / 约翰·加文 / 珍妮特·利 / 马丁·鲍尔萨姆 / 约翰·麦克因泰 / 西蒙·奥克兰 / 弗兰克·艾伯森 / 帕特里夏·希区柯克 / 沃恩·泰勒 / 卢伦·塔特尔 / 约翰·安德森 / 莫特·米尔斯 / 吉特·卡森 / 维吉尼亚·格雷格 / 阿尔弗雷德·希区柯克 / 珍妮特·诺兰 / 罗伯特·奥斯本 / 海伦·华莱士 / Fletcher Allen / 沃尔特·培根 / 弗朗西斯·德塞尔斯 / 乔治·多克斯塔德 / 乔治·埃尔德雷奇 / 哈珀·弗莱厄蒂 / 萨姆·弗林特 / 弗兰克·基尔蒙德 / 泰德·奈特 / 帕特·麦卡弗里 / 汉斯-乔基姆·默比斯 / 弗雷德·谢威勒 悬疑 / 惊悚 / 恐怖 nan 英语 109.000000
193 黑天鹅 2010 8.600000 680102.000000 达伦·阿伦诺夫斯基 安德雷斯·海因斯 / 马克·海曼 / 约翰·J·麦克劳克林 娜塔莉·波特曼 / 米拉·库尼斯 / 文森特·卡索 / 芭芭拉·赫希 / 薇诺娜·瑞德 / 本杰明·米派德 / 克塞尼亚·索罗 / 克里斯汀娜·安娜波 / 詹妮特·蒙哥马利 / 塞巴斯蒂安·斯坦 / 托比·海明威 / 塞尔吉奥·托拉多 / 马克·马戈利斯 / 蒂娜·斯隆 / 亚伯拉罕·阿罗诺夫斯基 / 夏洛特·阿罗诺夫斯基 / 玛西娅·让·库尔茨 / 肖恩·奥哈根 / 克里斯托弗·加廷 / 黛博拉·奥夫纳 / 斯坦利·B·赫尔曼 / 库尔特·弗勒曼 / 帕特里克·赫辛格 / 莎拉·海伊 剧情 / 惊悚 美国 nan 108.000000
197 冰川时代 2002 8.600000 507275.000000 卡洛斯·沙尔丹哈 / 克里斯·韦奇 迈克尔·伯格 / 迈克尔·J·威尔森 / 彼得·阿克曼 雷·罗马诺 / 约翰·雷吉扎莫 / 丹尼斯·利瑞 / 杰克·布莱克 喜剧 / 动画 / 冒险 nan 英语 81.000000
257 浪潮 2008 8.700000 223511.000000 丹尼斯·甘塞尔 丹尼斯·甘塞尔 / 彼得·图万斯 / 约翰尼·道金斯 / 罗恩·比恩巴赫 / 罗恩·琼斯 于尔根·福格尔 / 弗雷德里克·劳 / 马克思·雷迈特 / 詹妮弗·乌尔里希 / 克里斯蒂安娜·保罗 / 雅各布·马琛茨 / 克里斯蒂娜·度·瑞格 / 埃利亚斯·穆巴里克 / 马克西米利安·福尔马尔 / 马克斯·毛夫 剧情 / 惊悚 nan 德语 107.000000

缺失值处理

删除缺失值

处理缺失值最简单的方式,当然是将缺失值出现的行全部删掉~

-> 现在,将缺失值出现的行全部删掉

df = df.dropna()

整体填充补全

除了删除缺失值最省事之外,将全部缺失值替换为一个 固定的值/文本 也是一个较为省事的方法’

-> 现在,将全部缺失值替换为 *

df = df.fillna('*') 

向上填充补全

从上一小节的查看数据中,不难发现整理数据是按照评分进行降序排列的

因此对于评分列的缺失值处理,我们可以用上一个电影的评分进行填充

-> 现在将评分列的缺失值,替换为上一个电影的评分

df['评分'] = df['评分'].fillna(axis=0,method='ffill')

整体均值填充补全

对于评价人数列的缺失值处理,我们可以使用整列的均值进行填充

-> 现在,将评价人数列的缺失值,用整列的均值进行填充

df['评价人数'] = df['评价人数'].fillna(df['评价人数'].mean())

上下均值填充补全

除了可以使用整列的均值进行填充,也可以使用缺失值位置的上下均值进行填充、

-> 现在,将评价人数列的缺失值,用上下数字的均值进行填充

df['评价人数'] = df['评价人数'].fillna(df['评价人数'].interpolate())

匹配填充补全

除了利用均值填充,有时还需要根据另一列的值进行匹配填充

-> 现在填充 “语言” 列的缺失值,要求根据 “国家/地区” 列的值进行填充

例如 《海上钢琴师》国家/地区为 意大利,根据其他意大利国家对应的语言来看,应填充为 意大利语

df['语言']=df.groupby('国家/地区').语言.bfill()

思考

还有其他方法可以实现吗?