前言
首先我们做数据分析,想要得出最科学,最真实的结论,必须要有好的数据。而实际上我们一般面对的的都是复杂,多变的数据,所以必须要有强大的数据处理能力,接下来,我从我们面临的最真实的情况,一步一步教会大家怎么做。
1.数据的读取
(1)读取模块
Import pandas as pd
Import numpy as np
(2)读取表格的全部数据
df = pd.read_csv(".data/HR.csv")
(3)读取你所需要的数据
sl_s=df["sactisfaction_level"]
2. 数据的处理
2.1.异常值(空值)处理
2.1.1删除
首先,第一步是对空值的处理。
有两种,一种直接删除,另一种指代。
如果数据多,想简单一点,就直接删除,方法都很简单。
首先,建立一个DataFrame表
1.为了确定是否含有空值:
df.isnull() #如果含有空值,返回True
2.删除
df.dropna() #去掉含空值的行
如果想要删除某一个属性含空值的行就加入subset参数
df.dropna(subset=["B"]) #去掉B属性含空值的行
判断是否有重复的数据:
df.duplicated(["A"]) #A属性中重复的数据返回True
删除A属性重复的行
df.drop_duplicates(["A"])
df.drop_duplicates(["A"],keep=False) #删除A属性全部重复的行
df.drop_duplicates(["A"],keep=first) #删除A属性全部重复的行,保留第一个
df.drop_duplicates(["A"],keep=last) #删除A属性全部重复的行,保留最后一个
2.1.2指代
有些数据非常重要,不能删除,那我们就选择指代,也就是替换
#含空值的数据被替换为“b*”
df.fillna("b*")
#E属性中的含空值的数据被替换成该属性的平均值
df.fillna(df["E"].mean())
#插值替换
如果含空值的元素为最后一个,那么空值的数据替换成和上一个数据一样
如何含空值的元素为中间,那么空值的数据被(上+下)/2代替
df["E"].interpolate()
#3次样条插值 order 参数就是几次样条插值
df["E"].interpolate(method="spline",order=3)
*函数
(4)异常值分析(含有就返回True) --isnull()
sl_s.isnull()
主要表示没有空值
(5)提取异常值的该属性信息
sl_s[sl_s.isnull()] (6)提取异常值的表格全部信息
df[df["sactisfaction_level"].isnull()] (7)丢弃异常值 --dropna()
sl_s=sl_s.dropna()
注:删除为空的异常值
可以利用where()把异常数据赋空,然后利用dropna()删除
(8)填充异常值 --fillna()
sl_s=sl_s.fillna()
(9)平均值 --mean()
sl_s.mean()