python是个啥?它一个强大的编程语言。数据分析是个啥?它一目了然,就是将数据进行分析,看看能得出什么结论。那python的数据分析到底是啥?其实就是通过这个语言将数据分析做出来,更加便捷化,更加速度化。今天带大家学习的是python数据可视化怎么做?

1、数据可视化概述

​ 数据可视化是在整个数据分析非常重要的一个辅助工具,可以清晰的理解数据,从而调整我们的分析方法。能将数据进行可视化,更直观的呈现

使数据更加客观、更具说服力

例如下面两个图为数字展示和图形展示:数据分析可视化的展示和图形

2、python中的数据可视化(Matplotlib)

数据可视化与python语言也有相应的结合,这就是今天我们要说的Matplotlib.

Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。 Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。

Matplotlib试图让简单的事情变得更简b单,让无法实现的事情变得可能实现。 只需几行代码即可生成绘图,直方图,折线图,条形图,错误图,散点图等。

为了简单绘图,pyplot模块提供了类似于MATLAB的界面,特别是与IPython结合使用时。 对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组函数完全控制线条样式,字体属性,轴属性等。

在使用Matplotlib之前,我们需要有一些准备的步骤,因为Matplotlib包不在python原生包含范围之内Python环境是使用anaconda安装的并创建了虚拟环境。Python环境在使用anaconda安装

注意:Windows下切换环境,不需要加source。如果是直接在官网下载并安装的Python,可以直接pip install Matplotlib

3. 常见图形种类及意义折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)数据分析中折线图的意义

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)python数据分析中散点图的意义

柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)python数据分析中柱状图的意义

饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

特点:分类数据的占比情况(占比)python数据分析中分布图的意义

4. Matplotlib画图的简单实现

# 导入模块

import matplotlib.pyplot as plt

# 在jupyter中执行的时候显示图片

%matplotlib inline

# 传入x和y, 通过plot画图

plt.plot([1, 0, 9], [4, 5, 6])

# 在执行程序的时候展示图形

plt.show()Matplotlib画图的简单实现

5. 对Matplotlib图像结构的认识Matplotlib图像结构

通常情况下,我们可以将一张Matplotlib图像分成三层结构:第一层是底层的容器层,主要包括Canvas、Figure、Axes;

第二层是辅助显示层,主要包括axis、spines、grid、legend、title等;

第三层为图像层,即通过plot、scatter等方法绘制的图像。

6. 折线图

6.1 折线图的绘制

from matplotlib import pyplot as plt

x = range(1,8) # x轴的位置

y = [17, 17, 18, 15, 11, 11, 13]

# 传入x和y, 通过plot画折线图

plt.plot(x,y)

plt.show()

from matplotlib import pyplot as plt

x = range(1,8) # x轴的位置

y = [17, 17, 18, 15, 11, 11, 13]

# 传入x和y, 通过plot画折线图

plt.plot(x, y, color='red',alpha=0.5,linestyle='--',linewidth=3)

plt.show()

'''基础属性设置color='red' : 折线的颜色alpha=0.5 : 折线的透明度(0-1)linestyle='--' : 折线的样式linewidth=3 : 折线的宽度'''

'''线的样式- 实线(solid)-- 短线(dashed)-. 短点相间线(dashdot): 虚点线(dotted)'''

6.2 折线的颜色和形状设置

from matplotlib import pyplot as plt

x = range(1,8) # x轴的位置

y = [17, 17, 18, 15, 11, 11, 13]

# 传入x和y, 通过plot画折线图

plt.plot(x, y, color='red',alpha=0.5,linestyle='--',linewidth=3)

plt.show()

'''基础属性设置

color='red' : 折线的颜色

alpha=0.5 : 折线的透明度(0-1)

linestyle='--' : 折线的样式

linewidth=3 : 折线的宽度

'''

'''线的样式

- 实线(solid)

-- 短线(dashed)

-. 短点相间线(dashdot)

: 虚点线(dotted)折线的颜色和形状设置

6.3 折点样式

from matplotlib import pyplot as plt

x = range(1,8) # x轴的位置

y = [17, 17, 18, 15, 11, 11, 13]

# 传入x和y, 通过plot画折线图

plt.plot(x, y, marker='o',color = 'red',markersize='20',markeredgecolor='g',markeredgewidth = 5)

plt.show()折点样式

折点形状选择:

6.4 设置的图片的大小和保存

from matplotlib import pyplot as plt

import random

x = range(2,26,2) # x轴的位置

y = [random.randint(15, 30) for i in x]

# 设置图片的大小

'''figsize:指定figure的宽和高,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张'''

# 根据画布对象

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y) # 传入x和y, 通过plot画图

# plt.show()

# 保存(注意: 要放在绘制的下面,并且plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。)

plt.savefig('./t1.png')

# 图片的格式也可以保存为svg这种矢量图格式,这种矢量图放在网页中放大后不会有锯齿

# plt.savefig('./t1.svg')

6.5 绘制x轴和y轴的刻度

from matplotlib import pyplot as plt

x = range(2,26,2) # x轴的位置

y = [random.randint(15, 30) for i in x]

plt.figure(figsize=(20,8),dpi=80)

# 设置x轴的刻度

# plt.xticks(x)

# plt.xticks(range(1,25))

# 设置y轴的刻度

# plt.yticks(y)

# plt.yticks(range(min(y),max(y)+1))

# 构造x轴刻度标签

x_ticks_label = ["{}:00".format(i) for i in x]

#rotation = 45 让字旋转45度

plt.xticks(x,x_ticks_label,rotation = 45)

# 设置y轴的刻度标签

y_ticks_label = ["{}℃".format(i) for i in range(min(y),max(y)+1)]

plt.yticks(range(min(y),max(y)+1),y_ticks_label)

plt.plot(x,y)

plt.show()绘制x轴和y轴的刻度

6.6 设置显示中文

# matplotlib只显示英文,无法显示中文,需要修改matplotlib的默认字体

# 通过matplotlib下的font_manager可以解决

# 两个小时内的每分钟跳动变化

from matplotlib import pyplot as plt

import matplotlib

import random

x = range(0,120)

y = [random.randint(10,30) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

# 加坐标轴信息

'''另外一种写法查看Linux、Mac下支持的字体终端执行: fc-list查看支持的中文(冒号前面有空格) fc-list :lang=zh查看Windows下的字体:“C:\Windows\Fonts\”可以自己下载字体文件(xxx.ttf),然后双击安装即可# my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)# plt.ylabel("天气",fontproperties=my_font)'''

#rotation将字体旋转45度

plt.xlabel('时间',rotation=45)

from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)

plt.ylabel("次数",fontproperties=my_font)

# 设置标题

plt.title('每分钟跳动次数',fontproperties=my_font,color='red')

plt.show()设置显示中文

6.7 一图多线

# 假设大家在30岁的时候,根据自己的实际情况,统计出来你和你同事各自从11岁到30岁每年交的男/女朋友的数量如列表y1和y2,请在一个图中绘制出该数据的折线图,从而分析每年交朋友的数量走势。

y1 = [1,0,1,1,2,4,3,4,4,5,6,5,4,3,3,1,1,1,1,1]

y2 = [1,0,3,1,2,2,3,4,3,2,1,2,1,1,1,1,1,1,1,1]

x = range(11,31)

# 设置图形

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y1,color='red',label='自己')

plt.plot(x,y2,color='blue',label='同事')

# 设置x轴刻度

xtick_labels = ['{}岁'.format(i) for i in x]

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)

plt.xticks(x,xtick_labels,fontproperties=my_font,rotation=45)

# 绘制网格(网格也是可以设置线的样式)

#alpha=0.4 设置透明度

plt.grid(alpha=0.4)

# 添加图例(注意:只有在这里需要添加prop参数是显示中文,其他的都用fontproperties)

# 设置位置loc : upper left、 lower left、 center left、 upper center

plt.legend(prop=my_font,loc='upper right')

#展示

plt.show()一图多线

7. 绘制散点图

'''题干3月份每天最高气温a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]'''

from matplotlib import pyplot as plt

from matplotlib import font_manager

import numpy as np

y = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]

x = range(1,32)

# 设置图形大小

plt.figure(figsize=(20,8),dpi=80)

# 使用scatter绘制散点图

size = np.random.randint(0, 100, 31) # 设置大小

plt.scatter(x,y,label= '3月份',alpha=0.5,s=size,c='red')

# 调整x轴的刻度

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=10)

_xticks_labels = ['3月{}日'.format(i) for i in x]

plt.xticks(x[::3],_xticks_labels[::3],fontproperties=my_font,rotation=45)

_yticks_labels = ['{}°C'.format(i) for i in range(min(y),max(y)+1)]

plt.yticks(range(min(y),max(y)+1),_yticks_labels)

plt.xlabel('日期',fontproperties=my_font)

plt.ylabel('温度',fontproperties=my_font)

# 图例

plt.legend(prop=my_font)

plt.show()python数据分析绘制散点图

8. 绘制条形图

'''假设你获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),请展示该数据a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没·原始时代','新喜剧之王']b = ['38.13','19.85','14.89','11.36','6.47','5.93']'''

from matplotlib import pyplot as plt

from matplotlib import font_manager

a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没·原始时代','新喜剧之王']

b = ['38.13','19.85','14.89','11.36','6.47','5.93']

# b =[38.13,19.85,14.89,11.36,6.47,5.93]

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=10)

plt.figure(figsize=(20,8),dpi=80)

# 绘制条形图

rects = plt.bar(a,[float(i) for i in b],width=0.3,color=['r','g','b','r','g','b'])

plt.xticks(range(len(a)),a,fontproperties=my_font)

plt.yticks(range(0,41,5),range(0,41,5))

# 在条形图上加标注(水平居中)

for rect in rects:

height = rect.get_height()

plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center")

plt.show()

横向条形图

# 横向柱状图

from matplotlib import pyplot as plt

from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=10)

a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没·原始时代','新喜剧之王']

b = [38.13,19.85,14.89,11.36,6.47,5.93]

plt.figure(figsize=(20,8),dpi=80)

# 绘制条形图的方法

'''height=0.3 条形的宽度'''

# 绘制横向的条形图

# plt.bar(y,x,width = 0.4)

rects = plt.barh(range(len(a)),b,height=0.5,color='r')

plt.yticks(range(len(a)),a,fontproperties=my_font,rotation=45)

# 在条形图上加标注(水平居中)

for rect in rects:

# print(rect.get_x())

width = rect.get_width()

plt.text(width, rect.get_y()+0.5/2, str(width),va="center")

plt.show()

并列和罗列条形图

import matplotlib.pyplot as plt

import numpy as np

index = np.arange(4)

BJ = [50,55,53,60]

Sh = [44,66,55,41]

# 并列

plt.bar(index,BJ,width=0.3)

plt.bar(index+0.3,Sh,width=0.3,color='green')

plt.xticks(index+0.3/2,index)

# 罗列

# plt.bar(index,Sh,bottom=BJ,width=0.3,color='green')

plt.show()

9. 饼状图

import matplotlib.pyplot as plt

import matplotlib

from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=10)

label_list = ["第一部分", "第二部分", "第三部分"] # 各部分标签

size = [55, 35, 10] # 各部分大小

color = ["red", "green", "blue"] # 各部分颜色

explode = [0, 0.05, 0] # 各部分突出值

"""绘制饼图x : (每一块)的比例,如果sum(x)>1,会将多出的部分进行均分;explode: (每一块)离开中心距离labels: (每一块)饼图外侧显示的说明文字;labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径autopct:控制饼图内百分比设置shadow:设置是否有阴影startangle:起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;pctdistance:类似于labeldistance,指定autopct的位置刻度,默认值为0.6;返回值:patches : matplotlib.patches.Wedge列表(扇形实例)l_text:label matplotlib.text.Text列表(标签实例)p_text:label matplotlib.text.Text列表(百分比标签实例)"""

plt.figure(figsize=(20, 8), dpi=100)

patches, l_text, p_text = plt.pie(size,

explode=explode,

colors=color,

labels=label_list,

labeldistance=1.1,

autopct="%1.1f%%",

shadow=False,

startangle=90,

pctdistance=0.6)

for t in l_text:

print(dir(t))

t.set_fontproperties(my_font)

for t in p_text:

t.set_size(18)

for i in patches:

i.set_color('pink')

break

plt.show()

pie 函数参数详解,英文原版请参见:matplotlib官网pie函数

10.总结

使用Matplotlib进行数据可视化十分方便,从而使数据更加直观的展现。Matplotlib进行数据可视化思维导图

我们通过以上几个直观绘制常见图形会发现根据不同需求选择出对的图形展示,是我们核心使用Matplotlib进行数据可视化的重中之重.而核心的Api使用起来又十分便捷.下方图片整理了不同图层结构下的Matplotlib进行了一个很好的总结。

python数据可视化的特点_python的数据分析到底是啥?python数据可视化怎么做?相关推荐

  1. python数据分析论文报告_Calaméo - 【原创】在PYTHON中进行主题模型LDA分析数据分析报告论文(代码+数据) ....

    [ 原 创 ] 定 制 代 写 开 发 辅 导 答 疑 r/python/spss/matlab/WEKA/sas/sql/C++/stata/eviews/Computer science assi ...

  2. python获取地图上经纬度_Python获取各大地图平台经纬度数据,哪家的数据最准确?...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 不知道大家会在什么场合使用地图 ...

  3. python选手的最后得分_python戏说NBA--NBA近二十年得分王各项数据之最

    python戏说NBApython戏说NBA,是一个用python来戏说NBA大事的系列栏目,这里将结合python开发技术,融合现今发生的NBA大事,做一些有趣的实验,让我们一起看热闹的同时,也能学 ...

  4. python如何全网爬取_Python爬取全网热点榜单数据

    一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取全网热点榜单数据 2.主题式网络爬虫爬取的内容与数据特征分析: 1)热门榜单: 2)数据有日期.标题.链接地址等 3.主题式网络爬虫设计方案概述 ...

  5. python如何读取excel宏_Python读取含有VBA宏的Excel数据

    因为现在项目在开发新的API,我需要根据API方法论去校验这个API的计算逻辑和计算结果是否正确,而且需要将计算逻辑用Excel记录下来,所以就用了Excel的VBA. 1. 什么是VBA? 具体含义 ...

  6. python都可以开发什么_Python的优势到底是什么?Python都能开发什么?

    Python的优点 简单:Python是一种代表简单主义思想的语言.阅读一个良好的Python程序就感觉像是在读英语一样.它使你能够专注于解决问题而不是去搞明白语言本身. 易学:Python极其容易上 ...

  7. 【机器学习-数据科学】第三节:数据分析实例 分析MovieLens电影数据

    数据分析实例 分析MovieLens电影数据 导入数据 数据合并 按性别查看各个电影的平均评分 活跃电影排行榜 电影投票数据 grouplens.org/datasets/movielens 把文件放 ...

  8. python中难的算法_Python算法很难吗?python神书《算法图解》PDF电子版分享给你

    许多小伙伴后台私信说,python算法让自己很头疼,有没有可以让算法像小说一样有趣的书籍资料呢?看这里吧!小宋为大家找到了这本<算法图解>的PDF电子版!让你在学习python的路上变得轻 ...

  9. python教程博客园_python学习(一)—简明python教程

    2016-04-12 15:59:47 1. 介绍 2. 安装Python 3. 最初的步骤 4. 基本概念 5. 运算符与表达式 6. 控制流 7. 函数 8. 模块 9. 数据结构 10. 解决问 ...

最新文章

  1. 手机上有android,android-在不同智能手机上的Videoview行为(具有...
  2. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)
  3. 智能车竞赛,AI视觉组赛题浅析
  4. Ubuntu中的超级兔子:Tweak安装教程
  5. FastJson 打Release 包解析失败
  6. C#语言实现的向导页设计
  7. 可打开可关闭的选项卡,单纯无污染,改改样式就能用
  8. 2020 操作系统第三次习题
  9. Vue面试题汇总目录
  10. Python3回文相关算法小结
  11. hdu 1159(最长公共子序列)
  12. linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用
  13. java解析xml的4种经典方法
  14. 分治法 —— 折半查找(递归与非递归)
  15. 《逻辑学导论》(第11版)学习(一)
  16. badbody下_badboy下载_badboy测试工具2.0.5官方免费版 - 系统之家
  17. altium怎么锁定_在AD软件中的锁定与解锁命令应该如何使用?
  18. 大数据处理平台简介和总结
  19. Nature:我叫“P值” 这是我的故事
  20. 45个小众而实用的NLP开源字典和工具

热门文章

  1. 【clickhouse】clickhouse时区
  2. 【Kafka】Kafka IllegalArgumentException: Could not find a ‘KafkaClient‘ entry in the JAAS configuratio
  3. 【MySQL】MySQL Insert into select 大量锁表导致无法插入
  4. 95-280-037-源码-资源管理-计算资源管理-TaskSlot-ResourceManage 中 Slot 的管理
  5. 【Flink】Flink Group by 操作 报错 Expression xxx is not being grouped
  6. 【Mac】mac下使用 找不到或无法加载主类
  7. mac下编译hadoop-2.7.4
  8. FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeExcepti
  9. 一文搞懂四种同步工具类
  10. 送你一份后端必备的 Git 分支开发规范指南