数据分析DAY06
pandas可视化
底层也是matplotlib
基本绘图
Series数据可视化
Series提供了plot方法以index作为x,以value作为y,完成数据可视化:
ts = pd.Series(np.random.randn(1000),
index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
ts.plot()
DataFrame数据可视化
DataFrame提供了plot方法可以指定某一列作为x,某一列作为y,完成数据可视化:
df3 = pd.DataFrame(np.random.randn(1000, 2),
columns=['B', 'C']).cumsum()
df3['A'] = np.arange(len(df3))
df3.plot(x='A', y='B')
高级绘图
plot()方法可以通过kind关键字参数提供不同的图像类型,包括:
类型 | 说明 |
---|---|
bar or barh | 柱状图 |
hist | 直方图 |
box | 箱线图 |
scatter Series不能使用散点图 | 散点图 |
pie Dataframe需要给subplots=True,或指定某一列 | 饼状图 |
相关API如下:
# 柱状图
series.plot.bar()
dataFrame.plot.bar()
dataFrame.plot.barh()
直方图
# 直方图
series.plot.hist(alpha=0.5, bins=5)
dataFrame.plot.hist(alpha=0.5, bins=5)
散点图
# 散点图
df.plot.scatter(x='a', y='b', c=col, colormap='');
饼状图
# 饼状图
series.plot.pie(figsize=(6, 6))
dataFrame.plot.pie(subplots=True, figsize=(6, 6), layout=(2, 2))
箱线图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yB6yBnkt-1617628857330)(C:/Users/xuming/Desktop/20.04%E7%A0%94%E5%8F%91/%E6%96%B0%E7%89%88%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E8%AF%BE%E4%BB%B6/images/%E7%AE%B1%E7%BA%BF%E5%9B%BE.png)]
# 箱线图
# 先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间
df.plot.box()
# 分组箱线图
df.boxplot(by='X')
Q3+1.5QIR #这组数据的正常数据的上限值
Q1-1.5QIR #这组数据的正常数据的下限值
#在正常取值范围内的数据,则为异常值,使用小圆点表示
箱线图的指标:
盒子顶部:Q3
盒子底部:Q1
盒子中的绿线:Q2
盒子的长度(即Q3-Q1的距离=QIR):表示50%的中心样本数据的分布
箱线图反应一组数据的集中趋势,四分位数的差可以反映一组数据的离散情况:
- 中位数高,表示平均水平较高;反之则表示平均水平较低。
- 箱子短,表示数据集中;箱子长,表示数据分散。
项目:分析影响学生成绩的因素
xxxxxxxx
项目:泰坦尼克号生存人员数据分析与可视化
项目:movielens电影数据分析与可视化
...
...
...
项目:二手房源信息数据分析与可视化
...
...
...
项目:电信流失用户数据分析与可视化
...
...
...
数据清洗:
1.检测与处理重复值
drop_duplicates去重方法
只对Series和DataFrame有效
该方法不会改变数据的原始排列
1.1 用法 :
DataFrame(Series).drop_duplicates(self,subset=None,keep=‘first’,inplace=False)
subset:是表示要去重的列,subset=None,默认表示全部列,只有全部列相同才认为是相同
keep:表示数据重复的时,保留的数据
first:保留第一个(默认保留第一个)
last:保留最后一个
False:一个不留
inplace:是否修改原数据,默认是False
2.检测与处理缺失值
识别缺失值:isnull (返回值为True,False)
识别非缺失值:notnull (返回值为True,False)
结合sum()函数,可以检测一共有多少缺失值,True=1,False=0
2.1删除法
DataFrame.dropna(self,axis=0,how=‘any’,subset=None,inplace=False)
axis:轴向 0为删除行,1为删除列,默认为0
subset:要判断的行/列,如果为None,表示所有行/所有列
how:表示的删除形式,any:只要此行/列中,有缺失值,直接删除 all:当全部行/列都为缺失值时,执行删除操作
2.2替换法
2.3差值法
3.检车预处理异常值
se)
axis:轴向 0为删除行,1为删除列,默认为0
subset:要判断的行/列,如果为None,表示所有行/所有列
how:表示的删除形式,any:只要此行/列中,有缺失值,直接删除 all:当全部行/列都为缺失值时,执行删除操作
2.2替换法
2.3差值法
3.检车预处理异常值