空值和缺失值的不同:
python 中:
空值:‘’,[],(),None,Null,等容器对象只要是空的默认就是false
| python | pandas |
|---|---|
| 空值:‘’,[],(),None,Null,等容器对象只要是空的默认就是false | 缺失值: 在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可, |
| – | 空值: 唯一标识 “” |
那么我们如何处理pandas中的缺失值和它的空值呢?
处理缺失值的相关函数:
df.dropna()
df.fillna()
df.isnull()
df.isna()
首先重点强调一下上述函数是不能够处理空值的
举个例子
import numpy as np
let=['',2,3,4,5]
let1=['心',None,'wo','ren','号']
let2=[6,9,np.nan,5,7]
data=pd.DataFrame({'a':let,'b':let1,'c':let2})

接下来我们打印缺失值
for i in data.columns.tolist():
print(data[i].isnull().sum())
输出
0
1
1
#所以,可以看出空值和缺失值是不同的,正确的方式后面将会讲到
所以,可以看出空值和缺失值是不同的,正确的方式后面将会讲到
3.函数具体解释
DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
函数作用:删除含有空值的行或列
axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
thresh:一行或一列中至少出现了thresh个才删除。
subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。
例子:
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
"toy": [np.nan, 'Batmobile', 'Bullwhip'],
"born": [pd.NaT, pd.Timestamp("1940-04-25"),pd.NaT]})
print df

默认参数:删除行,只要有空值就会删除,不替换。
print df.dropna()
print df

print “delete colums”
print df.dropna(axis=1) #delete col

print “所有值全为缺失值才删除”
print df.dropna(how=‘all’)

print “至少出现过两个缺失值才删除”
print df.dropna(thresh=2)

print “删除这个subset中的含有缺失值的行或列”
print df.dropna(subset=[‘name’, ‘born’])

**DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, kwargs)
函数作用:填充缺失值
value:需要用什么值去填充缺失值
axis:确定填充维度,从行开始或是从列开始
method:ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现
limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
示例:
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, 4]],
columns=list('ABCD'))
print df
print "横向用缺失值前面的值替换缺失值"
print df.fillna(axis=1,method='ffill')
print "纵向用缺失值上面的值替换缺失值"
print df.fillna(axis=0,method='ffill')

print df.fillna(0)

不同的列用不同的值填充:

对每列出现的替换值有次数限制,此处限制为一次

DataFrame.isna()
判断是不是缺失值:

DataFrame.isnull()和isna()的方法是一样的,只是它的一个别名。
替换空值:
在空值的处理中,我们一般可以先将空值替换为np.nan,缺失值的形势,再按照缺失值的方式进行统计和使用
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, "", 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, "", 4]],
columns=list('ABCD'))
print df

如上,缺失值是NAN,空值是没有显示。
替换空值代码:需要把含有空值的那一列提出来单独处理,然后在放进去就好。
clean_z = df['C'].fillna(0)
clean_z[clean_z==''] = 'hello'
df['C'] = clean_z
print df

本文探讨了Python中的空值(如' ', [], () 和 None)与Pandas中缺失值的区别,并介绍了处理Pandas缺失值的函数,如dropna(), fillna(), isnull()和isna()。重点讲解了这些函数的参数和用法,例如dropna()的axis, how, thresh和inplace参数,以及fillna()的value和method参数。文章通过示例展示了如何使用这些函数来处理数据中的空值和缺失值。"
115934131,10325428,MATLAB GUI实现太赫兹无损检测数据分析系统,"['太赫兹光谱处理', 'MATLAB', '图像分析', '数据可视化', '无损检测']
1万+

被折叠的 条评论
为什么被折叠?



