当前位置:首页>python>AI编程时代更需要的底层能力培养,Python数据分析(四)| 能力打通:iris数据可视化分析

AI编程时代更需要的底层能力培养,Python数据分析(四)| 能力打通:iris数据可视化分析

  • 2026-10-11 07:44:38
AI编程时代更需要的底层能力培养,Python数据分析(四)| 能力打通:iris数据可视化分析
本系列是我之前给学生们培训『如何利用Python进行数据分析』的课程代码,即使在AI coding盛行的时代,它也是非常实用且必要的学习项。
AI时代,古法编程已是一股清流,但相信我,
那些花在啃底层、拆原理、写原生代码上的时间,最终都会变成你在AI时代的核心竞争力!

课程代码(教学级)和数据集已整理到网盘,内容更全面,

关注『AI Power Lab』,对话框输入“iris”免费获取~

Python数据分析系列教程

1. AI编程时代更需要的底层能力培养,Python数据分析(一) | NumPy基础教程+面试题串讲

2. AI编程时代更需要的底层能力培养,Python数据分析(二) | Pandas基础教程+面试题串讲

3. AI编程时代更需要的底层能力培养,Python数据分析(三)| 数据可视化教程+面试题串讲

4. 能力打通:iris数据可视化分析(本篇)

鸢尾花(Iris)数据集是数据分析与机器学习中最经典的数据集之一,包含三种鸢尾花的测量数据,
今天我们把前面几篇教程讲解的Numpy、Pandas、可视化串起来实践一遍,进行一次深度的可视化数据分析,全面直观地掌握一个数据集的整体/细节情况,便于进一步特征工程、建模分析等。

01

数据读取和处理

本次实践我们需要用到以下依赖库
#引入相关模块import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns#内嵌绘图,可以省略掉plt.show()这一步%matplotlib inline%config InlineBackend.figure_format = 'retina'
读取并查看鸢尾花数据集
iris=pd.read_csv("D:\DM\python\iris.txt")iris.head()#数据行列数iris.shape#数据集信息iris.info()#数据集统计特征iris.describe()#统计鸢尾花种类数以及各种类样本数iris["species"].value_counts()
执行上述代码,你将看到,
  1. iris数据集共150条样本,每条样本有5个特征,前四个特征为数值类型、后一个特征为字符类型
  2. 数据集中没有缺失值,数据完整
  3. 150个样本分布在3个种类中,每个种类有50个样本
处理数据集
  • 异常值处理(iris数据集干净,不涉及)
  • 缺失值处理(iris数据集干净,不涉及)
  • 按品种切分数据
#按品种切分数据versicolor=iris[iris.species=="Iris-versicolor"]virginica=iris[iris.species=="Iris-virginica"]setosa=iris[iris.species=="Iris-setosa"]print(versicolor.shape,virginica.shape,setosa.shape)# 输出(50, 5) (50, 5) (50, 5)

02

可视化&分析

观察各品种样本均衡度
基于饼图,
#统计各品种样本数,存放在list中species_count=pd.DataFrame(iris["species"].value_counts())species=species_count.index.tolist()count=species_count.species.tolist()fig=plt.figure(figsize=(8,8))plt.pie(count,labels=species,colors=['c','orange','gray'],startangle=90,\       explode=(0.08,0,0),autopct='%1.1f%%')plt.axis('equal')
从饼图可以看到,样本分布均匀
观察不同品种各属性的统计特征
基于箱线图,
#直接利用seaborn快速绘图fig=plt.figure(figsize=(12,10))ax1=fig.add_subplot(2,2,1)sns.boxplot(data=iris,x="species",y="sepal_length")plt.title("不同品种鸢尾花花萼长度箱线图",fontsize=16,fontweight="bold")ax2=fig.add_subplot(2,2,2)sns.boxplot(data=iris,x="species",y="sepal_width")plt.title("不同品种鸢尾花花萼宽度箱线图",fontsize=16,fontweight="bold")ax3=fig.add_subplot(2,2,3)sns.boxplot(data=iris,x="species",y="petal_length")plt.title("不同品种鸢尾花花瓣长度箱线图",fontsize=16,fontweight="bold")ax4=fig.add_subplot(2,2,4)sns.boxplot(data=iris,x="species",y="petal_width")plt.title("不同品种鸢尾花花瓣宽度箱线图",fontsize=16,fontweight="bold")
从以上箱线图的分布,已经可以看出各品种花朵的形状
1.setosa品种的花瓣长宽都非常小(花朵很小啊),与其他两个品种形成较大差异,该品种花萼长度在三个品种中最短,花萼宽度却是最长的;还可以看到,setosa品种的花萼远大于其花瓣,如下图:
2.versicolor品种的花瓣长宽、花萼长度都处于三个品种的中间水平,而其花萼宽度普遍是最短的,该品种花萼与花瓣大小可比,如下图:
3.virginica品种的花瓣长宽是三个品种最大的(花朵普遍较大),花萼呈现长窄状,如下图:
观察不同品种各属性值的分布情况
基于直方图,
#plt.style.use("ggplot")ax=sns.FacetGrid(iris,hue='species',size=4).map(plt.hist,'sepal_length').add_legend()bx=sns.FacetGrid(iris,hue='species',size=4).map(plt.hist,'sepal_width').add_legend()cx=sns.FacetGrid(iris,hue='species',size=4).map(plt.hist,'petal_length').add_legend()dx=sns.FacetGrid(iris,hue='species',size=4).map(plt.hist,'petal_width').add_legend()
  1. 与箱线图类似,可以很直观的看到,setosa品种的花瓣是最小的,virginica品种的花瓣最大
  2. 从数值分布来看,不论哪个品种,花萼的长宽总是大于花瓣的
观察不同品种两两属性的特征
基于散点图,
plt.style.use("bmh")plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus'] = Falseax=sns.FacetGrid(iris,hue="species",size=6).map(plt.scatter,'sepal_length','sepal_width').add_legend()plt.title("各品种花萼长宽散点图",fontsize=16,fontweight="bold")bx=sns.FacetGrid(iris,hue="species",size=6).map(plt.scatter,'petal_length','petal_width').add_legend()plt.title("各品种花瓣长宽散点图",fontsize=16,fontweight="bold")
  1. 从花瓣长宽散点图来看,品种之间具有良好区别度,setosa品种花瓣最小
  2. 从花萼长宽散点图来看,versicolor和virginica品种的数据较为混杂
  3. 综合来看,setosa品种具有很好的区别度,可以通过花瓣、花萼尺寸很好的识别出来;versicolor和virginica品种花萼数据较为混杂,需要结合花瓣尺寸共同识别

03

关联性分析(进阶)

多变量图
快速观察不同品种各变量的分布情况以及属性两两之间的关系
sns.pairplot(iris,hue="species")
多变量图其实融合了前述的散点图、直方图,可以快速了解数据集统计分布情况
热力图(特征工程常用)
相关性分析对于后续特征选择非常重要,鸢尾花数据集特征较少,不需要特征选择,这里仅作为示例.
  • 目的:观察各属性与品种的相关性
  • 方法:将品种编码,分析各属性与品种的关系
#使用映射函数map()将species各字符值映射到数值iris["species"]=iris.species.map({'Iris-setosa':1,'Iris-versicolor':2,'Iris-virginica':3})fig=plt.figure(figsize=(10,10))sns.heatmap(iris.corr(),vmax=1,square=True,annot=True)
  1. 看species相关性,花瓣长宽值越大,花萼宽度越小,品种编码越大,即,越倾向于virginica品种;
  2. species相关性中,4各属性的相关系数都较大,因此,若以识别品种为目的建模,那么需要选择所有4个属性为特征
  3. 看属性之间的相关性,
    • 花萼长度越长,则花瓣长宽就越大,而花萼宽度会减小
    • 花萼宽度越宽,则花萼长度、花瓣长宽都会减小
    • 花瓣长度越长,则花萼长度、花瓣宽度就越大,而花萼宽度减小
    • 花瓣宽度越宽,则花萼长度、花瓣长度就越大,而花萼宽度减小
抛砖引玉,至此,你已经学会了如何利用Python进行数据分析,灵活结合Numpy和Pandas,利用matplotlib和seaborn挖掘隐藏在数据下的规律,你会发现数据真的很有意思!
恭喜你已经跃入数据科学的海洋,超棒,继续加油吧 ~❥(^_-)
AI时代,古法编程已是一股清流,但相信我,
那些花在啃底层、拆原理、写原生代码上的时间,最终都会变成你在AI时代的核心竞争力!

课程代码(教学级)和数据集已整理到网盘,内容更全面,

关注『AI Power Lab』,对话框输入“iris”免费获取~

已经看到这里啦,如果觉得不错,随手点个点赞、转发、喜欢吧~

如果想第一时间收到推送,可以给我个星标⭐哦~

你们的支持和鼓励,是我持续更新的最大动力 ❥(^_-)

往期推荐

我用Andrej Karpathy的LLM wiki思路实现了“活”的个人知识库(附模板)

智能体搭建| 如何用OpenClaw搭建你的“一人公司”(附完整配置模板)

OpenClaw进化| Obsidian+Ollama,用RAG打造真正懂你的小龙虾

你一定用得上的智能体skills推荐,主流技能市场盘点

深度拆解Token消耗逻辑,OpenClaw/Hermes/Claude省钱攻略大公开!

最新文章

随机文章