【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)

news2024/12/24 9:59:07

目录

1 Pandas 可视化功能

2 Pandas绘图实例

2.1 绘制线图

2.2 绘制柱状图

2.3 绘制随机散点图

2.4 绘制饼图

2.5 绘制箱线图A

2.6 绘制箱线图B

2.7 绘制散点图矩阵

 2.8 绘制面积图

2.9 绘制热力图

 2.10 绘制核密度估计图


1 Pandas 可视化功能

pandas是一个强大的数据分析库,提供了一些可视化工具来帮助用户更好地理解和展示数据。以下是pandas可视化工具的一些常见功能:

1. 折线图:通过plot()函数可以绘制折线图,展示数据随时间或其他变量的变化趋势。

2. 散点图:使用scatter()函数可以绘制散点图,在二维平面上展示两个变量之间的关系。

3. 条形图:使用bar()函数可以绘制条形图,用于比较不同类别或组的数值大小。

4. 直方图:使用hist()函数可以绘制直方图,用于展示数值型数据的分布情况。

5. 饼图:使用pie()函数可以绘制饼图,展示不同类别的占比情况。

6. 箱线图:使用boxplot()函数可以绘制箱线图,展示数值型数据的分布特征、离群值等。

Pandas 是一个用于数据处理和分析的流行库,它提供了一些内置的可视化功能,通常基于 Matplotlib 这个底层库。

  • 绘制线图:

df['column_name'].plot(kind='line')

绘制柱状图:

df['column_name'].plot(kind='bar')

绘制散点图:

df.plot(x='x_column', y='y_column', kind='scatter')

hist()函数hist()函数用于绘制直方图,以显示数据的分布和频率。

df['column_name'].hist(bins=10)

boxplot()函数boxplot()函数用于绘制箱线图,显示数据的分位数和离群值。

df.boxplot(column='column_name')

scatter_matrix()函数scatter_matrix()函数用于绘制多个变量之间的散点图矩阵,有助于了解变量之间的关系。

from pandas.plotting import scatter_matrix

scatter_matrix(df, alpha=0.5, figsize=(8, 8), diagonal='hist')

plotting.scatter_matrix()函数:这是一个更高级的散点图矩阵绘制函数,可以自定义每个子图的属性。

from pandas.plotting import scatter_matrix

scatter_matrix(df, alpha=0.5, figsize=(8, 8), diagonal='kde', color='red')

plot.barh()函数plot.barh()函数用于绘制水平柱状图。

df['column_name'].plot(kind='barh')

plot.pie()函数plot.pie()函数用于绘制饼图,用于显示数据的占比。

df['column_name'].plot(kind='pie', autopct='%1.1f%%')

plot.area()函数plot.area()函数用于绘制堆叠面积图,显示数据的累积变化趋势。

df.plot.area()

plot.kde()函数plot.kde()函数用于绘制核密度估计图,显示数据的概率密度分布。


 

2 Pandas绘图实例

2.1 绘制线图

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建数据
data = {'年份': [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017],
        '销售额': [100, 150, 120, 180, 200, 250, 300, 280]}

# 转换为DataFrame格式
df = pd.DataFrame(data)

# 绘制折线图
plt.plot(df['年份'], df['销售额'], marker='o')

# 设置x轴和y轴标签、标题
plt.xlabel('年份')
plt.ylabel('销售额')
plt.title('销售额变化趋势')

# 添加图例
plt.legend(['销售额'])

# 显示图形
plt.show()

当使用Pandas绘制柱状图、散点图和饼图时,您可以使用plot()函数的不同kind参数来指定要绘制的图表类型。

2.2 绘制柱状图

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 替换为您系统中支持的字体
# 创建一个示例DataFrame
data = {'Category': ['A', 'B', 'C', 'D'],
        'Values': [10, 15, 7, 12]}

df = pd.DataFrame(data)

# 绘制柱状图
df.plot(x='Category', y='Values', kind='bar', title='柱状图')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()

2.3 绘制随机散点图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 替换为您系统中支持的字体
# 生成随机数据
np.random.seed(0)  # 设置随机种子以确保可重复性
num_points = 100
x = np.random.rand(num_points)  # 随机生成x坐标
y = np.random.rand(num_points)  # 随机生成y坐标
colors = np.random.rand(num_points)  # 随机生成颜色值

# 创建DataFrame
data = {'X': x, 'Y': y, 'Color': colors}
df = pd.DataFrame(data)

# 绘制散点图
plt.figure(figsize=(8, 6))  # 设置图形大小
plt.scatter(x='X', y='Y', c='Color', data=df, cmap='viridis', alpha=0.7)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('随机散点图')
plt.colorbar(label='颜色')
plt.show()

上述示例中,我们首先使用NumPy生成了一些随机的x和y坐标数据,以及随机的颜色值。然后,我们将这些数据放入一个Pandas DataFrame 中,并使用Matplotlib绘制了散点图。颜色使用了色彩映射(cmap),并添加了颜色条(colorbar)以显示颜色映射的对应关系。

2.4 绘制饼图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 替换为您系统中支持的字体


# 创建一个示例DataFrame,包含不同类别的值
data = {'Category': ['A', 'B', 'C', 'D'],
        'Values': [10, 15, 7, 12]}

df = pd.DataFrame(data)

# 指定用于饼图的数值列和标签列
values = df['Values']
labels = df['Category']

# 绘制饼图
plt.figure(figsize=(6, 6))  # 设置图形大小
df.plot(y='Values', kind='pie', labels=df['Category'], autopct='%1.1f%%', title='饼图')  # 绘制饼图
plt.title('饼图')  # 设置图表标题

# 显示图表
plt.axis('equal')  # 使饼图保持圆形
plt.show()

 

在上述示例中,首先创建了一个包含类别和对应数值的DataFrame。然后,使用plt.pie()函数来绘制饼图,其中values包含数值数据,labels包含饼图的标签。autopct参数用于显示百分比标签,startangle参数用于指定饼图的起始角度。最后,使用plt.axis('equal')确保饼图保持圆形。

2.5 绘制箱线图A

import pandas as pd
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['SimHei']


# 创建示例数据集
data = {
    'Product_A': [random.randint(50, 100) for _ in range(50)],
    'Product_B': [random.randint(40, 90) for _ in range(50)],
    'Product_C': [random.randint(60, 110) for _ in range(50)],
    'Product_D': [random.randint(30, 70) for _ in range(50)],
    'Product_E': [random.randint(20, 80) for _ in range(50)],
    'Product_F': [random.randint(70, 120) for _ in range(50)]
}

df = pd.DataFrame(data)

# 使用boxplot()函数绘制箱线图
df.boxplot(column=['Product_A', 'Product_B', 'Product_C', 'Product_D', 'Product_E', 'Product_F'])

# 添加标题和标签
plt.title('不同产品销售数据箱线图')
plt.ylabel('销售数量')

# 显示图形
plt.show()

         在这个示例中,我们创建了一个包含6种产品的示例DataFrame df,每种产品有50个销售数据点。然后,我们使用boxplot()函数绘制了这6种产品的箱线图。

        箱线图将展示每种产品的销售数量分布情况,包括中位数、四分位数、离群值等信息。通过比较不同产品的箱线图,您可以更好地了解它们的销售数据分布,以便进行进一步的分析和决策。这种可视化方法可以帮助您分析潜在的销售趋势和异常情况。

2.6 绘制箱线图B

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体


# 创建一个示例数据集,包括三个组的数据
data = pd.DataFrame({
    'Group1': np.random.normal(0, 1, 100),
    'Group2': np.random.normal(2, 1, 100),
    'Group3': np.random.normal(1, 1, 100),
    'Group4': np.random.normal(3, 1, 100)
})

# 使用boxplot()函数绘制箱线图,指定显示的列和参数
data.boxplot(column=['Group1', 'Group2', 'Group3', 'Group4'],
             notch=True,  # 添加缺口以估计中位数的不确定性
             sym='o',  # 设置异常值标记为圆圈
             vert=False,  # 水平显示箱线图
             patch_artist=True,  # 填充箱体颜色
             showmeans=True,  # 显示均值点
             meanline=True,  # 显示均值线
             widths=0.5  # 箱体宽度
             )

# 添加标题和标签
plt.title('箱线图示例')
plt.xlabel('值')
plt.ylabel('分组')

# 显示图形
plt.show()

在这个示例中,我们创建了一个包含四个组的示例DataFrame data,每个组有100个随机数。然后,我们使用boxplot()函数绘制箱线图,并自定义了多个参数:

  • notch=True:在箱体中添加缺口以估计中位数的不确定性。
  • sym='o':将异常值标记为圆圈。
  • vert=False:水平显示箱线图。
  • patch_artist=True:填充箱体颜色。
  • showmeans=True:显示均值点。
  • meanline=True:显示均值线。
  • widths=0.5:设置箱体宽度。

其中每个箱体表示一个组的数据分布情况。箱线图还显示了中位数、均值点和异常值。这种可视化工具有助于比较多个组的数据分布,并检测异常值。

2.7 绘制散点图矩阵

pandas.plotting.scatter_matrix()函数用于绘制多个变量之间的散点图矩阵,帮助您了解各个变量之间的关系。这个函数可以自定义每个子图的属性,包括颜色、标记、直方图和核密度估计等。下面是一个详细的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建一个包含多个变量的示例数据集
data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])

# 使用scatter_matrix()函数绘制散点图矩阵
# 主要参数包括DataFrame对象,alpha(透明度),diagonal(对角线上的图表类型),color(颜色),marker(标记类型)等
scatter_matrix(data, alpha=0.8, figsize=(8, 8), diagonal='hist', color='blue', marker='o')

# 添加标题
plt.suptitle('散点图矩阵示例')

# 显示图形
plt.show()

在这个示例中,我们首先创建了一个包含四个随机变量的示例DataFrame data。然后,我们使用scatter_matrix()函数绘制散点图矩阵,指定了一些参数:

  • alpha参数设置透明度,这样可以看到重叠点。
  • figsize参数设置图形的大小。
  • diagonal参数设置对角线上的图表类型,这里使用直方图。
  • color参数设置散点的颜色。
  • marker参数设置散点的标记类型。

最后,我们添加了标题并显示图形。

 2.8 绘制面积图

面积图 (Area Plot)

面积图用于可视化时间序列或有序数据的变化趋势,通常用于显示数据的累积变化

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']


# 创建示例数据集
data = {
    'Year': [2000, 2001, 2002, 2003, 2004],
    'Product_A': [100, 120, 140, 160, 180],
    'Product_B': [80, 90, 110, 130, 150]
}

df = pd.DataFrame(data)

# 使用plot()函数创建面积图
plt.figure(figsize=(8, 6))
plt.stackplot(df['Year'], df['Product_A'], df['Product_B'], labels=['Product_A', 'Product_B'], alpha=0.7)
plt.xlabel('年份')
plt.ylabel('销售数量')
plt.title('面积图示例')
plt.legend(loc='upper left')
plt.show()

         在上述示例中,我们首先创建了一个包含年份和两种产品销售数量的示例DataFrame。然后,使用stackplot()函数创建面积图,alpha参数设置透明度,labels参数设置图例标签,legend()函数用于显示图例。 

 

2.9 绘制热力图

热力图 (Heatmap)

热力图用于可视化矩阵数据中各个元素之间的关系,通常通过颜色来表示数值的大小。

要在Pandas中绘制热力图,通常需要使用辅助库,最常见的是Seaborn和Matplotlib。Seaborn提供了高级的热力图绘制函数,而Matplotlib用于显示图形。以下是如何在Pandas中使用Seaborn和Matplotlib绘制热力图的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体

# 创建示例数据集
data = np.random.rand(5, 5)  # 5x5的随机矩阵

# 转换为DataFrame
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])

# 使用seaborn的heatmap()函数创建热力图
plt.figure(figsize=(8, 6))
sns.heatmap(df, annot=True, cmap='coolwarm', linewidths=.5)
plt.title('热力图示例')
plt.show()

 在上述示例中,我们首先创建了一个随机矩阵,并将其转换为Pandas DataFrame。然后,使用Seaborn的heatmap()函数来绘制热力图。参数annot=True用于在图表上显示数值标签,cmap用于设置颜色映射,linewidths用于设置单元格之间的间隔线宽度。


 2.10 绘制核密度估计图

 plot.kde()函数plot.kde()函数用于绘制核密度估计图,显示数据的概率密度分布。

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体

# 创建示例数据集
data = {'Values': [10, 15, 13, 18, 25, 12, 22, 27, 16, 21]}

df = pd.DataFrame(data)

# 使用plot.kde()函数创建核密度估计图
df['Values'].plot.kde()
plt.xlabel('数值')
plt.ylabel('概率密度')
plt.title('核密度估计图示例')
plt.show()

在这个示例中,我们首先创建了一个包含示例数据的DataFrame df,然后使用plot.kde()函数绘制核密度估计图。这个图表显示了数据的概率密度分布,它是一个平滑的曲线,代表了数据在不同数值上的概率密度。

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

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

相关文章

在 Python 中实现 DBSCAN

一、说明 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类是一种基于密度的聚类算法。它能够根据数据点的密度来将数据划分为不同的类别,并可以自动识别离群点。DBSCAN聚类算法的核心思想是将密度高的数据点划分为…

MacVim for Mac:强大的文本编辑器,提升你的编程体验

在Mac上,有这样一款独特的文本编辑器——MacVim for Mac,它以其强大的功能和出色的性能,吸引了广大的程序员和编程爱好者。这款编辑器不仅继承了Unix编辑器Vi的强大功能,更通过创新的设计和功能拓展,提供了一款更完整、…

批量上传文件,以input上传文件,后端以List<MultipartFile>类型接收

批量上传文件,以input上传文件,后端以List类型接收 一、后端接口二、前端对接三、测试 最近公司要求要做一个批量上传文件的功能,以往做的导入Excel表格、上传图片都是上传一个文件的,此次在开发的过程中着实让我犯了难&#xff0…

vue Echarts饼图指定颜色与数据对应

需求:一般自定义颜色是按照数据的顺序依次对应,现在想要指定字段对应某个颜色 因为是直接在返回数据中做操作,所以直接写这部分的代码 数据格式 cdata: {xData: ["水文", "森林", "气象", "地质",…

学习笔记|外部中断|INT0|中断列表|STC32G单片机视频开发教程(冲哥)|第十五集:中断系统和外部中断

文章目录 1.中断和中断系统1.1什么是中断?1.2什么是中断系统1.3中断系统的优点1.4 中断系统包含哪些中断源1.5.中断次序 2.什么是外部中断3.外部中断的用法4.外部中断的用法完整代码 总结课后练习: 上节课我们学完了GPIO的矩阵按键,已经把这个GPIO的一个外设全都已…

最小二乘法的实现与线性回归的应用

1. 简介 简单线性回归中,您有一个因变量y和一个自变量X。该模型可以表示为: y m x b ymxb ymxb 其中 x x x: 自变量 y y y: 因变量 m m m: 斜率 b b b: 截距 最小二乘法是回归分析中用于估计线性回归模型参数的标准方法。它可以最小化误差的平方和&…

SpringBoot课堂笔记20230913

本篇文章为SpringBoot学习笔记,方便自己再复习。 Maven:jar包管理工具 注解: Controller:处理http请求,返回的视图 RestController: 相当于ResponseBody和Controller一起用,返回的是json ResponseBody:返回响应内容 …

客户关系管理的定义及三种常见的CRM系统

CRM旨在加强企业与客户的关系,建立以客户为中心的经营策略。随着技术的迅速发展,CRM的实施变得更加普遍,不仅能帮助企业与客户建立紧密联系,还能实现客户细分开展个性化的营销活动。客户关系管理是什么,CRM怎么分&…

【MySQL】数据库的操作

目录 前言 创建数据库 编码集和校验集 不同校验集的区别 删除数据库 确认当前数据库 查看数据库属性 修改数据库属性 备份与还原 数据库和表的备份 还原 创建表 查看列结构 查看表属性 修改表的列 修改表名称 修改列名称 删除表 前言 在上一篇文章中&#…

什么是生成对抗网络 (GAN)?

什么是生成对抗网络 (GAN)? 钦吉兹赛义德贝利 一、说明 GAN(Generative Adversarial Network)网络是一种深度学习模型,由两个神经网络——生成器和判别器组成。生成器负责生成虚假的数据,而判别…

Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)

Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等) 准备文件,这里我放在resource下的templates路径 在pom中配置构建打包的资源,更新maven 如果使用了assembly打包插件这样配置可能仍不生效&#…

Windows+Pycharm 如何创建虚拟环境

当我们开发一个别人的项目的时候,因为项目里有很多特有的包,比如 Pyqt5.我们不想破坏电脑上原来的包版本,这个时候,新建一个虚拟环境,专门针对这个项目就很有必要了. 简略步骤: 1.新建虚拟环境 1.打开 pycharm 终端(Terminal)安装虚拟环境工具: pip install virtualenv2.创…

基于FPGA的图像指数对比度增强算法实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1图像指数对比度增强概述 4.2基于FPGA的图像指数对比度增强 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns…

Redis——渐进式遍历和数据库管理命令

介绍 如果使用keys * 这样的操作,将Redis中所有的key都获取到,由于Redis是单线程工作,这个操作本身又要消耗很多时间,那么就会导致Redis服务器阻塞,后续的操作无法正常执行 而渐进式遍历,通过多次执行遍历…

虹科展会丨9月19号工博会启航:虹科五大团队携20+产品,双展台+两场演讲等您来!

2023年9月19-23日,第23届中国国际工业博览会即将在上海国家会展中心拉开帷幕。本届工博会以“碳循新工业、数聚新经济”为主题,展览面积30万平方米,吸引了来自全球27个国家和地区超2600家企业参展,共设置九大专业展区,…

电子游戏冷知识

电子游戏一直在试图用技术还原一个真实或虚幻的世界,并在其中演绎和倾诉人类种种的情感和欲望。 对信息技术发展的贡献 游戏推动了芯片、网络、VR/AR等领域的技术进步和创新。根据中科院的研究报告,游戏技术对芯片产业的科技进步贡献率是14.9%&#xff…

清华大学LightGrad-TTS,且流式实现

论文链接: https://arxiv.org/abs/2308.16569 代码地址: https://github.com/thuhcsi/LightGrad 数据支持: 针对BZNSYP和LJSpeech提供训练脚本 针对Grad-TTS提出两个问题: DPMs are not lightweight enough for resource-con…

真空腔体的设计要点

真空腔体是保持内部为真空状态的容器,真空腔体设计制作要考虑容积、材质和形状。 1、根据应用需求选择腔体形状。几种代表性的真空腔体包括垂直真空腔体、水平真空腔体、立方真空腔体和球形真空腔体。 2、根据获得真空度选择腔体材质。钛用于极高真空;…

轻松学习 Spring 事务

文章目录 一. Spring事务简介二. Spring事务使用1. 编程式事务2. 声明式事务 三. Transactional的使用1. 参数作用2. 事务失效的场景3. Transactional工作原理 四. Spring 事务的隔离级别五. Spring事务传播机制 一. Spring事务简介 在之前的博客已经介绍了在 Spring 环境中整…

《向量数据库指南》——Milvus Cloud是如何从 0 到 1 做一款向量数据库的?经过了哪些升级和迭代?

这实际上是一个颇具曲折性和难得性的故事。由于我自己是在公司中间加入的,从 2.0 版本开始参与了 Milvus 的构建,而我们公司在向量数据库领域已经有大约 5 年的历史了。 最初,我们看到了这个机会,并意识到有诸如 Faiss 等引擎在处…