python实现数据可视化超详细讲解
作者:在线OJ的阿川
可视化介绍
可视化是数据分析中 很重要 的一个环节
- 一图胜千言
- 发现隐藏的关系、趋势、影响
- 可视化本身也是一种探索数据,分析数据的方式
- 可视化中的图表可从维度主要分为一维图表和二维图表和多维图表及互相对比图表
- 主要用的库为:seaborn和matplotlib
- 在cmd中安装pip install seaborn和pip install matplotlib
阿里云的镜像源:
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库中默认的字体,它不支持中文,所以要自己手动更换支持中文的字体
查看支持中文的字体,如下:
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))
更换字体,如下:
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=" 分类变量")
- 可以探讨不同分类变量之间的数值关系
以上就是python实现数据可视化超详细讲解的详细内容,更多关于python数据可视化的资料请关注脚本之家其它相关文章!