【pandas小技巧】--缺失值的列
在实际应用中,数据集中经常会存在缺失值,也就是某些数据项的值并未填充或者填充不完整。缺失值的存在可能会对后续的数据分析和建模产生影响,因此需要进行处理。
pandas
提供了多种方法来处理缺失值,例如删除缺失值、填充缺失值等。删除缺失值可能会导致数据量减少,填充缺失值则能够尽量保留原始数据集的完整性,从而提高数据分析和建模的准确性和可靠性。
(资料图片仅供参考)
当数据集中存在缺失值时,我们通常需要进行以下操作:
检查缺失值的数量和分布情况,了解缺失值对数据的影响程度。根据数据的类型和业务需求,选择合适的缺失值处理方法,并对缺失值进行处理。在处理缺失值的同时,要注意保持数据集的一致性和完整性。处理完缺失值后,可以进行后续的数据分析和建模,从而得出更准确和可靠的结论。1. 缺失值统计首先我们随机创建一个包含缺失值的测试数据集,这里用到之前介绍过的创建测试数据的技巧。
import pandas as pddef get_random_missing_data(): df = pd.util.testing.makeMissingDataframe() return df[df.isna().any(axis=1)]df = get_random_missing_data()df
这里我封装了一个简单的函数get_random_missing_data
,通过这个函数,可以创建一个每行至少有一个缺失值的数据集。注意:这是随机创建的数据集,所以每次运行的结果会不一样。
统计缺失值很简单,首先通过isna
函数找出所有缺失的值,然后可以使用sum
或者mean
来统计缺失的数量和比例。
df.isna().sum()
sum
函数返回的是每一列缺失值的数量。
df.isna().mean()
mean
函数返回的值可以看做每一列缺失值占的比例。
处理缺失值时,有些场景为了保证数据的完整性,只能删掉有缺失的数据。删除缺失值有2个重要的参数:how
和 axis
。
how
有2个可选值:
axis
也有2个可选值:
how="any"
,axis=0
的情况:每行数据中只要有一个缺失值就删除该行。
df = pd.DataFrame( { "A": [1, 2, 3, np.nan], "B": [1, np.nan, 3, 4], "C": [1, 2, np.nan, 4], "D": [1, 2, 3, 4], })df.dropna(how="any", axis=0)
how="all"
,axis=0
的情况:每行数据中,全部值都缺失的行才删除。
df = pd.DataFrame( { "A": [1, np.nan, 3, np.nan], "B": [1, np.nan, 3, 4], "C": [1, np.nan, np.nan, 4], "D": [1, np.nan, 3, 4], })df.dropna(how="all", axis=0)
how="any"
,axis=1
的情况:每列数据中只要有一个缺失值就删除该列。
df = pd.DataFrame( { "A": [1, 2, 3, np.nan], "B": [1, np.nan, 3, 4], "C": [1, 2, np.nan, 4], "D": [1, 2, 3, 4], })df.dropna(how="any", axis=1)
how="all"
,axis=1
的情况:每列数据中,全部值都缺失的列才删除。
df = pd.DataFrame( { "A": [np.nan, np.nan, np.nan, np.nan], "B": [1, np.nan, 3, 4], "C": [1, 2, np.nan, 4], "D": [1, np.nan, 3, 4], })df.dropna(how="all", axis=1)
3. 填充缺失值填充缺失值一般使用fillna
函数指定填充什么样的值。比如:
df = pd.DataFrame( { "A": [1, 2, 3, np.nan], "B": [1, np.nan, 3, 4], "C": [1, 2, np.nan, 4], "D": [1, 2, 3, 4], })df.fillna(-1)
这里是用 -1
来填充的,根据实际情况可以使用任意合适的值来填充。
除了 fillna
函数之外,还有一个interpolate
函数,能够更加合理的填充缺失值。
df = pd.DataFrame( { "A": [1, 3, 4, np.nan], "B": [2, np.nan, 2, 4], "C": [3, 3, np.nan, 3], "D": [4, 1, np.nan, 4], })df.interpolate()
每个缺失值都是它上下两行的值的平均值。
如果只有上面行的值,那就直接用上面行的值。这里有个注意的地方:如果是第一行有缺失的话,那么是无法填充的。比如:
df = pd.DataFrame( { "A": [np.nan, 3, np.nan, np.nan], "B": [2, np.nan, 2, 4], "C": [3, 3, np.nan, 3], "D": [4, 1, np.nan, 4], })df.interpolate()
第一行的缺失值没有上一行可以参照,还是维持原来缺失的状态。所以使用 interpolate
进行填充时,注意第一行的缺失值状态,可以用 fillna
先处理第一行。
关键词:
相关阅读
-
【pandas小技巧】--缺失值的列
在实际应用中,数据集中经常会存在缺失值,也就是某些数据项的值并未填 -
北京服装学院研发射击比赛服助力中国射...
北京服装学院研发射击比赛服助力中国射击队在成都大运会摘金 -
日媒:福岛核污染水排海很可能在8月底正...
中新网8月7日电 据日本《朝日新闻》6日报道,多名日本政府消息人士 -
跟老板发生些纠纷口头辞职后老板说要一...
跟老板发生些纠纷口头辞职后老板说要一个月,现在过一半了没招到人 -
水炮警示菲律宾擅闯舰船!中国海警局要...
8月7日,中国海警局新闻发言人就仁爱礁问题答记者问。问:菲律宾海岸警 -
应聘业余爱好怎么写_业余爱好怎么写
1、所谓业余爱好不是填写你的专业学科,而是专业以外的,比如:书法、 -
bootloader有什么作用_bootloader是什么意思
1、在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可 -
印象西湖好看吗知乎_印象西湖好看吗
1、印象西湖,第一是老谋子的作品,第二场景和灯光。2、音响的确比西湖 -
震惊!4K、8K画质背后,竟然少不了AI的助力
“对于视频的画质,我现在最低只能够接受720P,最好是1080p。”早五... -
守候中的等候(关于守候中的等候简述)
,你们好,今天0471房产来聊聊一篇候中的等候,候中的等候简述的文章, -
百姓用药不必愁 “移动药房”来解忧
近期,有市民群众反映“社区卫生服务机构开药不便,药品种类欠缺,... -
酒店公关案例(酒店公关)
导读1、酒店公关主要负责‘酒店外交’和‘酒店营销’工作!。本文到此 -
3d机选号码摇一摇(3d机选号码)
导读1、837怎样。2、试试吧!。本文到此分享完毕,希望对大家有所帮助 -
为什么usb无法识别手机(为什么usb无法识别)
来为大家解答以上问题,为什么usb无法识别手机,为什么usb无法识别很多 -
市场前沿/数字人币国际化前景广阔\安...
经济观察家频道 -
高速怎么收费的
导读1、是按每公里计算的,载客和载货车是按座位、吨位计算。2、也就是 -
蓝色宝石滤色镜(关于蓝色宝石滤色镜简述)
,你们好,今天0471房产来聊聊一篇色宝石滤色镜,色宝石滤色镜简述的文 -
今生有你就值得的句子(今生有你就值得)
导读1、歌曲:今生有你就值得歌手:飞歌流星[ti:今生有你就值得][ar:飞 -
墨守陈规墨守成规哪个对(墨守陈规还是...
导读1、“墨守成规”与“墨守陈规”社会上有写“墨守成规”的,也有... -
每经热评丨引导上市公司建立稳健的独董...
8月4日,备受市场关注的《上市公司独立董事管理办法》正式出台,旨在解