《动手学数据分析》第二章学习笔记
数据清洗及特征处理
1.缺失值观察与处理
查看数据信息
df.info()
缺失值统计
df.isnull().sum()
df.isnull().any()
缺失值处理
-
isnull()用来找出缺失值的位置,返回一个bull类型的掩码标记缺失值
-
notnull()是找出非空值并用bull值进行标记
-
dropna()就是字面意思,即丢掉缺失值
df.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
- fillna()的作用是填充缺失值
2.重复值观察与处理
查看重复值
df.duplicated()
处理重复值
duplicated():用于标记是否有重复值
duplicated(subset=None, keep=“first”)
drop_duplicates():用于删除重复值
drop_duplicated(subset=None, keep=“first”, inplace=False)
3.特征观察与处理
离散化处理
实现连续数据离散化处理主要基于两个函数,pandas.cut 和 pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等宽分箱处理,所谓等宽指的是每个箱子中的数据量是相同的
eg:将“年龄”分为5个区间
df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])
df.head()
数据重构
1.数据合并
数据横向合并为一张表(concat方法)
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
result_up.head()
数据纵向合并为一张表(concat方法)
list_down=[text_left_down,text_right_down]
result_down = pd.concat(list_down,axis=1)
result = pd.concat([result_up,result_down])
result.head()
pandas中的拼接方法
.concat() | pandas提供的方法,提供了axis设置可用于df间行方向(增加行,下同)或列方向(增加列,下同)进行内联或外联拼接操作 |
---|---|
.append(): | dataframe数据类型的方法,提供了行方向的拼接操作 |
.join(): | dataframe数据类型的方法,提供了列方向的拼接操作,支持左联、右联、内联和外联四种操作类型 |
.merge(): | pandas提供的方法,提供了类似于SQL数据库连接操作的功能,支持左联、右联、内联和外联等全部四种SQL连接操作类型 |
数据可视化
柱状图plot.bar()
unstack() :根据索引行列转换的函数
用stacked=True可以生成堆积条形图或者堆积柱形图
plot()kind参数表:kind参数——‘line’, ‘bar’, ‘barh’,‘kde’
plt.legend():用于给图像加图例
eg:设置图列位置
plt.legend(loc='upper center')
设置图例字体大小
设置图例边框及背景
plt.legend(loc='best',frameon=False) #去掉图例边框
设置图例名字及对应关系
legend = plt.legend([p1, p2], ["CH", "US"])
plt.scatter():用于画散点图
网格线:plt.grid() :显示网格线,1=True=默认显示;0=False=不显示
使用aspect 和 height来控制图形的清晰度,aspect * height 所得到的结果越大,图形越模糊
hue() :用来分类
shade() :若为True,则在kde曲线下面的区域中进行阴影处理
画图步骤:
1)定义画图的画布:fig = plt.figure( )
2)定义子图ax ,使用 ax= fig.add_subplot( 行,列,位置标)
3)用 ax.plot( )函数或者 df.plot(ax = ax)
4)结尾加plt.show()