本文目录一览:
python中利用pandas怎么处理缺省值
null/None/NaN
null经常出现在数据库中
None是Python中的缺失值,类型是NoneType
NaN也是python中的缺失值,意思是不是一个数字,类型是float
在pandas和Numpy中会将None替换为NaN,而导入数据库中的时候则需要把NaN替换成None
找出空值
isnull()
notnull()
添加空值
numeric容器会把None转换为NaN
In [20]: s = pd.Series([1, 2, 3])
In [21]: s.loc[0] = None
In [22]: s
Out[22]:
0 NaN
1 2.0
2 3.0
dtype: float641234567891012345678910
object容器会储存None
In [23]: s = pd.Series(["a", "b", "c"])
In [24]: s.loc[0] = None
In [25]: s.loc[1] = np.nan
In [26]: s
Out[26]:
0 None
1 NaN
2 c
dtype: object123456789101112123456789101112
空值计算
arithmetic operations(数学计算)
NaN运算的结果是NaN
statistics and computational methods(统计计算)
NaN会被当成空置
GroupBy
在分组中会忽略空值
清洗空值
填充空值
fillna
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
参数
value : scalar, dict, Series, or DataFrame
method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None(bfill使用后面的值填充,ffill相反)
axis : {0 or ‘index’, 1 or ‘columns’}
inplace : boolean, default False
limit : int, default None
downcast : dict, default is None
返回值
filled : DataFrame
Interpolation
replace
删除空值行或列
DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False)
参数
axis : {0 or ‘index’, 1 or ‘columns’}, or tuple/list thereof
how : {‘any’, ‘all’}
thresh : int, default None
subset : array-like
inplace : boolean, default False
返回
dropped : DataFrame
python填充缺失值
对于大多数情况而言,fillna方法是最主要的函数。通过一个常数调用fillna就会将缺失值替换为那个常数值。
fillna(value)
参数:value
说明:用于填充缺失值的标量值或字典对象
#通过常数调用fillna
书写方式:df.fillna(0) #用0替换缺失值
#通过字典调用fillna
书写方式:df.fillna({1:0.5,3:-1})
fillna(value,inplace=True)
参数:inplace
说明:修改调用者对象而不产生副本
#总是返回被填充对象的引用
书写方式:df.fillna(0,inplace=True)
fillna(method=ffill)
参数:method
说明:插值方式。如果函数调用时未指定其他参数的话,默认为“ffill”
对reindex有效的那些插值方法也可用于fillna:
In [23]: from numpy import nan as NA
In [21]: df=DataFrame(np.random.randn(6,3))
In [24]: df.ix[2:,1]=NA;df.ix[4:,2]=NA
In [25]: df
Out[25]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 NaN -0.263626
3 0.810230 NaN -0.277401
4 -0.403899 NaN NaN
5 -0.081091 NaN NaN
In [26]: df.fillna(method='ffill')
Out[26]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 -0.501728 -0.263626
3 0.810230 -0.501728 -0.277401
4 -0.403899 -0.501728 -0.277401
5 -0.081091 -0.501728 -0.277401
fillna(limit=2)
参数:limit
说明:(对于前向和后向填充)可以连续填充的最大数量
In [27]: df.fillna(method='ffill',limit=2)
Out[27]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 -0.501728 -0.263626
3 0.810230 -0.501728 -0.277401
4 -0.403899 NaN -0.277401
5 -0.081091 NaN -0.277401
fillna(data.mean())
只要稍微动动脑子,就可以利用fillna实现许多别的功能。比如说,可以传入Series的平均值或中位数:
In [28]: data=Series([1,NA,3.5,NA,7])
In [29]: data.fillna(data.mean())
python dataframe 如何去除缺失值
1、导入需要的库。import pandas as pd,import numpy as np,from sklearn.preprocessing import Imputer。
2、生成缺失数据。data=pd.DataFrame({'name':['Kite','Lily','Hanmei','Danny','Bob'],'English':[92,78,np.nan,23,82],'Math':[69,87,91,np.nan,90],'Chinese':[np.nan,78,96,np.nan,75]}),print(data)。
3、查看缺失值。data.isnull()#查看所有缺失值,data.isnull().any()#获取含有缺失值的列,data.isnull().all()#获取全部为NA的列。
4、删除缺失值。这种处理方式丢失的信息比较多。data2=data.dropna()。print(data2)可以看到,删除后,仅剩两行数据。
5、利用sklearn替换缺失值。当缺失值为数值型数据时,可用利用均值来替换。
6、利用pandas替换缺失值。data.fillna(0) #缺失值用0替换。
扩展资料
Python在执行时,首先会将py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,NET是一致的。
然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。
这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大;
说和Java 或NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。
基于C的Python编译出的字节码文件,通常是pyc格式。除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。
它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。
并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。