Pandas 缺失数据
1|0第6章 缺失数据¶
In [1]:
Out[1]:
0|1一、缺失观测及其类型¶
In [2]:
Out[2]:
In [3]:
Out[3]:
对DataFrame使用会返回布尔表¶
In [4]:
Out[4]:
但对于DataFrame我们更关心到底每列有多少缺失值¶
In [5]:
Out[5]:
此外,可以通过第1章中介绍的info函数查看缺失信息¶
In [6]:
(b)查看缺失值的所以在行¶
以最后一列为例,挑出该列缺失值的行¶
In [7]:
Out[7]:
In [8]:
Out[8]:
In [9]:
Out[9]:
In [10]:
Out[10]:
In [11]:
Out[11]:
在用equals函数比较时,自动略过两侧全是np.nan的单元格,因此结果不会影响¶
In [12]:
Out[12]:
其次,它在numpy中的类型为浮点,由此导致数据集读入时,即使原来是整数的列,只要有缺失值就会变为浮点型¶
In [13]:
Out[13]:
In [14]:
Out[14]:
In [15]:
Out[15]:
此外,对于布尔类型的列表,如果是np.nan填充,那么它的值会自动变为True而不是False¶
In [16]:
Out[16]:
但当修改一个布尔列表时,会改变列表类型,而不是赋值为True¶
In [17]:
Out[17]:
In [18]:
Out[18]:
In [19]:
Out[19]:
In [20]:
Out[20]:
In [21]:
Out[21]:
它的布尔值为False¶
In [22]:
Out[22]:
修改布尔列表不会改变数据类型¶
In [23]:
Out[23]:
In [24]:
Out[24]:
在传入数值类型后,会自动变为np.nan¶
In [25]:
Out[25]:
只有当传入object类型是保持不动,几乎可以认为,除非人工命名None,它基本不会自动出现在Pandas中¶
In [26]:
Out[26]:
在使用equals函数时不会被略过,因此下面的情况下返回False¶
In [27]:
Out[27]:
In [28]:
Out[28]:
In [29]:
Out[29]:
In [30]:
Out[30]:
In [31]:
Out[31]:
In [32]:
Out[32]:
In [33]:
Out[33]:
In [34]:
Out[34]:
In [35]:
Out[35]:
3. Nullable类型与NA符号¶
这是Pandas在1.0新版本中引入的重大改变,其目的就是为了(在若干版本后)解决之前出现的混乱局面,统一缺失值处理方法¶
"The goal of pd.NA is provide a “missing” indicator that can be used consistently across data types (instead of np.nan, None or pd.NaT depending on the data type)."——User Guide for Pandas v-1.0¶
官方鼓励用户使用新的数据类型和缺失类型pd.NA¶
In [36]:
Out[36]:
In [37]:
Out[37]:
它的好处就在于,其中前面提到的三种缺失值都会被替换为统一的NA符号,且不改变数据类型¶
In [38]:
Out[38]:
In [39]:
Out[39]:
In [40]:
Out[40]:
In [41]:
Out[41]:
In [42]:
Out[42]:
In [43]:
Out[43]:
In [44]:
Out[44]:
In [45]:
Out[45]:
In [46]:
Out[46]:
In [47]:
Out[47]:
In [48]:
Out[48]:
In [49]:
Out[49]:
In [50]:
Out[50]:
In [51]:
Out[51]:
In [52]:
Out[52]:
In [53]:
Out[53]:
此外,和object类型的一点重要区别就在于,在调用字符方法后,string类型返回的是Nullable类型,object则会根据缺失类型和数据类型而改变¶
In [54]:
Out[54]:
In [55]:
Out[55]:
In [56]:
Out[56]:
In [57]:
Out[57]:
4. NA的特性¶
In [58]:
Out[58]:
In [59]:
Out[59]:
In [60]:
Out[60]:
In [61]:
Out[61]:
In [62]:
Out[62]:
取值不明直接报错¶
In [63]:
In [64]:
Out[64]:
In [65]:
Out[65]:
其他情况:¶
In [66]:
Out[66]:
In [67]:
Out[67]:
In [68]:
Out[68]:
In [69]:
Out[69]:
In [70]:
Out[70]:
In [71]:
Out[71]:
In [72]:
Out[72]:
In [73]:
Out[73]:
0|1二、缺失数据的运算与分组¶
1. 加号与乘号规则¶
使用加法时,缺失值为0¶
In [74]:
Out[74]:
使用乘法时,缺失值为1¶
In [75]:
Out[75]:
使用累计函数时,缺失值自动略过¶
In [76]:
Out[76]:
In [77]:
Out[77]:
In [78]:
Out[78]:
In [79]:
Out[79]:
In [80]:
Out[80]:
0|1三、填充与剔除¶
1. fillna方法¶
(a)值填充与前后向填充(分别与ffill方法和bfill方法等价)¶
In [81]:
Out[81]:
In [82]:
Out[82]:
In [83]:
Out[83]:
(b)填充中的对齐特性¶
In [84]:
Out[84]:
返回的结果中没有C,根据对齐特点不会被填充¶
In [85]:
Out[85]:
2. dropna方法¶
(a)axis参数¶
In [86]:
Out[86]:
In [87]:
Out[87]:
In [88]:
Out[88]:
(b)how参数(可以选all或者any,表示全为缺失去除和存在缺失去除)¶
In [89]:
Out[89]:
(c)subset参数(即在某一组列范围中搜索缺失值)¶
In [90]:
Out[90]:
0|1四、插值(interpolation)¶
1. 线性插值¶
In [91]:
Out[91]:
In [92]:
Out[92]:
In [93]:
Out[93]:
此时的插值与索引无关¶
In [94]:
Out[94]:
In [95]:
Out[95]:
In [96]:
Out[96]:
如果索引是时间,那么可以按照时间长短插值,对于时间序列将在第9章详细介绍¶
In [97]:
Out[97]:
In [98]:
Out[98]:
In [99]:
Out[99]:
In [100]:
Out[100]:
In [101]:
Out[101]:
(b)limit_direction表示插值方向,可选forward,backward,both,默认前向¶
In [102]:
Out[102]:
(c)limit_area表示插值区域,可选inside,outside,默认None¶
In [103]:
Out[103]:
In [104]:
Out[104]:
0|1五、问题与练习¶
1. 问题¶
2. 练习¶
In [105]:
Out[105]:
In [106]:
Out[106]:
__EOF__
作 者:Hichens
出 处:https://www.cnblogs.com/hichens/p/13282963.html
关于博主:莫得感情的浅度学习机器人
版权声明:@Hichens
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人