sns数据分析

news2024/11/28 10:43:55

探索性数据分析

这一部分目的在于了解数据,包括数据是什么类型,数据有什么特点

数据信息

print(data.shape)
data.info()

(1086, 12)
<class 'pandas.core.frame.DataFrame'>
Index: 1086 entries, 2020/7/1 0:00 to nan
Data columns (total 12 columns):
 #   Column   Non-Null Count  Dtype  
---  ------   --------------  -----  
 0   水生根茎类    1060 non-null   float64
 1   花叶类      1037 non-null   float64
 2   花菜类      1080 non-null   float64
 3   茄类       1066 non-null   float64
 4   辣椒类      1080 non-null   float64
 5   食用菌      1074 non-null   float64
 6   水生根茎类类别  1085 non-null   object 
 7   花叶类类别    1085 non-null   object 
 8   花菜类类别    1085 non-null   object 
 9   茄类类别     1085 non-null   object 
 10  辣椒类类别    1085 non-null   object 
 11  食用菌类别    1085 non-null   object 
dtypes: float64(6), object(6)
memory usage: 110.3+ KB

分开数值列和类别列:

data.select_dtypes(include='float64')去挑选数值类型等于include的行

numeric_cols=data.select_dtypes(include='float64').columns# df
category_cols=data.select_dtypes(include='object').columns
numeric_cols,category_cols

统计学描述

data.drop(columns=numeric_col+‘z-score’,inplace=True)

numeric_data.describe()

数据预处理环节

数据清洗环节

获取缺失值
null_counts=data.isnull().sum():返回一个Series
null_counts_nonzero=null_counts_nonzero.sort_values(ascending=False)排序更加直观
数据可视化:
以下是一个描绘一个缺失值大小和占比图像的代码

"""可视化缺失数据"""
plt.rcParams['font.family'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
def show_missing_values(data):
    null_counts=data.isnull().sum()    
    
    null_counts_nonzero=null_counts[null_counts>0]
    
    null_counts_nonzero=null_counts_nonzero.sort_values(ascending=False)
    print(type(null_counts_nonzero))
    
    plt.figure(figsize=(10,6))
    if not null_counts_nonzero.empty:
        ax=sns.barplot(x=null_counts_nonzero.values,y=null_counts_nonzero.index,palette="viridis")
    
        # palette调色板 data参数需要传入的是一个DataFrame,可以不传入,传入错误绘图有问题
        # sns中大部分参数会返回ax,可以用来设置标题,添加文本,设置限制和标签与图例
        ax.set_title('null number statics')
    
        for i,value in enumerate(null_counts_nonzero.values):
            ax.text(value+1,i,f'{value}',va='center')
        
        null_counts_nonzero=null_counts_nonzero[numeric_cols] 
        plt.figure(figsize=(10,6))
        plt.pie(x=null_counts_nonzero.values,labels=null_counts_nonzero.index,autopct='%1.1f%%')
        plt.title('null number distribution-pie figure')
        plt.show()
    else:
        print('暂未发现缺失值!绘图提前结束!')
show_missing_values(data)

在这里插入图片描述
在这里插入图片描述

异常值处理环节

np.where函数,类似倒置的if条件语句cond,true,false

np.where(data[numeric_col+'z-score']<-3,
                     mean-3*std,    data[numeric_col]
                )
  • 异常值处理1:直接丢弃
  • 异常值处理2:变为上限值

异常值处理可以优化我们的数据,增强数据的可分析性

"""异常值处理:Z-score>3"""
def abnormal_data_process(data):
    # 异常值处理前的图像
    plt.figure(figsize=(12,8))
    ax=sns.lineplot(data=data,x=np.arange(1,len(data)+1),\
                    y=data[numeric_cols[0]],color='cornflowerblue',linewidth=2,\
                    marker='o',markersize=4,markerfacecolor='white',markeredgecolor='blue')
    
    ax.set_title(f'日期-{numeric_cols[0]}的销售量',fontsize=20)
    ax.set_xlabel(f'日期',fontsize='20')
    ax.set_ylabel(f'{numeric_cols[0]}的销售量',fontsize='20')
    ax.set_yticks(np.arange(1,140,10))
    
    # 异常值处理
    for numeric_col in numeric_cols:
        #计算每列的z-score
        mean=data[numeric_col].mean()
        std=data[numeric_col].std()
        data[numeric_col+'z-score']=(data[numeric_col]-mean)/std
        
        # np.where(cond,true,false)
        
        data[numeric_col]=np.where(data[numeric_col+'z-score']>3,mean+3*std,
            np.where(data[numeric_col+'z-score']<-3,
                     mean-3*std,    data[numeric_col]
                )
            )
        data.drop(columns=numeric_col+'z-score',inplace=True)# 丢弃掉不需要的列
    
    # 异常处理后的图像
    plt.figure(figsize=(12,8))
    ax=sns.lineplot(data=data,x=np.arange(1,len(data)+1),y=data[numeric_cols[0]],
                    color='deepskyblue',
                    marker='o',markersize=4,markerfacecolor='white',
                    markeredgecolor='deepskyblue')# marker='o',markersize=1
    
    ax.set_title(f'日期-{numeric_cols[0]}的销售量',fontsize=20)
    ax.set_xlabel(f'日期',fontsize='20')
    ax.set_ylabel(f'{numeric_cols[0]}的销售量',fontsize='20')
    ax.set_yticks(np.arange(1,140,10))
    return data
data=abnormal_data_process(data)

处理前的图像:
在这里插入图片描述
处理后的图像:
在这里插入图片描述

seaborn绘图

plt中绘制子图

先讲一下怎么绘制子图

fig,axes=plt.subplots(5,1)

返回一个可以索引的axes对象,可以进行plt的各种操作
注意subplot函数与其类似,但是功能不相同

sns.xxx函数的返回值

大部分sns.xxx返回一个ax对象,这个对象有很多操作:设置标题,添加文本,设置横纵坐标上下界,设置图例
其中这样理解:使用set_XXX的都是主动操作,不使用的都视作ax本身的属性

  • ax.set_title('null number statics')
  • ax.set_xlabel(f'日期',fontsize='20')
  • ax.set_ylabel(f'{numeric_cols[0]}的销售量',fontsize='20')
  • ax.set_yticks(np.arange(1,140,10))
  • ax.legend():label=str属性一起使用,往往与text或者axvline函数配合
  • ax.text()
  • ax.axvline(x=q,color='black',linestyle='--',label=f'Quantile{i:}-{q:.2f}')

对于ax.legend()函数:

 for i,q in zip(quantities_indices,quantities):
     ax.axvline(x=q,color='black',linestyle='--',label=f'Quantile{i:}-{q:.2f}')
     ax.legend()

label=str属性一起使用,往往与text或者axvline函数配合


对于ax.text()函数:

ax.text(x,y,f'label',va='center',ha='center')
  • x和y是注释的位置:对于object数据来说,直接使用[0,n]的数据进行代替,而不是使用名称进行索引
  • label:是一个字符串,建议使用f{str}
  • va='center',ha='center'默认设置即可

对于ax.axvline()/ax.axhline()函数

ax.axv/hline(x/y,color=,linestyle=,label=str)
  • 如果是竖线则绘制竖线的x坐标,为横线则为横线的y坐标
  • linestyle最好设置为虚线
  • label='str':字符串形式

ax=sns.barplot(x=null_counts_nonzero.values,y=null_counts_nonzero.index,palette="viridis")
    
        # palette调色板 data参数需要传入的是一个DataFrame,可以不传入,传入错误绘图有问题
        # sns中大部分参数会返回ax,可以用来设置标题,添加文本,设置限制和标签与图例
        ax.set_title('null number statics')
    
        for i,value in enumerate(null_counts_nonzero.values):
            ax.text(value+1,i,f'{value}',va='center')

sns.xxx的通用格式

ax=sns.barplot(
	x=,y=,data=,
	color=,linewidth=,
	palette=,
	marker=,markersize=,markefacecolor=,markeredgecolor=)
  • data:必须接受一个DataFrame参数,否则会出现意料之外的错误,可以不设置这个参数
  • x:横轴数据;y:纵轴数据。可以接受object对象,可以接受ndarray,series,一般不接受dataframe
  • palette:调色板对象,一般使用palette='viridis' VIRIDIS
  • marker一类:marker='o',其余两个是标记本身和标记边缘的颜色,一般将边缘颜色设置为与color一致

histogram直方图

ax=sns.histplot(x=sale_data,kde=True,color='purple',bins='auto')
  • kde:核密度曲线是否绘制
  • bins:一般默认auto
  • x:接受series或者ndarray

boxplot

ax=sns.boxplot(data=data,orient='h',palette="viridis",fliersize=2,flierprops=flierprops)
  • 只需要传入data
  • orient:朝向水平h或者垂直v
  • flier过滤点一类的参数:
    flierprops={'marker':'o','markerfacecolor':'black','markeredgecolor':'white',
                'markersize':4
                }

heatmap

sns.heatmap(corr_matrix,fmt='.2g',cmap='Reds',annot=True)
  • fmt:小数格式
  • cmap:映射
  • annot:数值注释

pie

sns没有绘制pie的函数,但是绘制pie的函数与其通用格式非常像

 plt.pie(x=null_counts_nonzero.values,labels=null_counts_nonzero.index,autopct='%1.1f%%')
  • x:ndarray或者series
  • label:标签
  • autopct:小数格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2219011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙网络编程系列24-Web组件与应用互操作示例

1. APP内嵌网页与应用互操作概述 在通常的APP开发中&#xff0c;经常会采用内嵌网页的形式&#xff0c;通过网页来展现丰富的动态内容&#xff0c;虽少了很多原生开发的功能&#xff0c;但是这么做无可厚非&#xff0c;毕竟APP需要适配的系统平台很多&#xff0c;比如安卓、苹…

leetcode289:生命游戏

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &am…

babylonjs shader学习之copy shadertoy案例

shadertoy案例&#xff1a; 准备 const onSceneReady (scene: Scene) > {const light new HemisphericLight(light, new Vector3(0, 1, 0), scene);light.intensity 0.7;Effect.ShadersStore[planeMatVertexShader] precision highp float;attribute vec3 position;attr…

SpringMVC一个拦截器和文件上传下载的完整程序代码示例以及IDEA2024部署报错 找不到此 Web 模块的 out\artifacts\..问题

一、SpringMVC一个拦截器和文件上传下载的完整程序代码示例 本文章是一个 SpringMVC拦 截器和文件上传下载的完整程序代码示例&#xff0c;使用的开发工具是 IntelliJ IDEA 2024.1.6 (Ultimate Edition)&#xff0c; 开发环境是 OpenJDK-21 java version 21.0.2。Tomcatt版本为…

Flux.concat 使用说明书

public static <T> Flux<T> concat(Iterable<? extends Publisher<? extends T>> sources)Concatenate all sources provided in an Iterable, forwarding elements emitted by the sources downstream. 连接可迭代集合中提供的所有源&#xff0c;将…

【web】JDBC

项目连接数据库 右侧导航栏找到databsae 如果没有驱动&#xff0c;先下载驱动 填写数据库用户名密码 勾选对应的表即可 JDBC代码流程 1,配置信息 2,加载驱动 从MySQL Connector/J 5.1版本开始&#xff0c;推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。 3,链接数据库…

【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例

在前面的文档中&#xff0c;介绍了如何在Unity工程中配置号MRTK和Pico SDK 【MR开发】在Pico设备上接入MRTK3&#xff08;一&#xff09;在Unity中导入MRTK3依赖【MR开发】在Pico设备上接入MRTK3&#xff08;二&#xff09;在Unity中配置Pico SDK 本文将介绍如何运行一个简单…

SQL进阶技巧:如何找出开会时间有重叠的会议室?| 时间区间重叠问题

目录 0 场景描述 1 数据准备 2 问题分析 方法1:利用 lateral view posexplode()函数将表展开成时间明细表 方法2:利用数学区间讨论思想求解 3 小结 0 场景描述 有7个会议室,每个会议室每天都有人开会,某一天的开会时间如下: 查询出开会时间有重叠的是哪几个会议室?…

Agentic RAG(基于智能体的检索增强生成)是检索增强生成(Retrieval-Augmented Generation,RAG)技术的一种高级形式

Agentic RAG&#xff08;基于智能体的检索增强生成&#xff09;是检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;技术的一种高级形式&#xff0c;它通过引入人工智能代理&#xff08;Agent&#xff09;的概念&#xff0c;为语言模型赋予了…

C#从零开始学习(用unity探索C#)(unity Lab1)

初次使用Unity 本章所有的代码都放在 https://github.com/hikinazimi/head-first-Csharp Unity的下载与安装 从 unity官网下载Unity Hub Unity的使用 安装后,注册账号,下载unity版本,然后创建3d项目 设置窗口界面布局 3D对象的创建 点击对象,然后点击Move Guzmo,就可以拖动…

018_FEA_Structure_Static_in_Matlab三维结构静力学分析

刹车变形分析 本示例展示了如何使用 MATLAB 软件进行刹车变形分析。 这个例子是Matlab官方PDE工具箱的第一个例子&#xff0c;所需要的数据文件都由Matlab提供&#xff0c;包括CAD模型文件。 步骤 1: 导入 CAD 模型 导入 CAD 模型&#xff0c;这里使用的是一个带有孔的支架模…

HTTP cookie 与 session

一种关于登录的场景演示 - B 站登录和未登录 问题&#xff1a;B 站是如何认识我这个登录用户的&#xff1f;问题&#xff1a;HTTP 是无状态&#xff0c;无连接的&#xff0c;怎么能够记住我&#xff1f; 一、引入 HTTP Cookie 定义 HTTP Cookie&#xff08;也称为 Web Cooki…

【最新华为OD机试E卷-支持在线评测】VLAN资源池(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

R语言复杂抽样调查数据统计描述和分析

gtsummary包中tbl_svysummary提供了统计描述&#xff1b;tableone包中的svyCreateTableOne提供了统计比较&#xff1b;原始描述和比较可以是有table1包。 #测试数据 library(survey) setwd("F://") data(Titanic) sur_des<-survey::svydesign(~1, data as.data.…

Leetcode—1117. H2O 生成【中等】(多线程)

2024每日刷题&#xff08;182&#xff09; Leetcode—1117. H2O 生成 C实现代码 class H2O { public:H2O() {sem_init(&hydrogenSem, 0, 1);sem_init(&oxygenSem, 0, 0);}~H2O() {sem_destroy(&hydrogenSem);sem_destroy(&oxygenSem);}void hydrogen(functio…

重学SpringBoot3-Spring WebFlux简介

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-Spring WebFlux简介 1. 什么是 WebFlux&#xff1f;2. WebFlux 与 Spring MVC 的区别3. WebFlux 的用处3.1 非阻塞 I/O 操作3.2 响应式编程模型3.3 更高…

机械视觉光源选型

光源是机器视觉系统的重要组成部分&#xff0c;直接影响到图像的质量&#xff0c;进而影响到系统的性 能。在一定程度上&#xff0c;光源的设计与选择是机器视觉系统成败的关键。光源最重要的功能就 是使被观察的图像特征与被忽略的图像特征之间产生最大的对比度&#xff0c;…

RISC-V笔记——RVWMO基本体

1. 前言 RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering)&#xff0c;它是Release Consistency的扩展&#xff0c;因此&#xff0c;RVWMO的基本特性类似于RC模型。 2. RC模型 Release consistency(RC)的提出是基于一个观察&#xff1a;将所有同步操作用FENCE围在一…

基于x86_64汇编语言简单教程1: 环境预备与尝试

目录 前言 环境配置 基本硬件与操作系统要求 WSL VSCode基本配置(For Windows) 安装基本的依赖 为您的VSCode安装插件&#xff1a; 学习要求 入门 先试试味道 前言 笔者最近正在梭哈使用NASM汇编器的x86 32位汇编&#xff0c;笔者这里记录一下一个晚上的成果。 环境…

【含开题报告+文档+PPT+源码】贫困儿童一对一扶贫帮扶系统设计与实现

开题报告 根据《中华人民共和国慈善法》第五十八条规定&#xff0c;慈善组织确定慈善受益人&#xff0c;应当坚持公开、公平、公正的原则&#xff0c;不得指定慈善组织管理人员的利害关系人作为受益人[2]。以上所列举的平台基本没有做到公开、公平、公正的原则&#xff0c;例如…