python数据可视化玩转Matplotlib直方图、箱型图、密度图、正态分布、偏度和峰度

news2024/9/24 5:31:33

目录

1. 直方图、箱线图和密度图

1.1 直方图

1.2 箱线图

1.3 密度图

2. 正态分布

3. 偏度和峰度

结论


1. 直方图、箱线图和密度图

直方图、箱线图和密度图是数据分析中十分常用的图形。它们可以帮助我们更好地理解数据的分布情况,从而更好地进行数据分析和处理。在这篇博客中,我们将介绍它们的基本原理、用途以及如何在Python中使用代码来实现。

1.1 直方图

直方图是一种常用的数据分布图,它将数据分成若干个区间,然后统计每个区间内数据的个数。通常情况下,直方图的横轴表示数据范围,纵轴表示数据出现的频数或者频率。直方图适用于连续性数据的分布情况。

下面是Python绘制直方图的代码,使用的是matplotlib库:

import matplotlib.pyplot as plt
import numpy as np

# 生成一组随机数据
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.5,
         histtype='stepfilled', color='steelblue',
         edgecolor='none')
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

其中,np.random.randn(1000)生成了1000个标准正态分布的随机数,plt.hist()函数用于绘制直方图,bins表示将数据分成的区间数量,density表示是否对频数进行归一化,alpha表示透明度,histtype表示直方图的类型,color表示填充颜色,edgecolor表示边框颜色。最后使用plt.show()函数显示图形。

在上面的代码中,我们设置了density=True,这样直方图的纵轴就表示概率密度,而不是频数。如果需要绘制频数直方图,只需要将density设置为False即可。

1.2 箱线图

箱线图是用于展示数据分布情况的一种图形,它由五个数值点组成:最小值、最大值、中位数、上四分位数和下四分位数。箱子的长度表示数据的四分位距,箱子内的线表示数据的中位数,箱子外的点表示离群值。箱线图适用于离散性数据的分布情况。

下面是Python绘制箱线图的代码,使用的是matplotlib库:

import matplotlib.pyplot as plt
import numpy as np

# 生成一组随机数据
data = np.random.randn(1000)

# 绘制箱线图
plt.boxplot(data, notch=False, vert=True, showfliers=True,
            labels=None, flierprops=None, medianprops=None,
            meanprops=None, whiskerprops=None, capprops=None,
            boxprops=None)

plt.title('Box Plot')
plt.xlabel('Value')
plt.ylabel('Frequency')

plt.show()

其中,data为一组随机数据,plt.boxplot()函数用于绘制箱线图,notch表示是否绘制缺口,vert表示箱线图的方向,showfliers表示是否绘制离群值,labels表示箱线图标签,flierprops表示离群值的属性,medianprops表示中位数的属性,meanprops表示均值的属性,whiskerprops表示虚线的属性,capprops表示横线的属性,boxprops表示箱体的属性。最后使用plt.show()函数显示图形。

在上面的代码中,我们设置了showfliers=True,这样箱线图中会显示离群值。如果需要隐藏离群值,只需要将showfliers设置为False即可

1.3 密度图

密度图是用于展示数据分布情况的一种图形,它是对直方图的一种平滑版本。它的纵轴并不是频数或频率,而是概率密度。密度图适用于连续性数据的分布情况。密度图也可以配合直方图一起绘制,以更好地理解数据的分布情况。

下面是Python绘制密度图的代码,使用的是seaborn库:

import seaborn as sns
import numpy as np

# 生成一组随机数据
data = np.random.randn(1000)

# 绘制密度图
sns.kdeplot(data, shade=True)

# 显示图形
plt.title('Density Plot')
plt.xlabel('Value')
plt.ylabel('Density')
plt.show()

其中,data为一组随机数据,sns.kdeplot()函数用于绘制密度图,shade表示是否填充颜色。最后使用plt.show()函数显示图形。

密度图的优点是可以更准确地表达数据分布情况,而不会受到分组的影响。同时,使用密度图可以更好地理解数据分布的形状,例如是否对称、是否有峰值等等。

2. 正态分布

正态分布是一种常见的概率分布。在实际的数据分析中,很多数据都符合正态分布。因此,理解正态分布的基本原理和性质对于数据分析非常重要。在这篇博客中,我们将介绍正态分布的基本概念、性质和应用,并且使用Python代码来生成和可视化正态分布。

下面是Python绘制正态分布图的代码,使用的是matplotlib库:

import matplotlib.pyplot as plt
import numpy as np

# 生成一组符合标准正态分布的随机数据
data = np.random.randn(1000)

# 绘制正态分布图
plt.hist(data, bins=30, density=True, alpha=0.5,
         histtype='stepfilled', color='steelblue',
         edgecolor='none')

# 绘制正态分布曲线
mu, sigma = data.mean(), data.std()
x = np.linspace(mu - 3 * sigma, mu + 3 * sigma, 100)
plt.plot(x, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp(- (x - mu)**2 / (2 * sigma**2)),
         linewidth=2, color='r')
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.show()

其中,np.random.randn(1000)生成了1000个标准正态分布的随机数,使用plt.hist()函数绘制数据的直方图,bins表示将数据分成的区间数量,density表示是否对频数进行归一化,alpha表示透明度,histtype表示直方图的类型,color表示填充颜色,edgecolor表示边框颜色。使用plt.plot()函数绘制正态分布曲线,musigma分别表示数据的均值和标准差,x为一组等间隔的数值,1/(sigma * np.sqrt(2 * np.pi)) * np.exp(- (x - mu)**2 / (2 * sigma**2))表示标准正态分布的概率密度函数。最后使用plt.show()函数显示图形。

在上面的代码中,我们将正态分布曲线绘制在了直方图上方,这样可以更好地描述数据分布的形态。

3. 偏度和峰度

偏度和峰度是用于描述数据分布形态的两个重要指标。通过偏度和峰度的计算,我们可以更准确地描述数据的分布情况,从而更好地进行数据分析。在这篇博客中,我们将介绍偏度和峰度的概念、计算方法和应用,并且使用Python代码来计算和可视化偏度和峰度。

偏度和峰度是用于描述数据分布形态的两个重要指标。偏度描述的是数据分布的不对称程度,通常用于判断数据分布是否为正态分布。如果偏度为0,则数据分布为对称分布;如果偏度大于0,则数据分布右偏;如果偏度小于0,则数据分布左偏。峰度描述的是数据分布的峰态,即分布的陡峭程度。峰度为0表示正态分布,峰度大于0表示分布比正态分布更陡峭,峰度小于0表示分布比正态分布更平缓。

import numpy as np
from scipy.stats import kurtosis, skew
import matplotlib.pyplot as plt

# 生成一组随机数据
data = np.random.randn(1000)

# 计算偏度和峰度
sk = skew(data)
ku = kurtosis(data)

# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.5,
         histtype='stepfilled', color='steelblue',
         edgecolor='none')
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')

plt.text(1, 0.8, 'Skewness={:.2f}'.format(sk))
plt.text(1, 0.7, 'Kurtosis={:.2f}'.format(ku))

plt.show()

其中,skew(data)kurtosis(data)函数分别用于计算数据的偏度和峰度。最后使用plt.text()函数在图形上方添加偏度和峰度的数值。

在上面的代码中,我们使用了scipy库中的kurtosisskew函数来计算偏度和峰度。如果需要计算样本的偏度和峰度,可以使用bias=False参数。

通过偏度和峰度的计算,我们可以更准确地描述数据的分布情况,从而更好地进行数据分析。

结论

数据分布的可视化是数据分析中非常重要的一部分。通过本篇博客,我们介绍了直方图、箱线图、密度图、正态分布、偏度和峰度的基本原理、用途以及如何在Python中使用代码来实现。希望读者可以通过本篇博客更好地理解数据的分布情况,从而更好地进行数据分析。

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

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

相关文章

M1和M2的剪刀差是什么意思?

Scissors difference between M1 and M2. 在市场上流通的货币的数量,用金融术语来讲叫货币供应量。 因为市场上的货币流动性各不相同,长期存款的流动性不如短期存款的强,短期存款的流动性不如现金的强。 所以在统计货币量的时候,标…

Linux优化命令之free命令

free 这里写目录标题 一、free命令描述:1.free命令的语法:2.free命令的选项:3.free命令的输出格式: 二、压力测试工具stress:1.工具简介:2.参数详解:3.下载压力测试工具: 三、模拟实…

osg环境搭建与使用

目录 环境安装 案例一: 案例二: 案例三: 案例四: 我的vs2022,window11 环境安装 看这个文章即可,博客很详细,按照这个没问题的 (5条消息) 【OSG】OSG环境部署 OSG3.6.5vs2017win10_x64(超详细&…

STM32F407的介绍

文章目录 芯片STM32F407资源F407总线架构STM32F407系统框图STM32F407地址分配 芯片 STM32F407资源 内核 32位 高性能ARM Cortex-M4处理器时钟: 高达168MHz,实际还可以超频一点点 stm32f407的主频通过PLL倍频后能够达到168MHz,而且芯片内置一…

使用大白菜PE给苹果电脑安装win7ghost

如何安装大白菜苹果电脑?ghost (苹果电脑能用大白菜安装系统吗) 喜欢用苹果Mac电脑,开始后发现不习惯苹果的操作系统,还是习惯用Windows我们可以给苹果系统Mac电脑上安装Windows系统,享受苹果的外观,操作windows系统…

【Java】Java核心要点总结 66

文章目录 1. 成员变量 和 局部变量 的区别2 . 静态方法 和 实例方法 区别3. 基本数据类型 和 包装类 的区别4. 局部变量一定存储在栈中吗?5. 包装类型的缓存机制 1. 成员变量 和 局部变量 的区别 ● 语法形式 :从语法形式上看,成员变量是属于…

基于opencv与mediapipe的民族舞舞蹈动作识别

需要项目的请关注、私信 基于opencv与mediapipe的民族舞舞蹈动作识别 1、原理介绍1.1 Opencv1.2 Mediapipe 2、实验步骤2.1 导入工具包2.2 中文输入2.4 建立姿态位置信息库2.5 位置信息获取2.6 姿态识别 3 实验结果与评价 1、原理介绍 1.1 Opencv Opencv(Open So…

Android Studio实现知乎日报App

项目目录 一、项目概述二、开发环境三、运行演示 一、项目概述 本系统基于 MVP RxJava Retrofit进行设计和开发,通过 Retrofit 实现了无网缓存,基于 MVP 模式对 Activity 和 Fragment 封装了两个基类,同样适用于非 MVP 的实现。运用 Recyc…

termux中apache+php的安装

如果 ssl.so.3 not found 需要 apk update 更新一下 然后,pkg install php 完成php 8.2安装 使用命令开启 存储 权限 termux-setup-storage apt install phpmyadmin apt install php-apache apache2 配置文件位于 cd $PREFIX/etc/apache2/ cd /data/data/com.te…

【干货】Android系统定制基础篇:第四部分-Android二次构建

背景 有时我们需要使用同一套Android源码编译生成各种差异化产品固件,比如:A产品、B产品、C产品,各产品之间大部分功能是相同的,仅个别功能定义上有差别。 方法一 Android默认的做法是在源码 device 目录下增加A、B、C产品&…

三个领域的微调模型;Meta推出新的生成式AI模型Voicebox

🦉 AI新闻 🚀 Meta推出新的生成式AI模型Voicebox,可执行音频编辑、采样、风格化等语音生成任务 摘要:Meta继推出ImageBind之后,于今天再次推出了全新的生成式AI模型Voicebox。该模型帮助创作者执行音频编辑、采样和风…

2023年6月最新|大屏可视化配置

大屏可视化配置 运行环境:VScode 一、可视化适配 大屏下显示一般都是16:9尺寸 1920*1080 ,做适配也就是在这个比例的基础上进行的 方案一:打开VSCode终端,下载flexible 1、选中要运行的文件,右键–>【在集成终…

使用Apache ShardingSphere简答实现水平分表

1 简介 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。 官方网站 https://shardingsphere.apache.org/document/current/cn/overview/2 创建…

【算法题刷题笔记】华为OD机试 - 农场施肥

样例一: 5 7 5 7 9 15 10>> 9样例二: 3 1 2 3 4>> -1解题思路 题目大概意思: 给你N个数, 还有一个数M, 让你求K, 进行M次减K操作, 令这N个数都小于等于0。 思路: 利用…

frp配置多端口内网穿透?frp多端口怎么配置?

FRP内网穿透应用场景:本地Web服务外网访问、本地开发微信、本地联调支付宝\微信支付、TCP/UDP端口转发 在本机开发好的网站想让客户测试不在需要上传到服务器上面,使用FRP内外网穿透轻松解决;微信开发也不需要在上传到服务器,使用…

拒绝服务攻击

目录 一、初始DOS攻击与防御 1.1 DOS攻击概念 1.2 DOS攻击原因 1.2.1 内因 1.2.2 外因 1.3 DOS攻击原理 1.4 DOS攻击方法 二、DOS常见攻击技术 2.1 SYN Flood 2.1.1 基本思想 2.1.2 方法 2.1.3 防御措施 2.2 ICMP Flood 2.2.1 Smurf Flood 2.2.2 Ping of Death …

【微信小程序开发】第 10 课 - WXML 模版语法 - 数据绑定

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、数据绑定 2.1、绑定的基本规则 2.2、Mustache 语法的格式 2.2.1动态绑定内容 2.2.2动态绑定属性 2.2.3三元运…

Qqis中采用栅格工具生成XYZ瓦片(目录)简介

目录 前言 一、Qgis的相关功能 1、数据准备 2、将两个xyz图源添加到图层 二、Qgis栅格工具生成 1、生成xyz图块工具在哪里 2、生成xyz图块怎么用 3、下载结果 4、Leaflet加载离线瓦块 总结 前言 在上一篇博客中,介绍了一种在Qgis中基于QMetaTiles插件进行xyz瓦…

Linux---环境变量、$符号、自行设置环境变量

1. 环境变量 环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅 助系统运行。 在Linux系统中执行:env命令即可查看当前系统中记录的环境变量 环境变量是一种Key-Value型结构&…

chatgpt赋能python:Python如何选取CSV某几列数据

Python如何选取CSV某几列数据 在数据处理过程中,CSV是一种非常常见的数据文件类型。CSV文件中的数据由逗号分隔的值(Comma-Separated Values)组成。处理CSV数据的任务之一是从CSV文件中选择特定的列数据,以进行数据分析或处理。在…