数据分析学习笔记4-----处理缺失数据
处理缺失数据
对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。我们称其为哨兵值。
滤除缺失数据
过滤掉缺失数据的办法有很多种。你可以通过pandas.isnull或布尔索引的手工方法,但dropna可能会更实用一些。对于一个Series,dropna返回一个仅含非空数据和索引值的Series:
1 2 3 4 5 6 7 8 9 10 | In [ 15 ]: from numpy import nan as NA In [ 16 ]: data = pd.Series([ 1 , NA, 3.5 , NA, 7 ]) In [ 17 ]: data.dropna() Out[ 17 ]: 0 1.0 2 3.5 4 7.0 dtype: float64 |
填充缺失数据
通过一个常数调用fillna就会将缺失值替换为那个常数值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | In [ 27 ]: df = pd.DataFrame(np.random.randn( 7 , 3 )) In [ 28 ]: df.iloc[: 4 , 1 ] = NA In [ 29 ]: df.iloc[: 2 , 2 ] = NA In [ 30 ]: df Out[ 30 ]: 0 1 2 0 - 0.204708 NaN NaN 1 - 0.555730 NaN NaN 2 0.092908 NaN 0.769023 3 1.246435 NaN - 1.296221 4 0.274992 0.228913 1.352917 5 0.886429 - 2.001637 - 0.371843 6 1.669025 - 0.438570 - 0.539741 In [ 33 ]: df.fillna( 0 ) Out[ 33 ]: 0 1 2 0 - 0.204708 0.000000 0.000000 1 - 0.555730 0.000000 0.000000 2 0.092908 0.000000 0.769023 3 1.246435 0.000000 - 1.296221 4 0.274992 0.228913 1.352917 5 0.886429 - 2.001637 - 0.371843 6 1.669025 - 0.438570 - 0.539741 |
通过一个字典调用fillna,就可以实现对不同的列填充不同的值
1 2 3 4 5 6 7 8 9 10 | In [ 34 ]: df.fillna({ 1 : 0.5 , 2 : 0 }) Out[ 34 ]: 0 1 2 0 - 0.204708 0.500000 0.000000 1 - 0.555730 0.500000 0.000000 2 0.092908 0.500000 0.769023 3 1.246435 0.500000 - 1.296221 4 0.274992 0.228913 1.352917 5 0.886429 - 2.001637 - 0.371843 6 1.669025 - 0.438570 - 0.539741 |
数据转换
移除重复数据
1 2 3 4 5 6 7 8 9 10 11 12 13 | In [ 45 ]: data = pd.DataFrame({ 'k1' : [ 'one' , 'two' ] * 3 + [ 'two' ], ....: 'k2' : [ 1 , 1 , 2 , 3 , 3 , 4 , 4 ]}) In [ 46 ]: data Out[ 46 ]: k1 k2 0 one 1 1 two 1 2 one 2 3 two 3 4 one 3 5 two 4 6 two 4 |
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行(前面出现过的行)
1 2 3 4 5 6 7 8 9 10 | In [ 47 ]: data.duplicated() Out[ 47 ]: 0 False 1 False 2 False 3 False 4 False 5 False 6 True dtype: bool |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目