数值处理(针对数字值的处理)

仅代表个人学习理解,不具有科学严谨的指导作用。

通常需要处理空、异常、重复值


而异常值的判断通常有强烈的主观色彩及业务逻辑关系的影响,所以判断规则不能准确说明。例如:一个产品平时日销售量平均是10单位,但某一天进行促销卖了100,这个数值在统计意义(正态分布)上可能是个异常值,但是有实际的业务意义。


DataFrame.isnull()方法 可以得出一个布尔值的DataFrame,其中False的是空值np.nan

0是代表行,1是代表列

DataFrame.isnull().any(axis=0或1)  可以返回行或者列的含有np.nan的值的一个布尔数组 其中axis=0是沿着行进行索引的意思,所以返回的是哪一列中含有np.nan值,而axis=1是沿着列经行索引的意思,所以返回的是哪一行含有np.nan的值。

DataFrame.dropna(axis=0或1) axis=0删除的是行含有np.nan值的一行,axis=1删除的是列含有np.nan值的一列


DataFrame.drop_dulicates()方法 可以去重 可以指定列 keep参数可以指定保留last后一条数据



from pandas import DataFrame,Series
import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
In [5]:
data = DataFrame(np.random.randn(6,4),columns = ['col1','col2','col3','col4'])
data.iloc[1:2,1] = np.nan
data.iloc[4,3] = np.nan
In [18]:
data.isnull()
Out[18]:
  col1 col2 col3 col4
0 False False False False
1 False True False False
2 False False False False
3 False False False False
4 False False False True
5 False False False False
In [25]:
data.isnull().any(axis=1)
Out[25]:
0    False
1     True
2    False
3    False
4     True
5    False
dtype: bool
In [24]:
data.isnull().any(axis=0)
Out[24]:
col1    False
col2     True
col3    False
col4     True
dtype: bool
In [26]:
data.isnull().all()
Out[26]:
col1    False
col2    False
col3    False
col4    False
dtype: bool
In [27]:
data1=data.dropna(axis=1)
In [28]:
data1
Out[28]:
  col1 col3
0 -1.310593 1.390500
1 -0.234247 -0.127881
2 -1.167354 -1.185917
3 1.340146 -0.522501
4 0.056414 1.740645
5 2.435139 2.231075
In [31]:
data2=data.dropna()
In [32]:
data2
Out[32]:
  col1 col2 col3 col4
0 -1.310593 0.945923 1.390500 -0.441068
2 -1.167354 0.095380 -1.185917 1.618987
3 1.340146 0.472835 -0.522501 0.693753
5 2.435139 1.290869 2.231075 0.636357
In [33]:
nan_model = Imputer(missing_values='NaN',strategy='mean',axis=0)
In [34]:
nan_model
Out[34]:
Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)
In [37]:
nan_result = nan_model.fit_transform(data)
In [38]:
nan_result
Out[38]:
array([[-1.31059328,  0.94592268,  1.39050006, -0.44106806],
       [-0.23424749,  0.62016568, -0.12788133, -1.22345664],
       [-1.16735373,  0.09537989, -1.18591717,  1.61898689],
       [ 1.34014565,  0.47283499, -0.52250133,  0.69375299],
       [ 0.05641423,  0.29582186,  1.74064535,  0.2569144 ],
       [ 2.43513913,  1.29086899,  2.23107545,  0.63635685]])
In [41]:
datafix1 = data.fillna(data.mean(axis=0))
In [42]:
data.mean(axis=0)
Out[42]:
col1    0.186584
col2    0.620166
col3    0.587654
col4    0.256914
dtype: float64
In [43]:
datafix1
Out[43]:
  col1 col2 col3 col4
0 -1.310593 0.945923 1.390500 -0.441068
1 -0.234247 0.620166 -0.127881 -1.223457
2 -1.167354 0.095380 -1.185917 1.618987
3 1.340146 0.472835 -0.522501 0.693753
4 0.056414 0.295822 1.740645 0.256914
5 2.435139 1.290869 2.231075 0.636357
In [44]:
datafix2 = data.fillna(method='bfill',limit=1)
In [45]:
datafix2
Out[45]:
  col1 col2 col3 col4
0 -1.310593 0.945923 1.390500 -0.441068
1 -0.234247 0.095380 -0.127881 -1.223457
2 -1.167354 0.095380 -1.185917 1.618987
3 1.340146 0.472835 -0.522501 0.693753
4 0.056414 0.295822 1.740645 0.636357
5 2.435139 1.290869 2.231075 0.636357
In [51]:
data1=['a',1]
data2=['b',2]
data3=['a',1]
data4=['b',2]
In [52]:
data2 = DataFrame([data1,data2,data3,data4],columns=['c1','c2'])
In [48]:
data2
Out[48]:
  c1 c2
0 a 1
1 b 2
2 a 1
3 b 4
In [49]:
datap = data2.drop_duplicates()
In [58]:
datap2 = data2.drop_duplicates('c2')
In [54]:
datap1
Out[54]:
  c1 c2
0 a 1
1 b 2
In [59]:
datap2
Out[59]:
  c1 c2
0 a 1
1 b 2

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33711966/article/details/79968435
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭