动手学数据分析 TASK4 数据可视化

本篇主要展示数据可视化过程,数据仍基于此前经过清洗和重构的泰坦尼克号沉船乘客数据。主要介绍一下Python数据可视化库Matplotlib。数据可视化可以让我们更好的看到数据建模过程中每一个关键步骤的结果如何,可以用来优化方案,是一个很有用的技巧。

2.7 数据可视化

开始前导入相应库和数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#加载数据
df = pd.read_csv('result.csv')
df.head(2)

在这里插入图片描述
【思考】最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势)

  1. line plot, 折线图适合可视化某个属性值随时间变化的走势,用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系;也能给出某时间段内的「整体概览」,看看数据在这段时间内的发展情况。
  2. bar plot, 水平柱状图或垂直柱状图,参数stacked=True,可以设置叠状柱形图,是最常见的可视化表示方法,非常适合用于对比大小、直观
  3. pie plot, 饼图,明确显示数据的比例情况,尤其适合渠道来源分析等场景
  4. box plot, 箱盒图,能方便显示数字数据组的四分位数, 可以垂直或水平的形式出现。通常用于描述性统计,是以图形方式快速查看一个 或多个数据集的好方法,便于发现数据异常值
  5. scatter plot, 散点图,针对离散数据,用于判断两个变量之间的联系
  6. contour plot,等高线图 在地理课中讲述山峰山谷时绘制的图形,在机器学习中也会被用在绘制梯度下降算法的图形中
  7. histogram plot, 直方图是一种对数值频率进行离散化显示的条形图。数据点被分割成离散的,均匀间隔的箱子,并绘制每个箱子中的数据点的数量。用来查看数据的分布特征。
  8. Radar Chart 雷达图,又称为「蜘蛛图」、「极地图」或「星图」,是用来比较多个定量变量的方法,可用于查看哪些变量具有相似数值,或者每个变量中有 没有任何异常值;也可用于查看数据集中哪些变量得分较高/低,是显示性能表现的理想之选。
  9. Density Plot)密度图又称为「密度曲线图」,用于显示数据在连续时间段内的分布状况。
  10. Word Cloud 字云图 也称为「标签云图」、「词云」等, 每个此的大小与其出现频率成正比,以此显示不同单词在给定文本中的出现频率,然后将所有的字词排在一起,形成云状图案。

2.7.1 可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)

>>>sex = df.groupby('Sex')['Survived'].sum()
>>>sex
Sex
female    233
male      109
Name: Survived, dtype: int64

>>>sex.plot.bar()
>>>plt.title('survived')
Text(0.5,1,'survived')

在这里插入图片描述
**【思考】**计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?

>>>df.groupby(['Sex','Survived'])['Survived'].count()
Sex     Survived
female  0            81
        1           233
male    0           468
        1           109
Name: Survived, dtype: int64

#按性别分存活与死亡人数
sex_survived = df.groupby(['Sex','Survived'])['Survived'].count().unstack()
sex_survived

在这里插入图片描述
【注】这里的unstack用法见python pandas stack和unstack函数
表格在行列方向上均有索引(类似于DataFrame),花括号结构只有“列方向”上的索引(类似于层次化的Series),结构更加偏向于堆叠(Series-stack,方便记忆)。stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。
在这里插入图片描述

>>>died = sex_survived[0]
>>>died
Sex
female     81
male      468
Name: 0, dtype: int64

#画出死亡人数柱形图
died.plot.bar()
plt.title('died')

在这里插入图片描述

2.7.2 可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)

# 计算男女中死亡人数 1表示生存,0表示死亡
sex_survived.plot.bar()

在这里插入图片描述

sex_survived.plot(kind='bar',stacked='True') 
#stack参数负责将条形柱堆叠起来

在这里插入图片描述

2.7.3 可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)

# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
fare_survived = df.groupby(['Fare','Survived'])['Survived'].count().unstack()
fare_survived.head(8)

在这里插入图片描述

fare_survived.plot() 
#plot默认为折线图

在这里插入图片描述

2.7.4 可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)

# 1表示生存,0表示死亡
pclass = df.groupby(['Pclass','Survived'])['Survived'].count().unstack()
pclass

在这里插入图片描述

pclass.plot.bar() #可以看到一等舱存活率最高,三等舱死亡人数最多

在这里插入图片描述
【总结】以上三个任务,得出结论:

  1. 女性的存活人数更多,存活比率更大
  2. 低票价的人死亡人数多,死亡概率大
  3. 头等舱的存活概率大,三等舱的死亡概率大(舱位等级越低,存活率越低,舱位等级越高,存活率越高)
2.7.5 可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)

形式一:直方图

# 以死亡为例,找出死亡的个案所对应的年龄
df.Age[df.Survived == 0]
0      22.0
4      35.0
5       NaN
6      54.0
7       2.0
12     20.0
13     39.0
14     14.0
16      2.0
......

# 以直方图的形式展现
df.Age[df.Survived == 0].hist(bins=5)

在这里插入图片描述

#将不同年龄的人生存与死亡人数数据分布叠在一起做对比
df.Age[df.Survived == 0].hist(bins=5,alpha=0.5)
df.Age[df.Survived == 1].hist(bins=5,alpha=0.5)
#后面的alpha参数为修改颜色透明度使更直观可见

#添加图例
plt.legend((0,1)) 
 #添加x,y坐标标题
plt.xlabel('age')
plt.ylabel('count')
#添加图标题
plt.title('Age_Survived') 

在这里插入图片描述
可以看出,年龄小的乘客的存活概率要比年龄大的存活概率要大。接下来,我们将直方图标准化,纵坐标改为分布密度

#alpha参数为修改颜色透明度使更直观可见,density表示概率密度
df.Age[df.Survived == 0].hist(bins=5,alpha=0.5,density = 1)
df.Age[df.Survived == 1].hist(bins=5,alpha=0.5,density = 1)
#添加图例
plt.legend((0,1)) 
#添加x,y坐标标题
plt.xlabel('age')
plt.ylabel('density') 
#添加图标题
plt.title('Age_Survived_density') 

用曲线来分别拟合存活与死亡的概率密度,只需加入两步命令

#添加密度曲线
df.Age[df.Survived == 0].plot.density()
df.Age[df.Survived == 1].plot.density() 

在这里插入图片描述
形式二:区域图

df4 = df.groupby(['Age', 'Survived'])['Survived'].count().unstack()
# df4.plot(kind='pie',subplots=True,stacked=True)
# df4.plot.bar(stacked=True)
df4.plot(kind='area',subplots=False,stacked=True, figsize=(20, 20),fontsize=20)

在这里插入图片描述
从area图中可以看出,泰坦尼克号小孩中青年存活的存活的数目较多,老年人存活率很低

形式三:面积图
除了matplotlib包,我们还可以使用seaborn画图工具

#运用seaborn画图工具
facet = sns.FacetGrid(df, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, df['Age'].max()))
facet.add_legend()

在这里插入图片描述

2.7.6 可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)
#  以一等舱为例画出其年龄分布的概率密度函数
df.Age[df.Pclass == 1].plot.density() 

在这里插入图片描述
对仓位等级标签进行排序

>>>unique_pclass = df.Pclass.unique()
>>>unique_pclass.sort()
>>>unique_pclass
array([1, 2, 3], dtype=int64)

将不同等级舱位的概率密度函数画在一张图上

for i in unique_pclass:
    df.Age[df.Pclass == i].plot.density() 
plt.xlabel('age')
plt.legend(unique_pclass)

在这里插入图片描述
使用seaborn画图包

import seaborn as sns
# linewidth、legend分别表示线条宽度和图例,legend默认为True
for i in unique_pclass:
    sns.kdeplot(df.Age[df.Pclass == i],shade=True,linewidth=0,legend=False)

在这里插入图片描述

for i in unique_pclass:
    sns.kdeplot(df.Age[df.Pclass == i],shade=True)
plt.legend(unique_pclass)

在这里插入图片描述
可以看出头等舱的人一般年龄偏大,三等舱年龄分布较为年轻

【总结】:
数据可视化的本质是最快最直观的理解数据要表达什么。除了本文提到的matplotlib、seaborn库之外,还有如pyecharts,bokeh等诸多可视化模块,简要介绍可参考以下文章:
这10个python数据可视化库,通吃任何领域
深度盘点!整理了 38 个 python 数据可视化库
Pandas的奇淫技巧-数据可视化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可视化数据分析是指使用Python编写爬虫程序来获取数据,然后使用可视化工具对数据进行分析和展示的过程。 在这个过程中,我们可以使用Python的各种库和框架来实现数据的爬取和处理。常用的爬虫库包括BeautifulSoup、Scrapy等,而数据分析和可视化则可以使用Matplotlib、Pandas、Seaborn等库来实现。 首先,我们需要定位到需要爬取的数据源。在引用中提到的例子中,我们可以通过爬取短文网(https://www.duanwenxue.com/jingdian/zheli/)来获取文章数据。 接下来,我们可以使用爬虫实现方法,例如在引用中提到的定位到爬取数据的方法来编写爬虫程序。通过解析网页的HTML结构,我们可以提取所需的数据,并保存到本地或者数据库中。 一旦数据被爬取并保存,我们可以使用数据可视化的方法来进行分析和展示。例如,我们可以使用Matplotlib绘制柱状图、折线图等来展示文章数量的统计情况,如引用中的将短文网的各类文章做一个统计。 此外,我们还可以对某一类文章进行更深入的分析。通过使用Pandas和Seaborn等库,我们可以对文章的文字长度、情感倾向等进行统计和可视化分析,以获得更多有意义的信息。 总结起来,Python爬虫可视化数据分析是一个将爬取到的数据进行处理、统计和展示的过程。通过使用Python中的各种库和框架,我们可以实现爬虫程序的编写、数据的获取和处理,以及数据的可视化分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python爬虫及数据可视化分析](https://blog.csdn.net/Tbaodeng/article/details/111825063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python项目开发,毕业设计,开心麻花影视作品分析系统,含源码和使用说明.zip](https://download.csdn.net/download/sohoqq/88282650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值