【python】python古代玻璃制品的成分数据分析与可视化(源码+数据+课程论文)【独一无二】

简介: 【python】python古代玻璃制品的成分数据分析与可视化(源码+数据+课程论文)【独一无二】

一、设计背景

我国古代玻璃制品作为历史文化遗产的重要组成部分,蕴含着丰富的历史信息和工艺技术。通过对这些玻璃制品的化学成分进行系统的分析和分类研究,不仅可以揭示古代玻璃制造工艺的秘密,还可以为文化遗产保护提供科学依据。然而,由于古代玻璃制品的成分复杂,且存在不同类型(如高钾玻璃和铅钡玻璃),传统的分析方法难以有效区分和分类这些制品。因此,采用现代数据分析和可视化技术,对这些玻璃制品的化学成分进行深入研究,成为了解决这一问题的关键。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈


古代玻璃制品的成分分析与鉴别 丝绸之路是古代中西方文化交流的通道,其中玻璃是早期贸易往来的宝贵

物证。早期的玻璃在西亚和埃及地区常被制作成珠形饰品传入我国,我国古代玻璃吸收其技术后在本土就地取 材制作,因此与外来的玻璃制品外观相似,但化学成分却不相同。玻璃的主要原料是石英砂,主要化学成分是二氧化硅(SiO2)。由于纯石英砂的熔点较高, 为了降低熔化温度,在炼制时需要添加助熔剂。古代常用的助熔剂有草木灰、天然泡碱、硝石和铅矿石等,并添加石灰石作为稳定剂,石灰石煅烧以后转化为氧化钙(CaO)。添加的助熔剂不同,其主要化学成分也不同。例如,铅钡玻璃在烧制过程中加入铅矿石作为助熔剂,其氧化铅(PbO)、氧化

钡(BaO)的含量较高,通常被认为是我国自己发明的玻璃品种,楚文化 的玻璃就是以铅钡玻璃为主。钾玻璃是以含钾量高的物质如草木灰作为助熔剂烧制而成的,主要流行于我国岭南以及东南亚和印度等区域。古代玻璃极易受埋藏环境的影响而风化。在风化过程中,内部元素与环境元素进行大量交换,导致其成分比例发生变化,从而影响对其类别的正确判断。如图 1 的文物标记为表面无风化,表面能明显看出文物的颜色、纹饰,但不排除局部有较浅的风化;图 2 的文物标记为表面风化,表面大面积灰黄色区域为风化层,是明显风化区域,紫色部分是一般风化表面。在部分风化的文物中,其表面也有未风化的区域


现有一批我国古代玻璃制品的相关数据,考古工作者依据这些文物样品的化学成分和其他 检测手段已将其分为高钾玻璃和铅钡玻璃两种类型。附件表单1 给出了这些文物的分类信息, 附件表单 2 给出了相应的主要成分所占比例

(空白处表示未检测到该成分)。这些数据的特点是成分性,即各成分比例的累加和应为 100%,但因检测手段等原因可能导致其成分比例的累加和非 100%的情况。本题中将成分比例累加和介于 85%~105%之间的数据视为有效数据。请你们团队依据附件中的相关数据进行分析建模,解决以下问题:

问题 1 :依据附件数据分析高钾玻璃、铅钡玻璃的分类规律;对于每个类别选择合适的化 学成分对其进行亚类划分,给出具体的划分方法及划分结果.

问题 2 :对附件表单 3 中未知类别玻璃文物的化学成分进行分析,鉴别其所属类型,并对 分类结果的敏感性进行分析。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈



二、代码分析

问题一

设计思路旨在通过数据分析和可视化技术对我国古代玻璃制品进行深入的成分分析和分类识别。首先,代码从一个包含多张表单的Excel文件中读取数据。这些数据表单分别包含玻璃制品的基本信息和化学成分数据。通过使用pandas库的read_excel函数,代码将这两张表单的数据加载到两个数据框中,并确保数据框中的关键列类型一致。

   data_sheet1 = pd.read_excel(file_path, sheet_name='表单1', engine='openpyxl')
   data_sheet2 = pd.read_excel(file_path, sheet_name='表单2', engine='openpyxl')

接着,代码将两个数据框按照共同的标识符(即文物编号和文物采样点)进行合并,形成一个包含所有相关信息的综合数据框。为了进一步处理数据,代码定义了一个包含所有化学成分百分比的列列表,并计算每个样本的化学成分总和。由于实际检测过程中可能存在数据误差,因此代码对这些总和进行过滤,仅保留总和在85%到105%之间的有效样本。这一步确保了后续分析数据的可靠性。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

combined_data = pd.merge(data_sheet1, data_sheet2, left_on='文物编号', right_on='文物采样点', how='inner')
combined_data['composition_sum'] = combined_data[composition_columns].sum(axis=1)

在筛选出有效样本后,代码根据玻璃制品的类型将数据分为高钾玻璃和铅钡玻璃两类。通过对每类玻璃的化学成分进行均值计算,生成了两个表示高钾玻璃和铅钡玻璃平均化学成分的数据框。随后,代码使用matplotlib库和seaborn库对这两类玻璃的成分进行可视化展示,包括饼状图和柱状图。饼状图直观地展示了每种成分在不同玻璃类型中的比例,而柱状图则对比了两种玻璃的平均化学成分,帮助发现它们之间的显著差异。

fig, axs = plt.subplots(1, 2, figsize=(14, 7))
mean_high_potassium.plot(kind='pie', ax=axs[0], autopct='%1.1f%%', startangle=90, title='高钾玻璃成分比例')
mean_lead_barium.plot(kind='pie', ax=axs[1], autopct='%1.1f%%', startangle=90, title='铅钡玻璃成分比例')
plt.tight_layout()
plt.show()

 mean_compositions.plot(kind='bar', figsize=(10, 6))
 plt.title('高钾玻璃和铅钡玻璃的平均成分比较')
 plt.xlabel('化学成分')
 plt.ylabel('平均百分比')
 plt.xticks(rotation=45)
 plt.legend(title='玻璃类型')
 plt.tight_layout()
 plt.show()

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

plt.figure(figsize=(10, 6))
sns.countplot(data=lead_barium_glass, x='亚类')
plt.title('铅钡玻璃的亚类分布')
plt.xlabel('亚类')
plt.ylabel('样本数量')
plt.tight_layout()
plt.show()

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

问题二

首先,代码的第一步是读取包含玻璃制品信息和化学成分数据的Excel文件。使用pandas库中的read_excel函数,代码从Excel文件的三个表单中加载数据,分别存储在三个数据框中。这些数据表单包含了玻璃制品的基本信息(如文物编号、纹饰、类型等)和化学成分数据(如二氧化硅、氧化钠等),以及未知类别样本的化学成分数据。为了确保数据的一致性和便于后续的合并操作,代码将涉及的关键列(文物编号和文物采样点)转换为字符串类型。


在数据准备就绪后,代码通过合并操作将两个数据框合并为一个包含所有相关信息的综合数据框。这一步确保了所有样本的基本信息和化学成分数据能够统一处理。合并后的数据框包括了所有玻璃制品的详细信息,便于后续的筛选和分类处理。


为了保证数据的准确性和有效性,代码定义了一组包含所有化学成分百分比的列。然后,代码计算每个样本的化学成分总和,并筛选出总和在85%到105%之间的有效样本。这一步的目的是去除由于检测误差或数据缺失导致的异常样本,确保后续分析的数据质量。

   data_sheet1['文物编号'] = data_sheet1['文物编号'].astype(str)
   data_sheet2['文物采样点'] = data_sheet2['文物采样点'].astype(str)

接下来,代码根据玻璃制品的类型(高钾玻璃和铅钡玻璃)将数据分为两类。通过对每类玻璃的化学成分进行均值计算,代码生成了两个表示高钾玻璃和铅钡玻璃平均化学成分的数据框。随后,代码使用matplotlib库和seaborn库对这两类玻璃的成分进行可视化展示,包括折线图和散点图。折线图展示了不同成分在两类玻璃中的平均比例,而散点图则展示了不同玻璃样本在主要成分(如二氧化硅和氧化钾)上的分布情况。通过这些可视化图表,研究人员能够直观地看到不同玻璃类型之间的成分差异,为后续的分类工作提供了依据。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

   composition_columns = [
       '二氧化硅(SiO2)', '氧化钠(Na2O)', '氧化钾(K2O)', '氧化钙(CaO)',
       '氧化镁(MgO)', '氧化铝(Al2O3)', '氧化铁(Fe2O3)', '氧化铜(CuO)',
       '氧化铅(PbO)', '氧化钡(BaO)', '五氧化二磷(P2O5)', '氧化锶(SrO)',
       '氧化锡(SnO2)', '二氧化硫(SO2)'
   ]

在获得高钾玻璃和铅钡玻璃的平均成分后,代码对未知类别样本的成分进行了同样的处理和筛选,确保这些样本的数据质量符合分析要求。接下来,代码定义了一个分类函数,通过计算未知样本与高钾玻璃和铅钡玻璃平均成分的欧氏距离,将未知样本分类为高钾玻璃或铅钡玻璃。这一分类方法基于化学成分的相似性,确保分类结果的科学性和可靠性。

high_potassium_glass = valid_data[valid_data['类型'] == '高钾']
lead_barium_glass = valid_data[valid_data['类型'] == '铅钡']
#进行敏感性分析
sensitivity_results = sensitivity_analysis(valid_unknown_data, mean_high_potassium, mean_lead_barium, '二氧化硅(SiO2)', 1.0)

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

# 绘制高钾玻璃和铅钡玻璃的平均成分折线图:
  mean_compositions = pd.DataFrame({
     '高钾玻璃': mean_high_potassium,
     '铅钡玻璃': mean_lead_barium
 })

 mean_compositions.plot(kind='line', figsize=(10, 6), marker='o')
 plt.title('高钾玻璃和铅钡玻璃的平均成分比较')
 plt.xlabel('化学成分')
 plt.ylabel('平均百分比')
 plt.xticks(rotation=45)
 plt.legend(title='玻璃类型')
 plt.tight_layout()
 plt.show()
 

plt.figure(figsize=(10, 6))
plt.scatter(high_potassium_glass['二氧化硅(SiO2)'], high_potassium_glass['氧化钾(K2O)'], label='高钾玻璃', alpha=0.7)
plt.scatter(lead_barium_glass['二氧化硅(SiO2)'], lead_barium_glass['氧化钾(K2O)'], label='铅钡玻璃', alpha=0.7)
plt.scatter(valid_unknown_data['二氧化硅(SiO2)'], valid_unknown_data['氧化钾(K2O)'], label='未知玻璃', alpha=0.7, marker='x')
plt.xlabel('二氧化硅(SiO2)')
plt.ylabel('氧化钾(K2O)')
plt.title('玻璃成分的散点图')
plt.legend()
plt.tight_layout()
plt.show()

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “玻璃” 获取。👈👈👈

相关文章
|
3月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
153 71
|
2月前
|
SQL 数据可视化 大数据
从数据小白到大数据达人:一步步成为数据分析专家
从数据小白到大数据达人:一步步成为数据分析专家
255 92
|
23天前
|
SQL 人工智能 数据可视化
数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式
数据项目复杂,涉及代码、数据、运行环境等多部分。随着AI发展,数据科学团队面临挑战。协作式数据文档(如阿里云DataV Note)成为提升效率的关键工具。它支持跨角色协同、异构数据处理、多语言分析及高效沟通,帮助创建知识库,实现可重现的数据科学过程,并通过一键分享报告促进数据驱动决策。未来,大模型AI将进一步增强其功能,如智能绘图、总结探索、NLP2SQL/Python和AutoReport,为数据分析带来更多可能。
88 21
|
3月前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
165 73
|
4天前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
41 0
|
2月前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
96 22
|
3月前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
112 5
|
3月前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
4月前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
7天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。