python数据分析---ch10 数据图形绘制与可视化

news2025/2/23 6:11:09

python数据分析--- ch10 python数据图形绘制与可视化

  • 1. Ch10--python 数据图形绘制与可视化
    • 1.1 模块导入
    • 1.2 数据导入
  • 2. 绘制直方图
    • 2.1 添加图表题
    • 2.2 添加坐标轴标签
  • 3. 绘制散点图
  • 4. 绘制气泡图
  • 5. 绘制箱线图
    • 5.1 单特征的箱线图
    • 5.2 多特征的箱线图
  • 6. 绘制饼图
  • 7. 绘制条形图
    • 7.1 简单条形图
    • 7.2 堆积柱形图
  • 8. 绘制折线图
    • 8.1 单折线图
    • 8.2 多折线图
  • 9. 绘制3D图

1. Ch10–python 数据图形绘制与可视化

Python 中有多个用于数据可视化的库,其中最常用的包括 Matplotlib、Seaborn、Plotly 和 Bokeh 等。以下是这些库中一些常用图形可视化方法的整理表格:

例10-1:为了解某公司雇员的的销售和收入情况,我们搜集整理了某公司10个雇员的销售和收入有关方面的数据,如表10-1所示。试通过绘制直方图来直观该公司职员的有关情况。j

1.1 模块导入

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

1.2 数据导入

python常见数据的存取
dataframe基本操作
数据文件ch10-1.xls下载

df = pd.read_excel('./data/ch10-1.xls')
print(type(df))
df.head()
<class 'pandas.core.frame.DataFrame'>
EMPID(雇员号)GenderAgeSalesBMI(体质指数)Income
0EM001M34123Normal350
1EM002F40114Overweight450
2EM003F37135Obesity169
3EM004M30139Overweight189
4EM005F44117Overweight183

2. 绘制直方图

  • 特点:直方图用于展示数据的分布情况,通过数据分组(通常是连续的数值区间),显示每个组内的频数或频率。
  • 使用场景:当需要了解数据集中数值变量的分布情况时使用。
# %matplotlib inline
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(df['Age'],bins=7)
plt.show()

在这里插入图片描述

2.1 添加图表题

#中文字符设定 plt.rcParams属性总结
plt.rcParams['font.sans-serif']=['SimHei'] # 1
plt.rcParams['axes.unicode_minus']=False # 2

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(df['Age'],bins=7)
plt.title("年龄分布图") # 3
# plt.title("age distribution")#2-1
plt.show()

在这里插入图片描述

2.2 添加坐标轴标签

#中文字符设定 plt.rcParams属性总结
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False 

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(df['Age'],bins=7)
plt.title("年龄分布图") 
plt.xlabel('年龄')
plt.ylabel('雇员数量')
plt.show()

在这里插入图片描述

3. 绘制散点图

  • 特点:散点图用于展示两个变量之间的关系,每个点代表一个数据项。
  • 使用场景:当需要分析两个数值变量之间是否存在某种关系时使用。
fig = plt.figure(figsize=(5, 3))
ax = fig.add_subplot(1,1,1)
ax.scatter(df['Age'],df['Sales'])
plt.title('雇员年龄与销售额的散点图')
plt.xlabel('年龄')
plt.ylabel('销售额')
plt.show()

在这里插入图片描述

4. 绘制气泡图

  • 特点:气泡图是散点图的扩展,通过气泡的大小来表示第三个数值变量的大小。
  • 使用场景:当需要在两个数值变量的关系中展示第三个数值变量的大小时使用。
fig = plt.figure(figsize=(5, 3))
ax = fig.add_subplot(1,1,1)
ax.scatter(df['Age'],df['Sales'],s=df['Income'])#引入了第三个变量Income
plt.title('雇员年龄、销售额与收入的气泡图')
plt.xlabel('年龄')
plt.ylabel('销售额')
plt.show()

在这里插入图片描述

5. 绘制箱线图

  • 特点:箱线图用于展示数据的分布情况,包括中位数、四分位数以及异常值。
  • 使用场景:当需要了解数据集中数值变量的分布并识别潜在的异常值时使用。

5.1 单特征的箱线图

fig = plt.figure(figsize=(5, 3))
ax = fig.add_subplot(1,1,1)
ax.boxplot(df['Age'])
plt.title('雇员年龄箱线图')
plt.xlabel('年龄')
plt.show()

在这里插入图片描述

5.2 多特征的箱线图

features = ['Age','Sales','Income']
data = df[features]
print(data.head())
plt.show(data.plot(kind='box',title='多属性箱线图'))
   Age  Sales  Income
0   34    123     350
1   40    114     450
2   37    135     169
3   30    139     189
4   44    117     183

在这里插入图片描述

6. 绘制饼图

  • 特点:饼图用于展示各部分占整体的比例。
  • 使用场景:当需要展示各分类变量占总体的比例时使用。

比较男雇员与女雇员的销售收入

# Step1 分组计算男女雇员的收入之和
sum_income = df.groupby(['Gender']).sum().stack()
print(sum_income)
Gender            
F       EMPID(雇员号)                             EM002EM003EM005EM008
        Age                                                     147
        Sales                                                   506
        BMI(体质指数)                 OverweightObesityOverweightNormal
        Income                                                  922
M       EMPID(雇员号)                   EM001EM004EM006EM007EM009EM010
        Age                                                     200
        Sales                                                   782
        BMI(体质指数)     NormalOverweightNormalObesityNormalOverweight
        Income                                                  900
dtype: object
temp = sum_income.unstack()
x_list = temp['Sales']
label_list = temp.index
plt.axis('equal')
# plt.pie(x_list)
plt.pie(x_list,labels=label_list)
plt.title('饼图')
plt.show()

在这里插入图片描述

from pylab import *
figure(1, figsize=(4,4))
ax = axes([0.1, 0.1, 0.8, 0.8])
fracs = [60, 40]             #每一块占得比例,总和为100
explode=(0, 0.08)             #离开整体的距离,看效果
labels = '男', '女'  #对应每一块的标志
pie(fracs,explode=explode,labels=labels,autopct='%1.1f%%', shadow=True, startangle=90, colors = ("g", "r"))
title('男女销售收入占比')   #标题
show()

在这里插入图片描述

7. 绘制条形图

  • 特点:条形图用于比较不同类别的数值大小。
  • 使用场景:当需要比较不同分类变量的数值时使用。

7.1 简单条形图

var=df.groupby('Gender').Sales.sum()
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
ax1.set_xlabel('性别')
ax1.set_ylabel('销售收入和')
ax1.set_title("分性别的销售收入之和")
var.plot(kind='bar')

在这里插入图片描述

7.2 堆积柱形图

var=df.groupby(['BMI(体质指数)','Gender']).Sales.sum()
var.unstack().plot(kind='bar',stacked=True,color=['red','blue'])

在这里插入图片描述

8. 绘制折线图

  • 特点:折线图用于展示数据随时间或有序类别的趋势。
  • 使用场景:当需要展示数值随时间变化的趋势时使用。

8.1 单折线图

var=df.groupby('BMI(体质指数)').Sales.sum()
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
ax1.set_xlabel('BMI(体质指数)')
ax1.set_ylabel('销售收入和')
ax1.set_title("BMI分类的销售收入和")
var.plot(kind='line')

在这里插入图片描述

8.2 多折线图

某村每年进行人口普查,该村近年的人口数据如表 ch10-2 所示。

试通过绘制曲线标绘图来分析研究该村的人口情况变化趋势以及新生儿对总人口数的影响程度。

数据文件ch10-2.csv下载

import pandas as pd
import numpy as np
df2=pd.read_csv('./data/ch10-2.csv ')
df2.head()
yeartotalnew
0199712815
1199813816
2199914416
3200015617
4200116621
t = np.array(df2[['year']])
x = np.array(df2[['total']])
y = np.array(df2[['new']])
import pylab as pl
pl.plot(t, x)
pl.plot(t, y)
pl.show()

在这里插入图片描述

import pylab as pl
pl.plot(t, x)
pl.plot(t, y)
pl.title('1997-2023年人口普查数据')
pl.xlabel('年份')
pl.ylabel('人口数')
pl.show()

在这里插入图片描述

pl.plot(t, x)
pl.title('1997-2023年人口普查数据')
pl.xlabel('年份')
pl.ylabel('总人口数')
pl.show()

在这里插入图片描述

pl.plot(t, x,'ro')
pl.title('1997-2023年人口普查数据')
pl.xlabel('年份')
pl.ylabel('总人口数')
pl.show()

在这里插入图片描述

9. 绘制3D图

  • 特点:3D图可以展示三个数值变量之间的关系。
  • 使用场景:当需要在三维空间中展示数据点的分布时使用。
import random
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_toolkits.mplot3d import Axes3D
mpl.rcParams['font.size'] = 10
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for z in [2011, 2012, 2013, 2014]:
    xs = range(1,13)
    ys = 1000 * np.random.rand(12)
    color =plt.cm.Set2(random.choice(range(plt.cm.Set2.N)))
    ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)
ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))
ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))
ax.set_xlabel('月份')
ax.set_ylabel('年份')
ax.set_zlabel('净销售额 [元]')
plt.show()

在这里插入图片描述

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
n_angles = 36
n_radii = 8
# An array of radii
# Does not include radius r=0, this is to eliminate duplicate points
radii = np.linspace(0.125, 1.0, n_radii)
# An array of angles
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
# Repeat all angles for each radius
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
# Convert polar (radii, angles) coords to cartesian (x, y) coords
# (0,0)is added here.There are no duplicate points in the (x, y)plane
x = np.append(0, (radii * np.cos(angles)).flatten())
y = np.append(0, (radii * np.sin(angles)).flatten())
# Pringle surface
z = np.sin(-x * y)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
plt.show()

在这里插入图片描述

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

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

相关文章

网络编程(四)

一、使用wireshark抓包分析协议头 &#xff08;一&#xff09;wireshark常用的过滤语句 tcp.port <想要查看的端口号> ip.src <想要查看的源IP地址> ip.dest <想要查看的目的IP地址> ip.addr <想要查看的IP地址>&#xff08;二&#xff09;抓包分…

【linux】应用程序访问百度时,操作系统内核网络接口日志

代码合入&#xff1a; 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/c639573cc7c4984913d4a89884347e5a30a51eac 启动操作系统运行dmesg的日志像这样&#xff1a; dmesg_log/2024_06_14_00_40_54.txt r77683962/linux-6.9.0 - Gitee.com 注意&#xf…

利用MongoDB构建现代支付系统|附《利用AI在支付领域的优势》报告下载

MongoDB 支付 通过实时整合和分析任何格式的数据 来丰富支付体验 为消费者提供增值服务和功能 丰富的支付体验 接受并丰富任何支付数据类型 使用灵活的文档数据模型实时整合和处理任何支付数据类型。JSON 文档&#xff08;与 MongoDB 使用的数据格式相同&#xff09;是支…

AI 一键换脸,背景替换,ioDraw让图片更有趣

还在为繁琐的图片处理而烦恼吗&#xff1f;快来试试ioDraw的AI图片工具&#xff01; 它集图像识别、图像生成、智能换脸、背景替换、图像融合、肖像风格化、空间风格化、智能扩图、智能抠图、画质提升、美颜、拉伸修复、透视校正等功能于一身&#xff0c;为你提供前所未有的图…

ssm162基于SSM的药房药品采购集中管理系统的设计与实现+vue

药房药品采购集中管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对药房药品采购信息管理混乱&…

使用Unsloth微调Llama3-Chinese-8B-Instruct中文开源大模型

微调Llama3-Chinese-8B-Instruct 微调是指在大规模预训练的基础模型上,使用特定领域或任务数据集进行少量迭代训练,以调整模型参数,提升其在特定任务上的表现。这种方法可以充分利用预训练模型的广泛知识,同时针对特定应用进行优化,达到更精准高效的效果。 Llama-3-Chinese-8B-…

【imagenet数据集下载】OpenxLab 数据集下载

最近在找Imagenet-1K的数据集&#xff0c;但是好多帖子上都说要到官网或网盘下载&#xff0c;但是下载慢&#xff0c;于是在OpenxLab中找到了Imagenet-1K数据集&#xff0c;只需要登陆就可以下载。 有两种方式下载&#xff1a; 1.页面下载 2.脚本下载 下载完成后会有ImageNe…

判断QT程序是否重复运行

打开exe&#xff0c;再次打开进行提示。 main.cpp添加&#xff1a; #include "QtFilePreview.h" #include <QtWidgets/QApplication> #include <windows.h> #include <qmessagebox.h> #pragma execution_character_set("utf-8")bool Ch…

Java GUI编程

引言 图形用户界面&#xff08;GUI&#xff09;编程是使应用程序与用户进行交互的重要部分。Java提供了多种用于GUI开发的工具和库&#xff0c;最常用的是Swing和AWT。本文将详细介绍Java GUI编程的基础知识&#xff0c;包括Swing和AWT框架、事件处理以及高级GUI组件的使用&…

利用74HC165实现8路并行输入口的扩展

代码&#xff1a; #include <mega16.h>// Declare your global variables here #define hc165_clk PORTB.0 #define hc165_lp PORTB.1 #define hc165_out PINB.2unsigned char read_hc165(void) {unsigned char data0,i,temp0x80;hc165_lp0;hc165_lp1; for(i0;i<7;i)…

活动回顾|盘古信息中小企业数转案例鉴赏活动(电子制造专场)圆满落幕

6月13日&#xff0c;由盘古信息主办的中小企业数转案例鉴赏活动&#xff08;电子制造专场&#xff09;成功举行&#xff0c;此次活动汇聚了多家东莞市制造企业相关代表&#xff0c;通过解读中小企业数字化转型政策动向、探讨行业趋势、参观数字化展厅并实地走访了广东毅达医疗科…

【Kafka】Kafka生产者-04

【Kafka】Kafka生产者-04 1. 生产者发送消息流程1.1 发送原理 2. 相关文档 1. 生产者发送消息流程 1.1 发送原理 在消息发送的过程中&#xff0c;涉及到了两个线程——main 线程和 Sender 线程。 在 main 线程中创建了一个双端队列 RecordAccumulator。 main 线程将消息发送给…

0. 云原生之基于乌班图远程开发

云原生专栏大纲 文章目录 安装乌班图配置静态IP重置root密码开启root远程登录开启远程SSH访问安装docker安装docker-compose安装Edge浏览器安装搜狗输入法安装TeamViewer安装虚拟显示器安装JDK安装maven安装vscodevscode插件安装VSCode配置maven、git、jdk、自动报错vscode快捷…

[C++]使用C++部署yolov10目标检测的tensorrt模型支持图片视频推理windows测试通过

【测试通过环境】 vs2019 cmake3.24.3 cuda11.7.1cudnn8.8.0 tensorrt8.6.1.6 opencv4.8.0 【部署步骤】 获取pt模型&#xff1a;https://github.com/THU-MIG/yolov10训练自己的模型或者直接使用yolov10官方预训练模型 下载源码&#xff1a;https://github.com/laugh12321/yol…

WinForm之TCP客户端通讯

目录 一 设计界面 二 后台代码 一 设计界面 二 后台代码 using System.Net.Sockets; using System.Text;namespace TCP网络客户端通讯 {public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpClient tcpClient new TcpClient();private void conne…

前端面试项目细节重难点(已工作|做分享)(九)

面试官&#xff1a;请你讲讲你在工作中如何开发一个新需求&#xff0c;你的整个开发过程是什么样的&#xff1f; 答&#xff1a;仔细想想&#xff0c;我开发新需求的过程如下&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;理解需求文档&#xff1a; 首先&#x…

Java核心(四)反射

这篇内容叫反射也不够准确&#xff0c;其实它更像是java类加载的一个延申。 Java类加载过程 之前解释过一个Java的类的加载过程&#xff0c;现在回顾一下类的加载&#xff1a; 类的加载指的是将类的字节码文件&#xff08;.class文件&#xff09;中数据读入到内存中&#xff…

AI办公自动化:kimi批量搜索提取PDF文档中特定文本内容

工作任务&#xff1a;PDF文档中有资料来源这一行&#xff0c;比如&#xff1a; 资料来源&#xff1a;moomoo tech、The Information、Bloomberg、Reuters&#xff0c;浙商证券研究所 数据来源&#xff1a;CSDN、浙商证券研究所 数据来源&#xff1a;CSDN、arXiv、浙商证券研…

精品丨PowerBI迁移到SSAS

业务场景&#xff1a; 企业初期在进行 BI 可视化路线的时候&#xff0c;往往不会选择方案较为完整的SSAS&#xff0c;而是会选择轻量的 PowerBI 方案&#xff0c;究其根本还是软件成本的问题。 但是随着模型越来越臃肿&#xff0c;维护成本越来越高&#xff0c;有很多模型需要进…

VictoriaMetrics的高可用二进制方式部署

参考文章实现&#xff1a;Prometheus联邦集群VictoriaMetrics集群搭建部署 1.基本信息 涉及机器列表&#xff0c;机器均为本地虚拟机 192.168.56.108 192.168.56.109方案实现如下 涉及模块介绍 vmstorage: 数据存储节点&#xff0c;负责存储时序数据vmselect: 数据查询节点…