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

相关文章

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常