pandas基础属性方法随机整理(六)--- 缺失值处理

数据源:

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris = pd.read_csv(url)
iris.head()
Out[50]: 
     5.1        3.3      1.4      0.2     Iris-setosa
0             4.9          3.0           1.4          0.2     Iris-setosa
1             4.7          3.2           1.3          0.2     Iris-setosa
2             4.6          3.1           1.5          0.2     Iris-setosa
3             5.0          3.6           1.4          0.2     Iris-setosa
4             5.4          3.9           1.7          0.4     Iris-setosa

- 修改列名:

1)常规方法

iris.columns = ['sepal_length','sepal_width', 'petal_length', 'petal_width', 'class']

2) 推荐方法

iris.rename(columns = {'sepal_length':'sep_len','sepal_width':'sep_wid', 'petal_length':'pet_len', 'petal_width':'pet_wid', 'class':'cla'},inplace=True)`
  • 缺失值判断:
    1) iris.isnull().sum()
    2) pd.isnull(iris).sum()
iris.isnull().sum()
Out[55]: 
sep_len    0
sep_wid    0
pet_len    0
pet_wid    0
cla        0
dtype: int64

pd.isnull(iris).sum()
Out[56]: 
sep_len    0
sep_wid    0
pet_len    0
pet_wid    0
cla        0
dtype: int64
  • 设置缺失值
iris.ix[10:29,'pet_len'] = np.NaN
__main__:1: DeprecationWarning: 
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

iris.isnull().sum()
Out[58]: 
sep_len     0
sep_wid     0
pet_len    20
pet_wid     0
cla         0
dtype: int64
  • 填充缺失值
    iris.fillna(1.0,inplace=True)
iris.fillna(1.0,inplace=True)
iris.head(20)
Out[60]: 
    sep_len  sep_wid  pet_len  pet_wid          cla
0       4.9      3.0      1.4      0.2  Iris-setosa
1       4.7      3.2      1.3      0.2  Iris-setosa
2       4.6      3.1      1.5      0.2  Iris-setosa
3       5.0      3.6      1.4      0.2  Iris-setosa
....
17      5.7      3.8      1.0      0.3  Iris-setosa
18      5.1      3.8      1.0      0.3  Iris-setosa
19      5.4      3.4      1.0      0.2  Iris-setosa
  • 删除column
    iris.drop(‘cla’, axis=1,inplace=True) # axis=1/0 不能少
iris.drop('cla', axis=1,inplace=True)
iris.head()
Out[63]: 
   sep_len  sep_wid  pet_len  pet_wid
0      4.9      3.0      1.4      0.2
1      4.7      3.2      1.3      0.2
2      4.6      3.1      1.5      0.2
3      5.0      3.6      1.4      0.2
4      5.4      3.9      1.7      0.4
  • 滤除缺失值
    iris.dropna(thresh=3) # 非NA值低于3个的行删除
    iris.dropna(how=’any’,inplace=True) # 参数 how = ‘any’ 有1个缺失值的行就删除
    iris.dropna(axis=1, how=’all’) # 良好习惯,axis=1/0时刻保持关注
iris.iloc[:3,:] = np.NaN
iris.dropna(how='any', inplace=True)
iris.head()
Out[76]: 
   sep_len  sep_wid  pet_len  pet_wid
3      5.0      3.6      1.4      0.2
4      5.4      3.9      1.7      0.4
5      4.6      3.4      1.4      0.3
6      5.0      3.4      1.5      0.2
7      4.4      2.9      1.4      0.2
  • 重置索引
    iris.reset_index().head()
    iris.reset_index(drop=True).head() # drop=True 删除旧索引
iris.reset_index().head()
Out[77]: 
   index  sep_len  sep_wid  pet_len  pet_wid
0      3      5.0      3.6      1.4      0.2
1      4      5.4      3.9      1.7      0.4
2      5      4.6      3.4      1.4      0.3
3      6      5.0      3.4      1.5      0.2
4      7      4.4      2.9      1.4      0.2

iris.reset_index(drop=True).head()
Out[78]: 
   sep_len  sep_wid  pet_len  pet_wid
0      5.0      3.6      1.4      0.2
1      5.4      3.9      1.7      0.4
2      4.6      3.4      1.4      0.3
3      5.0      3.4      1.5      0.2
4      4.4      2.9      1.4      0.2

猜你喜欢

转载自blog.csdn.net/weixin_40040404/article/details/80754688
今日推荐