主要有两种方法可以了解Series和DateFrame数据格式的详细的缺失值信息,即isna和notna。
DataFrame.isna()
Series.isna() # 缺失值返回False
DataFrame.notna()
Series.notna() # 缺失值返回True
每一列缺失值的汇总
DataFrame.isna().sum() # 统计每列缺失值的总数
DataFrame.notna().sum() # 统计每列非缺失值的总数
可以通过info函数查看确实的具体信息
DataFrame.info()
挑选出缺失值和非缺失值的行
DataFrame[DataFrame.isna().any(1)] # 使用all就是全部缺失值,如果是any就是至少有一个是缺失值
DataFrame[DataFrame.notna().all(1)] # 使用all就是全部非缺失值,如果是any就是至少有一个不是缺失值
np.nan和None等值性比较的总结:(True表示被判定为相等):
类型 | None对None | NaN对NaN | None对NaN |
---|---|---|---|
单值 | True | False | False |
tuple(整体) | True | True | False |
np.array(逐个) | True | False | False |
Series(逐个) | False | False | False |
assert_equals | True | True | False |
Series.equals | True | True | True |
merge | True | True | True |
实践中,建议遵循以下三个原则即可:
1.在用pandas和numpy处理数据阶段将None,NaN统一处理成NaN,以便支持更多的函数。
2.如果要判断Series,numpy.array整体的等值性,用专门的Series.equals,numpy.array函数去处理,不要自己用==判断。
3.如果要将数据导入数据库,将NaN替换成None。
这是Pandas在1.0新版本中引入的重大改变,其目的就是为了(在若干版本后)解决之前出现的混乱局面,统一缺失值处理方法。
1.Nullable整型(记号为Int)
2.Nullable布尔(记号为boolean)
3.string类型 (它本质上也属于Nullable类型,因为并不会因为含有缺失而改变类型,string)
(a)逻辑运算
只需看该逻辑运算的结果是否依赖pd.NA的取值,如果依赖,则结果还是NA,如果不依赖,则直接计算结果
(b)算术运算和比较运算
这里只需记住除了下面两类情况,其他结果都是NA即可
pd.NA ** 0
1 ** pd.NA
这个函数的功能往往就是在读取数据时,就把数据列转为Nullable类型,是1.0的新函数
自动忽略为缺失值的组
s = pd.Series([1,10,15,-5,-2,np.nan,np.nan,28])
s.interpolate()
s.interpolate().plot()
(b)与索引有关的插值
method中的index和time选项可以使插值线性地依赖索引,即插值为索引的线性函数
s.interpolate(method='index').plot()
如果索引是时间,那么可以按照时间长短插值
s_t = pd.Series([0,np.nan,10]
,index=[pd.Timestamp('2012-05-01'),pd.Timestamp('2012-05-07'),pd.Timestamp('2012-06-03')])
s_t.interpolate().plot()
s_t.interpolate(method='time').plot()
ser = pd.Series(np.arange(1, 10.1, .25) ** 2 + np.random.randn(37))
missing = np.array([4, 13, 14, 15, 16, 17, 18, 20, 29])
ser[missing] = np.nan
methods = ['linear', 'quadratic', 'cubic']
df = pd.DataFrame({
m: ser.interpolate(method=m) for m in methods})
df.plot()
参考:
1.https://blog.csdn.net/daliangliangliangge/article/details/103683129?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase
2.joyful-pandas-master