IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 动手学数据分析(4)——数据可视化 -> 正文阅读

[人工智能]动手学数据分析(4)——数据可视化

1.导入数据等

# Matplotlib 是Python中类似 MATLAB 的绘图工具
# seaborn就是在matplotlib基础上面的封装,方便直接传参数调用
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

text=pd.read_csv('result.csv')

2.数据可视化

2.1创建一个数据项,并对其进行基本可视化

# 画一条线
data=np.arange(10)
plt.plot(data)
plt.show()

思考回答:
这一部分需要了解可视化图案的的逻辑,知道什么样的图案可以表达什么样的信号
最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势

回答:

最基本可视化图案

柱形图

(bar)

根据柱形的高低来判断数据的多少,以直观的视觉角度描绘数据的基本变量。通常情况下,为了图像的视觉接受程度,通常一组数据不超过十个。

折线图

plot

是使用线条的形式反映数据随时间的变化趋势,数据越多时,反映的趋势过程越准确,这也是数据的特点,折线图通常处理的数据以时间变化为主要依据点。

饼图

(pie)

图像的展现形式与圆饼相似,将数据按照百分比的形式进行展示对比。同样,由于从视觉角度,人的肉眼对于百分比的精确度掌握不足,在选择数据时,以不超过六个为佳

? 散点图(scatter)

散点图作为三维数据的应用图,对于数据的划分也是依据多个不同的指标进行,散点图中单个数据的作用不明显,数据量越大,散点图的作用越明显,将数据集中的区域作为数据的分类标准。

#柱形图(bar)
x=np.arange(5)
y = np.random.random(5)
vert_bars = plt.bar(x, y)
plt.show()

#折线图(plot)
data=np.arange(10)
plt.plot(data)
plt.show()

#饼图(pie)
#自动根据数据的百分比画饼.。labels是各个块的标签,如子图一。autopct=%1.1f%%表示格式化    #百分比精确输出,explode,突出某些块,不同的值突出的效果不一样。pctdistance=1.12百分比距离#圆心的距离,默认是0.6.

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  # only "explode" the 2nd slice (i.e. 'Hogs')
plt.pie(sizes,autopct='%1.2f%%')
plt.show()

#散点图(scatter)
x = np.arange(10)
y = np.random.randn(10)
plt.scatter(x, y, color='red', marker='+')
plt.show()

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

sex=text.groupby('Sex')['Survived'].sum()
sex.plot.bar()
plt.show()
【思考】计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?
# 如何和男女生存人数可视化柱状图结合到一起?看到你的数据可视化
# 说说你的第一感受(比如:你一眼看出男生存活人数更多,那么性别可能会影响存活率)
#法1:将女生,男生作为横坐标,存货和死亡人数用不同颜色表示
text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')
plt.show()

#法2:将存活,死亡男生,女生分开
sex=text.groupby('Sex')['Survived'].sum()
dead=text.groupby('Sex')['Survived'].count()-sex
df=pd.Series(np.concatenate([sex,dead]))
df.plot.bar()
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.xticks([0,1,2,3],['存活男生','存活女生','死亡男生','死亡女生']),
plt.show()

注:plot(kind='bar',stacked=True)堆积条形图。

df=pd.Series(np.concatenate([sex,dead])).将sex,dead链接一个矩阵重新存储(默认下方)。

plt.rcParams['font.sans-serif'] = ['KaiTi']

plt.xticks([0,1,2,3],['存活男生','存活女生','死亡男生','死亡女生'])

当你使用汉字时需要将字体调整一下,不然会一直出现空格

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

# 排序后绘折线图
fare_sur=text.groupby('Fare')['Survived'].value_counts().sort_values(ascending=False)
fig = plt.figure(figsize=(20, 18))  #figure \的长宽
fare_sur.plot(grid=True)  #添加网格线
plt.legend() #加上图例
plt.show()

# 排序前
# fare_sur1 = text.groupby(['Fare'])['Survived'].value_counts()
# fig = plt.figure(figsize=(20, 18))
# fare_sur1.plot(grid=True)
# plt.legend()
# plt.show()

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

#法一
pclass_sur=text.groupby(["Pclass","Survived"])['Survived'].count().unstack().plot(kind='bar',stacked='True')
plt.show()

#法二
pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()
sns.countplot(x="Pclass", hue="Survived", data=text)
plt.show()

2.5 可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)

# 法一:先聚合,再排序
facet=text.groupby(['Age'])['Survived'].value_counts().sort_index(ascending=True)
facet.plot()
plt.show()

#法二:seaborn的使用
facet = sns.FacetGrid(text, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()
plt.show()

2.6可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)

#法一
# facet = sns.FacetGrid(text, hue="Pclass",aspect=3)
# facet.map(sns.kdeplot,'Age',shade= True)
# facet.set(xlim=(0, text['Age'].max()))
# facet.add_legend()
# plt.show()

#法二
text.Age[text.Pclass == 1].plot(kind='kde')
text.Age[text.Pclass == 2].plot(kind='kde')
text.Age[text.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")

Pyecharts

pyecharts优点:

  • 简洁的API设计,支持链式调用

  • 多种主题可选,丰富的参数设置

  • 可交互的可视化效果,且可移植到PPT中

  • 提供了常用图表类型接口,包括matplotlib和seaborn不支持的一些图表:例如词云、可视化地图等

pyecharts步骤:

1.设置通用项

#主题选择作为图表初始化参数进行设置
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))

2.?选择图表

  • pyecharts将图表类的每个方法都返回了self本身,这样每个方法的返回值都是该图表实例,进而实现链式调用

3. 设置图表参数

3类图表参数设置类型,分别是图表设置项、通用设置项、系列设置项。

  • 图表设置项是具体到某个特定图表对象的设置参数,各图表可选设置参数不同

  • 通用设置项最为常用,例如图表初始化设置就属于通用设置中的一项,另外包括标题、坐标轴、可视化缩放条等都属于通用设置项

  • 系列设置项则可以用于设置图表的某些具体参数,例如label可设置数据标签是否显示以及位置等

  • set_global_opts()
    set_series_opts()

4. 输出结果

  • render()输出到网页中

  • render_notebook()在jupyter中即时显示,具体区分notebook和jupyter lab两种,可在全局参数中设置

  • make_snapshot()可直接输出为png图片。但如此一来则失去交互能力。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:20:39  更:2021-11-23 12:24:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:25:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码