数据可视化Python实现超详解【数据分析】

各位大佬好 ,这里是阿川的博客,祝您变得更强

个人主页在线OJ的阿川

大佬的支持和鼓励,将是我成长路上最大的动力

阿川水平有限,如有错误,欢迎大佬指正

Python 初阶
Python--语言基础与由来介绍
Python--注意事项
Python--语句与众所周知
数据清洗前 基本技能
数据分析---技术栈和开发环境搭建
数据分析---Numpy和Pandas库基本用法及实例
数据可视化前 必看
数据分析---三前奏:获取/ 读取/ 评估数据
数据分析---数据清洗操作及众所周知
数据分析---数据整理操作及众所周知
数据分析---统计学基础及Python具体实现

目录

  • 可视化介绍
  • 一维图表
    • 补充的话
  • 二维图表
    • 补充的话
  • 多维图表
    • 补充的话
  • 互相对比

可视化介绍

可视化 是数据分析中 很重要 的一个环节

  • 一图胜千言
    • 发现隐藏的关系趋势影响
    • 可视化本身也是一种探索数据分析数据方式
  • 可视化中的图表可从维度 主要分为一维图表二维图表多维图表互相对比图表
  • 主要用的 为:seabornmatplotlib
    • cmd安装pip install seabornpip install matplotlib

阿里云的镜像源

python 复制代码
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
  • jupyter中导入
    • import seaborn as sns
    • import matplotlib.pyplot as plt
      • 大部分我们使用的功能 都在pyplot的子模板下

一维图表

一维图表

  • 直方图 Histogram
    • 表示数据分布
      • 助于 展示数据频率分布
    • 横轴数据范围
    • 纵轴个数
    • 一个数值变量.
  • sns.histplot(变量名)
  • 密度图 KernelDensity
    • 表示数据分布
      • 平滑的曲线 ,更易看出分布形状
  • sns.kdeplot(变量名)
  • 箱型图 BoxPlot
  • 其中上界为最大值 或者上界等于第三四分位数加上1.5×四分位距 ,跟上界 进行比较 ,谁 取谁,作为上界
  • 其中下界为最小值 或者下界等于第一四分位数减去1.5×四分位距 ,跟下界 进行比较 ,谁 取谁,作为下界

这样做的好处是可以帮助我们发现 数据当中的异常值

  • sns.boxplot(变量名)
  • 小提琴图 ViolinPlot
    • 结合了密度图直方图箱形图
    • 横轴数据分布
    • 纵轴概率密度
  • sns.violinplot(变量名)

补充的话

上述这些一维图表中参数可以 传入DataFrame
(DataFrame名,x=" ",y=" ")

若要更改 一维图表中的标题标签
plt.title(" ")
更改 x轴标签
plt.xlabel(" ")
更改 y轴标签
plt.ylabel(" ")

因为matplotlib库中默认的字体,它不支持中文 ,所以要自己手动更换支持中文的字体
查看 支持中文的字体,如下:

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontManager

font_manager = FontManager()
print(set(f.name for f in font_manager.ttflist))

更换字体,如下:

python 复制代码
matplotlib.rc("font",family='Heiti TC')

二维图表

  • 折线图 LinePlot
    • 用于展示连续间隔或时间跨度上数值的变化 ,从而看出趋势变化
    • 两个 数值变量
    • 一个颜色 ,即可多表示一个分类变量
  • sns.lineplot(data=DataFrame名,x=" ",y=" ")
  • 饼图 PiePlot
    • 展示各个分类对应数值 之间的比例
    • 一个分类变量一个数值变量
  • plt.pie(DataFrame名["数值变量列]",labels=DataFrame名["分类变量列"])
    • autopct ="%.1f%%" 该参数可以显示百分比%可以告诉系统 ,这是用来展示格式字符串%%告诉系统 ,这是百分比结尾
  • 散点图 ScatterPlot
    • 展示两个数值变量关系
      • 可以看出两个变量 之间的相关性
    • x轴 :一个变量的值
    • y轴 :一个变量的值
  • sns.scatterplot(DataFrame名,x=" ",y=" ")
  • 或者 sns.scatterplot(x=DataFrame[" "],y=DataFrame[" "])
  • 条形图 BarPlot
    • 横轴分类类别
    • 纵轴数值
    • 一个分类变量一个数值变量
  • sns.barplot(data=DataFrame名,x=" ",y=" ")
    • estimator 该参数可以指定 纵轴的高度对应所属分类下的所有值的样式不写 该参数,则默认 纵轴高度对应所属分类下的所有值的平均值

但在条形图基础上 ,若纵轴记录个数 ,则

  • 计数图 countplot
    • sns.countplot(data=DataFrame名, x=" ") Y轴自动聚合成x里面的个数

补充的话

上述图表的颜色 有点不合时宜更新颜色
color="颜色 " 或者 sns. set_palette(" 色盘")

常用的颜色有:

这里推荐这个网站:中国色,里面有非常多美丽的颜色,调色师、设计师必备哦

常用 的色板有:


多维图表

更多维

面积大小颜色区分新的变量

  • 气泡图
    • 引入新的数值变量 ,用面积大小 来区分

    • plt.scatterplot(DataFrame,x=" ",y=" ",size=" ")

  • 热力图 Heatmap
    • 两个分类变量一个数值变量
    • x轴y轴 分别表示不同的分类变量颜色 代表数值变量
  • plt.heatmap(annot=True)
    • annot参数表示具体数值展示出来
  • 复式条形图
    • 在条形图的基础上 引入多个条柱 ,则表示多个分类变量
  • sns.barplot(data=DataFrame名,x=" ",y=" ",hue="分类变量 " )

补充的话

在基础图表的基础上 加一种颜色 加一下面积大小 ,即可表示 更多的变量
plt.scatterplot(DataFrame,x=" ",y=" ",hue=" ",size=" ")

更改图例位置 :
plt.legend(bbox_to_anchor=( 数字1 ,数字2))

  • 数字1 中有零/一可能性 ,数字2 中有零/一可能性
    • 数字一 表示图例在图表的左边 表示在图表的右边
    • 数字二 表示图例在图表的下面 表示在图表的上面

互相对比

将这些图表互相对比挖掘 出更多信息

在同一个单元格里输入 多个 相同的图表的公式

最后plt.show() 出来

此时多个相同图表 就在一个图上了。

  • binwidth 该参数可以改变图表的长度
  • label 该参数为图例标签

例如以直方图

那么最后呈现的结果若没有 展现出图例标签 ,则再加一个plt.legend()

密度图 也是同样的道理 ,但不需要binwidth 参数,因为它是一条平滑的曲线

箱形图

  • 没有 label和binwidth参数 ,只有y轴/x轴参数

小提琴图 也是同样的道理

但会显得很拥挤 ,更好选择是将分类变量 作为x轴的变量 ,即x=" "

若想将不同的类型的图 并排放在一起
fig,axes=plt.subplots(行,列,figsize=(高,宽))

  • fig 代表大图
  • axis 代表小图

这里是绘制空白图

想要的图形种类中 ,加入ax参数=axes[n]

  • n表示第n个子图 ,n从0开始

配对图 pairplot

  • 能将DataFrame中的数值变量 两两关系分布出来
    • 各变量分布直方图绘制出来
    • 不同变量 两两之间的关系 绘制成散点图
  • sns.pairplot(,hue=" 分类变量")
    • 可以探讨不同分类变量 之间的数值关系

好的,到此为止啦,祝您变得更强


想说的话

实不相瞒,写的这篇博客写了十一个小时(加上自己学习和纸质笔记,共十三小时 吧),很累希望大佬支持

道阻且长 行则将至

个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力

相关推荐
belldeep2 小时前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
dengqingrui1232 小时前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
我的心永远是冰冰哒2 小时前
ad.concat()学习
学习
ZZZ_O^O3 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
FreakStudio4 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
slomay4 小时前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
丶21364 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
hengzhepa4 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
_.Switch5 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技5 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm