【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()

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

相关文章
|
1天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
10 5
|
1天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
10 5
|
4月前
|
机器学习/深度学习 存储 数据可视化
数据分享|Python在Scikit-Learn可视化随机森林中的决策树分析房价数据
数据分享|Python在Scikit-Learn可视化随机森林中的决策树分析房价数据
|
4月前
|
传感器 数据可视化 BI
python研究汽车传感器数据统计可视化分析
python研究汽车传感器数据统计可视化分析
|
4月前
|
自然语言处理 数据可视化 数据挖掘
数据代码分享|Python对全球Covid-19疫情失业数据相关性、可视化分析
数据代码分享|Python对全球Covid-19疫情失业数据相关性、可视化分析
|
4月前
|
数据可视化 数据处理 索引
Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析
Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析
|
4月前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
数据可视化 数据挖掘 Python
python可视化数据分析开心麻花影视作品分析词云折线图等源码
python可视化数据分析开心麻花影视作品分析词云折线图等源码
231 0
|
安全 数据可视化 Python
使用Python可视化并分析数据 大型流行病如何影响金融市场(三)
使用Python可视化并分析数据 大型流行病如何影响金融市场(三)
110 0
使用Python可视化并分析数据 大型流行病如何影响金融市场(三)
|
安全 数据可视化 Java
使用Python可视化并分析数据 大型流行病如何影响金融市场(二)
使用Python可视化并分析数据 大型流行病如何影响金融市场(二)
193 0
使用Python可视化并分析数据 大型流行病如何影响金融市场(二)