实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)
一、实验目的
Python 数据可视化:
1、学习使用 jieba、wordcloud 等类库生成词云图。
2、学习使用 Matplotlib 库进行数据可视化。
Python 聚类-K-means:
1、理解聚类非监督学习方法的基本原理。
2、掌握 Python、numpy、pandas、sklearn 实现聚类的方法。
二、实验原理
运用 Anaconda 搭建的 Spyder平台编写 Python 实例程序。
运用 Anaconda 搭建的 Spyder平台编写实例 Python K-means 聚类程序。
三、使用软件平台
1、Windows 11电脑一台。
2、Anaconda、Python、Spyder平台。
四、实验内容
实例1:简历信息词云图

结果:

代码:
对了记得把老师的文件放在同一个文件夹下
import jieba
import imageio
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 读取个人信息文件
with open("per_info.txt", "r", encoding="utf-8") as f:word_content = f.read().replace("\n", "")# 读取背景图片
mask_img = imageio.imread("china.jpg")# 分词处理
word_cut = jieba.cut(word_content)
word_cut_join = " ".join(word_cut)# 创建词云对象
wc = WordCloud(font_path="STXINGKA.ttf", # 选择支持中文的字体mask=mask_img, # 背景图background_color="white", # 背景颜色max_words=500, # 最大显示词语数max_font_size=80 # 最大字体
)# 生成词云
wc.generate(word_cut_join)# 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()# 保存词云到本地
wc.to_file("personal_wordcloud.jpg")
实例2:疫情病例数发展趋势可视化

结果:

代码:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams# 设置字体为 SimHei(黑体)
rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
rcParams['axes.unicode_minus'] = False # 解决负号显示问题# 读取疫情数据
data_file = "cq_COVID-19.xlsx"
data = pd.read_excel(data_file)# 提取日期和感染人数并保存到列表
dates = pd.to_datetime(data['日期']).tolist() # 转换为 Python 列表
cases = data['感染人数'].tolist() # 转换为 Python 列表# 打印两个列表(仅供调试)
print("日期列表:", dates)
print("感染人数列表:", cases)# 绘制折线图
plt.figure(figsize=(12, 6))
plt.plot(dates, cases, marker='o', linestyle='-', label='感染人数')# 设置图表标题和轴标签
plt.title('重庆疫情病例数发展趋势--来自420刘清城', fontsize=16)
plt.xlabel('日期', fontsize=12)
plt.ylabel('感染人数', fontsize=12)# 美化图表
plt.grid(alpha=0.3)
plt.xticks(rotation=45) # 日期横轴倾斜以便阅读
plt.legend()
plt.tight_layout()# 显示图表
plt.show()
实例3:基于经纬度的城市聚类
结果:

代码:
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 读取城市数据
file_path = "China_cities.csv" # 确保文件路径正确
data = pd.read_csv(file_path)# 检查数据
print("数据预览:")
print(data.head())# 提取经纬度数据
coordinates = data[['北纬', '东经']]# 数据清洗:确保数据没有缺失值
coordinates = coordinates.dropna()# 转换为数值类型(如果必要)
coordinates['北纬'] = pd.to_numeric(coordinates['北纬'], errors='coerce')
coordinates['东经'] = pd.to_numeric(coordinates['东经'], errors='coerce')# 丢弃无法转换为数值的行
coordinates = coordinates.dropna()# 使用 K-Means 模型进行聚类
kmeans = KMeans(n_clusters=5, random_state=42) # 将城市分为3类
data['聚类标签'] = kmeans.fit_predict(coordinates)# 输出聚类中心
print("聚类中心:")
print(kmeans.cluster_centers_)# 绘制聚类结果图
plt.figure(figsize=(10, 6))
colors = ['gray', 'blue', 'green',"yellow","cyan"]for i in range(5): # 根据聚类标签绘制不同颜色的点cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points['东经'], cluster_points['北纬'], c=colors[i], label=f'聚类{i+1}')# 绘制聚类中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 1], centers[:, 0], c='Red', marker='*', s=200, label='聚类中心')# 设置图表标题和轴标签
plt.title('中国主要城市聚类图', fontsize=16)
plt.xlabel('东经', fontsize=12)
plt.ylabel('北纬', fontsize=12)
plt.legend()
plt.grid()
plt.show()
思考题一:

结果:

代码:
import jieba
import matplotlib.pyplot as plt# 读取政府工作报告文件
file_path = "govreport-2022.txt" # 替换为实际文件路径
with open(file_path, "r", encoding="utf-8") as f:text = f.read()# 分词处理
words = jieba.lcut(text)# 统计词频并存储到字典
word_count = {}
for word in words:# 去除标点符号和无意义的单字if len(word) > 1 and word not in [",", "。", "、", "“", "”", "的", "和", "是", "在"]:word_count[word] = word_count.get(word, 0) + 1# 将字典转换为列表并按词频降序排序
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)# 提取前5个高频词并构建两个列表
top_words = sorted_word_count[:5]
words = [item[0] for item in top_words]
counts = [item[1] for item in top_words]# 绘制柱状图
plt.figure(figsize=(10, 6))
bars = plt.bar(words, counts, color="skyblue")# 在每个柱上方添加数字
for bar, count in zip(bars, counts):plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), # 坐标调整str(count), ha="center", va="bottom", fontsize=15)# 设置标题和标签
plt.title("2022年政府工作报告高频词", fontsize=16)
plt.xlabel("单词名称", fontsize=20)
plt.ylabel("出现频率", fontsize=20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.tight_layout()# 显示图表
plt.show()
思考题二:
结果:
代码:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from matplotlib import rcParams# 设置字体为 SimHei(黑体)
rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
rcParams['axes.unicode_minus'] = False # 用来正常显示负号# 加载鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['种类'] = iris.target# 查看数据集前5行
print("鸢尾花数据集前5行:")
print(data.head())# 提取四个特征数据
features = data.iloc[:, :4] # 全部四个特征# 使用 K-Means 模型进行聚类
kmeans = KMeans(n_clusters=3, random_state=42) # 将数据分为3类
data['聚类标签'] = kmeans.fit_predict(features)# 输出聚类中心
print("聚类中心:")
print(kmeans.cluster_centers_)# 绘制两张图
plt.figure(figsize=(12, 10))# 子图1:花萼长度和宽度
plt.subplot(2, 1, 1)
colors = ['yellow', 'blue', 'green']
markers = ['o', 's', '^'] # 圆形、方形、三角形for i in range(3): # 遍历3个聚类cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points.iloc[:, 0], cluster_points.iloc[:, 1], c=colors[i], marker=markers[i], label=f'聚类{i+1}')# 绘制聚类中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='*', s=300, label='聚类中心')# 设置标题和轴标签
plt.title('鸢尾花按花萼特征聚类图', fontsize=16)
plt.xlabel('花萼长度', fontsize=12)
plt.ylabel('花萼宽度', fontsize=12)
plt.legend()
plt.grid()# 子图2:花瓣长度和宽度
plt.subplot(2, 1, 2)for i in range(3): # 遍历3个聚类cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points.iloc[:, 2], cluster_points.iloc[:, 3], c=colors[i], marker=markers[i], label=f'聚类{i+1}')# 绘制聚类中心
plt.scatter(centers[:, 2], centers[:, 3], c='red', marker='*', s=300, label='聚类中心')# 设置标题和轴标签
plt.title('鸢尾花按花瓣特征聚类图', fontsize=16)
plt.xlabel('花瓣长度', fontsize=12)
plt.ylabel('花瓣宽度', fontsize=12)
plt.legend()
plt.grid()# 显示图形
plt.tight_layout()
plt.show()
相关文章:
实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)
一、实验目的 Python 数据可视化: 1、学习使用 jieba、wordcloud 等类库生成词云图。 2、学习使用 Matplotlib 库进行数据可视化。 Python 聚类-K-means: 1、理解聚类非监督学习方法的基本原理。 2、掌握 Python、numpy、pandas、sklearn 实现聚类…...
通义万相2.1:开启视频生成新时代
摘要:文章开篇便点明了通义万相2.1在视频生成领域的重大突破,强调其作为阿里云通义系列AI模型的重要成员,不仅是简单的模型升级,更是视频生成技术迈向更智能、高效、精准的重要里程碑。其核心技术包括自研的高效VAE和DiT架构&…...
爬虫案例十一js逆向数位观察网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码总结 前言 提示:这里可以添加本文要记录的大概内容: 爬虫案例十一js逆向数位观察网 提示:以下是本篇…...
WSL安装及问题
1 概述 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和…...
WordPress开发到底是开发什么?
WordPress 开发主要涉及基于 WordPress 平台构建、定制和扩展网站功能的过程。它不仅仅是简单的网站搭建,而是通过代码和技术实现个性化需求。 以下是 WordPress 开发的核心内容: 1. 主题开发(Theme Development) 功能ÿ…...
元脑服务器的创新应用:浪潮信息引领AI计算新时代
浪潮信息的元脑 R1 服务器现已全面支持开源框架 SGLang,能够在单机环境下实现 DeepSeek 671B 模型的高并发性能,用户并发访问量超过1000。通过对 SGLang 最新版本的深度适配,元脑 R1 推理服务器在运行高性能模型时,展现出卓越的处…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(9)
7.3. 查询计划相关操作符 78)Repartition Streams:该操作符消费多个输入流并产生多个输出流。期间,记录内容与格式保持不变。如果查询优化器使用一个位图过滤(bitmap filter),则输出流中的数据行数将会减少。一个输入流的每行记录被放入一个输出流。如果该操作符保留顺序…...
单片机项目复刻需要的准备工作
一、前言 复刻单片机的项目的时候,有些模块是需要焊接的。很多同学对焊接没有概念。 这里说一下做项目的基本工具。 比如:像这种模块,都需要自己焊接了排针才可以链接的。 二、基本模块 2.1 单排排针 一些模块买回来是没有焊接的&#x…...
【哇! C++】类和对象(五) - 赋值运算符重载
目录 编辑 一、运算符重载 1.1 运算符重载概念 1.2 全局运算符重载 1.3 运算符重载为成员函数 二、赋值运算符重载的特性 2.1 赋值运算符重载需要注意的点 2.2 赋值运算符重载格式 2.2.1 传值返回 2.2.2 传引用返回 2.2.3 检查自己给自己赋值 三、赋值运算符重载的…...
SpringCloud系列教程(十三):Sentinel流量控制
SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Se…...
vue+element|el-tree树设置懒加载和设置默认勾选
文章目录 导文代码实现1. 基本结构2. 懒加载实现3. 默认勾选功能4. 动态加载初始节点5. 节点勾选事件监听完整代码 导文 在实际开发中,很多数据过于庞大,需要分批请求,使用到懒加载。但是在tree的方法中,使用懒加载后无法直接使用…...
零售交易流程相关知识(top-down拆解)
引入 关于POS机交易时的后台数据交互 模块之间数据交换,都可以能被窃取或篡改。由此引入加密、解密机制和签名、验签机制 经典的加密、解密机制: 对称加密:DES\ TDES\ AES\ RC4 非对称加密:RSA\ DSA\ ECC 经典的签名、验签…...
混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%
企业日常运行各种文件无处不在,文档、报告、视频、应用数据......面对成千上万的文件,团队之间需要做到无障碍协作,员工能够即时快速访问、共享处理文件。随着业务增长,数字化办公不仅需要大容量,快速高效的文件访问越…...
将本地已有的项目上传至仓库
上传的仓库为Gitee 进入项目目录: 使用命令行工具进入你想要上传的项目的根目录。 初始化Git仓库: 如果项目目录尚未初始化为Git仓库,执行以下命令: git init 执行完成后,项目根目录下会自动生成一个隐藏的.git文件夹…...
中级网络工程师面试题参考示例(3)
一、企业园区网络 问题1:如何实现园区网络的自动化部署和管理?请结合实际场景说明技术选型。 答案要点: 技术选型: SDN(软件定义网络):通过控制器(如Cisco DNA Center)…...
祝福语【算法赛】
题目来源:第 27 场 蓝桥入门赛【算法题】 可以参考一下,本人也是比较菜 不喜勿喷,求求求 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String S sc.nextLi…...
前端 | CORS 跨域问题解决
问题:Access to fetch at http://localhost:3000/save from origin http://localhost:5174 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the request…...
MySQL知识点(第一部分)
MySQL 基础: 1、SQL语句的分类: DDL:用于控制数据库的操作DML:用于控制表结构的字段,增、删、修DQL:用于查询语句DCL:用于管理数据库,用户,数据库的访问 权限。 2、M…...
ChatGPT使用经验分享
ChatGPT 3.5模型 与 4模型的区别 ChatGPT 3.5 示例 问:树上有9只鸟,打死了一只还剩几只? 答:如果打死了一只鸟,那么树上还剩下8只鸟。 ChatGPT 4 示例 问:树上有9只鸟,打死了一只还剩几只&…...
Webshell原理与利用
本文内容仅用于技术研究、网络安全防御及合法授权的渗透测试,严禁用于任何非法入侵、破坏或未经授权的网络活动。 1. WebShell的定义与原理 定义:WebShell是一种基于Web脚本语言(如PHP、ASP、JSP)编写的恶意后门程序,…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

