目录
1 缺失值处理
1.1 目的
①使用Python对数据进行缺失值分析,掌握各类库方法的使用。
②经过缺失值分析,掌握如何处理缺失值。
1.2 方法
①生成含有缺失值的数据集;
②对数据集进行缺失值分析;
③使用删除缺失值方法处理数据集。
1.3 源代码及结果
①导入 pandas、numpy库,生成一个含有缺失值数据的数据集:
import pandas as pd
import numpy as np #导入库
date=pd.DataFrame({'name':['张三','李四','王五','Bob',np.nan],'age':np.nan,18,30,20,25],'id':[1401,1402,1403,np.nan,1405]})
#创建一个含有缺失值的数据集
print(date) #打印原始数据集
②使用isnull(方法查看缺失值,使用 any()方法查看含有缺失值的列,使用 all()方法查看全部都是缺失值的列,并且将上述查看内容全部打印输出:
# isnull()方法查看缺失值,缺失值位置显示true,没有的位置显示fales
print(data.isnull())
# 获取含有缺失值的列
print(data.isnull().any())
# 获取全部都是缺失值的列
print(data.isnull().all())
③处理缺失值,使用 dropna()方法删除含有缺失值的行:
# 删除缺失值
print(data.dropna())
全部代码:
import pandas as pd
import numpy as np #导入库
data=pd.DataFrame({'name':['张三','李四','王五','Bob',np.nan],'age':[np.nan,18,30,20,25],'id':[1401,1402,1403,np.nan,1405]})#创建一个含有缺失值的数据集
print(data) #打印原始数据集
print(data.isnull())#isnull()方法查看缺失值,缺失值位置显示true,没有的位置显示fales
print(data.isnull().any())#获取含有缺失值的列
print(data.isnull().all())#获取全部都是缺失值的列
print(data.dropna())#删除缺失值
1.4 结果分析
导入python的pandas库和numpy库。pandas库有以下功能①数据文件读取/文本数据读取②索引、选取和数据过滤③算法运算和数据对齐④函数的应用和映射⑤重置索引。
本题中运用的是pandas的数据过滤获取功能,主要是通过DataFrame的相关方式可以获取对应的列或者数据形成一个新的DataFrame, 方便后续进行统计计算。在本题中,利用pandas库中的DataFrame创建一个含有缺失值的数据集。在python中分析缺失值的方法为isnull()方法,调用它可以生成一个新的数据集,没有数据的地方显示True,有数据的地方显示False;调用isnull()方法下的any()方法,可以查看含有缺失值的列有哪些;调用isnull()方法下的all()方法,可以查看全部都是缺失值的列有哪些;调用dropna()方法可以删除缺失值所在的行,这个方法也是处理缺失值的直接方法。
2 异常值处理
2.1 目的
在 Python 中对数据进行标准化操作,对标准化后的数据进行分析,制定筛选标准筛选出异常值,从而达到异常值分析的效果。
①使用 Python 对数据进行异常值分析,掌握各类库方法的使用;
②掌握对数据的均值、标准差的计算。
2.2 方法
①生成含有异常值的数据集;
②对数据进行标准化;
③对数据集进行异常值分析。
2.3 源代码及结果
①导入 pandas 库,并生成一个含有异常值的数据集,打印显示:
import pandas as pd #导入库
data=pd.DataFrame({'name':['A','B','C','D','E','F','G'],'cost':[2,127,4,6,3,13,14],'sales':[13,18,32,54,23,33,44]})#创建一个含有异常值的数据
print(data)
②先将源数据集复制一份(因为之后的标准化操作会覆盖源数据,所以需要备价然后对复制的数据的每一列数据进行标准化操作,并将标准化后的数据打印:
data1=data.copy()#防止将数据覆盖,复制一份进行操作
data1['cost']=(data1['cost']-data1['cost'].mean())/data1['cost'].std()
data1['sales']=(data1['sales']-data1['sales'].mean())/data1['sales'].std()
#计算两列数据的均值和标准差,对两列进行标准化
print(data1)
#标准化后数据,绝对值越大偏离程度越大
③制定一个筛选标准(标准化的数据绝对值越大,说明偏离越大,异常概率更大这里我们制定筛选标准为“cost 标准化列数据>2”:
# 制定一个筛选异常值的标准,对源数据进行筛选
print(data[data1['cost'].abs()>2])
#筛选出含有异常值的行数据
全部代码:
import pandas as pd #导入库
data=pd.DataFrame({'name':['A','B','C','D','E','F','G'],'cost':[2,127,4,6,3,13,14],'sales':[13,18,32,54,23,33,44]})
#创建一个含有缺失值的数据
#print(data)
data1=data.copy()#防止将数据覆盖,复制一份进行操作
data1['cost']=(data1['cost']-data1['cost'].mean())/data1['cost'].std()
data1['sales']=(data1['sales']-data1['sales'].mean())/data1['sales'].std()
#计算两列数据的均值和标准差,对两列进行标准化
print(data1)
print(data[data1['cost'].abs()>2])#制定一个筛选异常值的标准,对源数据进行筛选