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

2024-06-15 10:04

本文主要是介绍python数据分析---ch10 数据图形绘制与可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 # 2fig = 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(雇员号)                             EM002EM003EM005EM008Age                                                     147Sales                                                   506BMI(体质指数)                 OverweightObesityOverweightNormalIncome                                                  922
M       EMPID(雇员号)                   EM001EM004EM006EM007EM009EM010Age                                                     200Sales                                                   782BMI(体质指数)     NormalOverweightNormalObesityNormalOverweightIncome                                                  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()

在这里插入图片描述

这篇关于python数据分析---ch10 数据图形绘制与可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063141

相关文章

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4