<span role="heading" aria-level="2">Panadas对缺失值的处理</span>

# 这个类用来处理缺省值
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

# 读取电影数据
movie = pd.read_csv("../data/IMDB-Movie-Data.csv")

# print(pd.notnull(movie))

# print(np.all(pd.notnull(movie)))

#
# 1、删除
# pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan


#  不修改原数据 可以定义新的变量接受或者用原来的变量名
data = movie.dropna()

# print(data)

# 替换存在缺失值的样本的两列
# 替换填充平均值,中位数
# movie['Revenue (Millions)'].fillna(movie['Revenue (Millions)'].mean(), inplace=True)

# 替换所有缺失值:
for i in movie.columns:
    if np.all( pd.notnull(movie[i])) == False:
        # print(i)
        movie[i].fillna(movie[i].mean(), inplace=True)
# 不是缺失值nan,有默认标记的

wis = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data")
# 全局取消证书验证
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

# 先替换‘?’为np.nan
#
#     df.replace(to_replace=, value=)
#         to_replace:替换前的值
#         value:替换后的值
# 把一些其它值标记的缺失值,替换成np.nan
wis = wis.replace(to_replace='?', value=np.nan)
# 删除
wis = wis.dropna()

  • snull、notnull判断是否存在缺失值【知道】
    • np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True
    • np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False
  • dropna删除np.nan标记的缺失值【知道】
    • movie.dropna()
  • fillna填充缺失值【知道】
    • movie[i].fillna(value=movie[i].mean(), inplace=True)
  • replace替换具体某些值【知道】
    • wis.replace(to_replace="?", value=np.NaN)
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务