首页 > 编程语言 >Python 学习记录 (4)

Python 学习记录 (4)

时间:2024-11-11 16:18:37浏览次数:1  
标签:count Category matrix 记录 Python sepal 学习 df length

Plotly常见可视化方案:以鸢尾花数据为例

简单介绍:

  1. Ploty库也有大量统计可视化方案,并且这些可视化方案具有交互化属性。
  2. 主要对鸢尾花数据进行处理与可视化。
  3. 所展示的结果为交互界面的截图情况,这里不能进行交互。

使用Plotly绘制散点图与箱型图,分类展示“花萼宽度”

说明:

  • 类似'species'这个分类标签,使用'Category'分析原始特征数据,如花萼宽带
import seaborn as sns
import pandas as pd
import plotly.express as px

df=sns.load_dataset("iris")
df['area']=df['sepal_length']*df['petal_width']
#计算”面积”,其中‘area'为新产生的一列
df['Category']=pd.qcut(df['area'],5,labels=['A','B','C','D','E'])
#pandas.qcut()方法根据’area'大小将数据大致分成5分=份且编号。

list_stats=['min','max','mean','median','std']
stats_by_area=df.groupby('Category')['area'].agg(list_stats)
#这里以Category为参照进行分组,之后对area进行计算统计量
stats_by_area['Range']=stats_by_area['max']-stats_by_area['min']
stats_by_area['Nunber']=df['Category'].value_counts()
#通过个方法相应的数值

#---画出箱型图----
fig = px.box(df,x = 'sepal_length',y = 'Category',
             color = 'Category',points='all',
             #color指定以什么来区分颜色,points来指明是否画点
             template="plotly_white",width=600,height=300,
             category_orders={"Category":["A","B","C","D","E"]},
             color_discrete_sequence=px.colors.qualitative.Pastel1,
             #指定颜色映射的调色板
             labels={"sepal_length":"Sepal Length (cm)"})
fig.show()

#---画出散点图-----
fig=px.scatter(df,x='sepal_length',y='petal_length',color='Category',
               marginal_x='box', marginal_y='box',
               #分别在x,y轴的边缘加上箱型图
               template="plotly_white",width=600,height=500,
               color_discrete_sequence=px.colors.qualitative.Pastel1,
               labels={"sepal_length":"Sepal Length (cm)",
                       "petal_length":"petal Length (cm)"})
fig.show()

结果:
imageimage


以鸢尾花种类,面积,长度范围,长宽比值为四个维度,并用太阳爆炸,冰柱图,矩形树状图可视化钻取

说明:

  1. 因原始数据没有相关的维度,故需要添加相关的维度
  2. 确定一下钻取顺序情况
  3. 对其进行可视化

import pandas as pd
import seaborn as sns
import plotly.express as px
#---传入数据并对数据进行加工----
df=sns.load_dataset("iris")
df['area']=df['sepal_length']*df['sepal_width']
df['Category']=pd.qcut(df['area'],5,labels=['A','B','C','D','E'])
#上面得到面积,这里根据面积来将数据划分成五等分

labels=["{0}~{1} cm".format(i,i+1) for i in range(4,8)]
#这里将长度也分成四分,为4~5,5~6,下面的right表明右开。
df["sepal_length_bins"]=pd.cut(df.sepal_length,range(4,9),right=False,labels=labels)

df['bi']=df['sepal_length']/df['sepal_width']
#以长宽作为依据划分label为每一区域的标签
df['Category1']=pd.qcut(df['bi'],4,labels=['ⅰ','ⅱ','ⅲ','ⅳ'])

dims=['species','Category','Category1','sepal_length_bins']#钻取顺序,为日冕图做准备
#下面以sepal_length为数值来源得到概率
prob_matrix_by_4=df.groupby(dims)['sepal_length'].apply(lambda x:x.count()/len(df))
prob_matrix_by_4=prob_matrix_by_4.reset_index()
prob_matrix_by_4.rename(columns={'sepal_length':'Ratio'},inplace=True)
#画出日冕图像
fig=px.sunburst(prob_matrix_by_4,path=dims,
                values='Ratio',width=800,height=800)
fig.show()
#通过pd.crosstab方法进行交叉计数,这里列最好为一层,方便后面转化长格式后对count的计数
count_matrix=pd.crosstab(index=[df.species,df.Category,df.Category1],
                         columns=df.sepal_length_bins,values=df.petal_length,aggfunc='count')
count_matrix=count_matrix.stack().reset_index()
count_matrix.rename(columns={0:'count'},inplace=True)
count_matrix=count_matrix[count_matrix['count']!=0]
#只保留不为0的,冰柱图面对0会报错。
fig=px.icicle(count_matrix,
              path=[px.Constant("all"),#在最左侧加入all.
                    'species','Category','Category1','sepal_length_bins'],
              values='count',color_continuous_scale='Blues',
              color='count',width=800,height=800)
fig.show()

#---画出矩形树状图----
fig=px.treemap(count_matrix,
               path=[px.Constant("all"),
                     'species','Category','Category1','sepal_length_bins'],
               values='count',color_continuous_scale='Blues',
               color='count',width=800,height=800)
fig.show()

结果:
日冕图:
image
冰柱图:
image
矩形树状图:
image

标签:count,Category,matrix,记录,Python,sepal,学习,df,length
From: https://www.cnblogs.com/hai-zei/p/18532126

相关文章

  • Python头歌~列表自学引导
    第一关,输入数据创建列表 第二关,计算每位选手的成绩 第三关,去除一个最高分和一个最低分 第四关,计算中位数成绩 第五关,去除弃权评委成绩 第六关,将平均成绩附加到列表末尾 第七关,读文件到二维列表 第八关,二维列表数据分析 第九关,成绩排序 ......
  • 荣登Nature! 持续学习(Continue Learning)取得最新突破
    2024深度学习发论文&模型涨点之——持续学习Nature发了一篇《Lossofplastisityindeepcontinuallearning》文章介绍了一种创新的算法——持续反向传播(ContinualBackpropagation),该算法通过在每次迭代中随机重置一小部分较少使用的神经元来保持网络的塑性。这种方法通过......
  • 漏洞挖掘实战教程—记录某次SRC引起的连锁漏洞挖掘,网络安全零基础入门到精通教程!
    前言最近这几篇文章一直在围绕学习干货板块去写了,个人的写作和总结能力也有了不小的提升,停笔一想,漏洞挖掘的实战咱们也不能含糊啊,哪怕是水洞,本次是某次SRC中的一个不起眼的资产,引起的多个漏洞,在文章的最后会归纳总结,不知道各位还记不记得之前画的思维导图虽然在往下更细......
  • 学习方法1
    看到马斯克的采访有感,突然感觉其实从小到大的教育方法在工作中的学习成长依然有效,于是记录下针对一些还没有入门的技术,比如我现在想要去学习做一门微信小程序的游戏,路径如下:了解问题为什么想要做微信小程序游戏,原因是什么?微信小程序游戏有那些分类,他们的区别是什么,对于实现......
  • [豪の学习笔记] CI/CD相关 - Docker
    一、docker常见命令单独下载镜像文件dockerpull查看本地镜像文件dockerimages删除本地镜像文件dockerrmi基于dockerfile构建自定义镜像dockerbuild将打包好的镜像保存在本地dockersave加载外部镜像文件dockerload将本地镜像推送到镜像仓库dockerpush创建并......
  • Spring学习笔记_30——事务接口PlatformTransactionManager
    PlatformTransactionManager是Spring框架中事务管理的核心接口,它负责管理事务的创建、提交和回滚等操作。源码/**Copyright2002-2020theoriginalauthororauthors.**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethis......
  • 算法学习—归并排序
    1.算法介绍 归并算法是一种由冯·诺伊曼发明的分治算法,相较于普通排序算法时间复杂度较低,运行效率高。通常情况下,归并算法的时间复杂度为O(nlogn)。2.算法思想以及大致步骤 归并算法主要运用到了分治以及归并的思想,主要步骤如下:首先将一个无序数组分为n个有序的单个数......
  • 算法学习—快速排序
    1.算法介绍   快速排序算法是一种高效排序算法,效率相比普通排序算法较高,通常情况下时间复杂度为O(nlogn),但在最坏情况下时间复杂度会提高到O(n^2)2.算法思想和大致步骤 快速排序算法主要用到了二分和递归的思想,主要有三个步骤:(1)在数组中选取一个元素作为基准值(pivot)......
  • LangChain 记忆组件深度解析:Chain 组件与 Runnable 深入学习
    在构建复杂的AI应用时,有效管理对话历史和上下文信息至关重要。LangChain框架提供了多种记忆组件,使得开发者能够轻松实现具有记忆功能的聊天机器人。本文将深入探讨LangChain中的记忆组件、Chain组件以及Runnable接口,帮助开发者更好地理解和使用这些强大的工具。LangChain......
  • [豪の学习笔记] Git的使用
    一、本地仓库1.1-工作流程1.2-本地仓库操作①全局配置:gitconfig--globaluser.name"用户名"gitconfig--globaluser.email"邮箱地址"②创建仓库:当需要让Git去管理某个项目时,就需要创建仓库。PS:创建仓库时使用的目录不一定要求是空目录,选择一个非空目录也可以......