本次学习 ,让大家了解数据分析的一些操作,主要做了数据的各个角度的观察。那么在这里,我们主要是做数据分析的流程性学习,主要是包括了数据清洗以及数据的特征处理,数据重构以及数据可视化。这些内容是为数据分析最后的建模和模型评价做一个铺垫
task _2主要是数据清洗
数据清洗
我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗,本章我们将学习缺失值、重复值、字符串和数据转换等操作,将数据清洗成可以分析或建模的样子。
1.缺失的数据的查失和观察
1.1
缺失值观察
1.1.1
df.info()
得出各类别的丢失的量并给出数据类型
1.1.2
df.isnull().sum()
1.1.3
df[['Age','Cabin','Embarked']].head(3)
这里给出了很多方法,但多多益善。
2.对缺失值进行处理
2.1
查看某列的缺失值
df[df['Age']==None]=0
df.head(3)
df[df['Age']==.isnull()]=0
df.head(3)
df[df['Age'] == np.nan] = 0
df.head()
这三种方法,np.nan,None以及.isnull()哪个更好
数值列读取数据后,空缺值的数据类型为float64所以用None一般索引不到,比较的时候最好用np.nan
2.2对整个表来查缺失值
pythondf.dropna().head(3)
关于dropna的参数
1.df.dropna()
删除至少有一个元素缺失的行
2.df.dropna(axis=’ ‘)
0, or ‘index’ 删除包含缺失值的行
1, or ‘columns’ 删除包含缺失值的列
3.df.dropna(how=’ ')
‘any’ :如果有任何NA值,删除该行或列。
‘all’ : 如果所有值都是NA,删除该行或列
4.df.dropna(thresh=2)
只保留含有两个非na值的行
5.df.dropna(subset=[‘name’, ‘toy’])
定义在那些列中寻找缺失的值
df.fillna(0).head(3)
关于fillna的参数
value:scalar, dict, Series, or DataFrame
值来填充空洞(例如0),交替使用dict/Series/DataFrame值来指定每个索引(对于Series)或列(对于DataFrame)使用哪个值。不在dict/Series/DataFrame中的值将不会被填充。此值不能为列表。
3.重复值观察与处理
df[df.duplicated()]
对重复值进行处理
df = df.drop_duplicates()
df.head()
特征观察与处理
1.对年龄进行分箱(离散化)处理
(1)将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])
df.head()
(2) 将连续变量Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])
df.head(3)
(3) 将连续变量Age按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示
df['AgeBand'] = pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels = [1,2,3,4,5])
df.head()
(4) 将上面的获得的数据分别进行保存,保存为csv格式
df.to_csv('test_cut.csv')
所谓的分箱处理,刚开始不太清楚,后来看到等宽分箱:每个箱中的数据宽度相同。例如,数据集中最大值是215,最小值是5,分成3个箱,故每个箱的宽度应该为(215-5)/3=70,所以箱的宽度是70,这就要求箱中数据之差不能超过70.,并且要把不超过70的数据全放在一起。所以最后的答案是:
箱一:5,10,11,13,15,35,50,55,72;
箱二:92;
箱三:204,215。
原文链接:https://blog.csdn.net/ABCisCOOL/article/details/104984747
对文本变量进行转换
#查看类别文本变量名及种类
#方法一: value_counts
df['Sex'].value_counts()
#方法二: unique
df['Sex'].unique()