import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
%matplotlib inline
test=pd.read_excel('干气重整过程反应物及生成物浓度数据表.xlsx')
通过分析选择性,在三个催化剂里面选出来一个性能比较好的的一个催化剂
test.head()
催化剂 | 剩余量_c(CH4) | 剩余量_c(CO2) | 生成量_c(CO) | 生成量_c(H2) | 转化率_X(CH4) | 转化率_X(CO2) | 选择性_S(H2) | 选择性_S(CO) | 转化量_CH4 | 转化量_CO2 | 初始量 | time | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 催化剂A | 18.59 | 14.160 | 17.24 | 6.306 | 0.2564 | 0.43360 | 0.491888 | 0.999420 | 6.41 | 10.840 | 25 | 0.0 |
1 | 催化剂A | 19.08 | 13.980 | 16.38 | 6.961 | 0.2368 | 0.44080 | 0.587922 | 0.966942 | 5.92 | 11.020 | 25 | 0.5 |
2 | 催化剂A | 18.91 | 13.060 | 17.13 | 6.837 | 0.2436 | 0.47760 | 0.561330 | 0.950083 | 6.09 | 11.940 | 25 | 1.0 |
3 | 催化剂A | 16.37 | 10.010 | 21.94 | 9.175 | 0.3452 | 0.59960 | 0.531576 | 0.928874 | 8.63 | 14.990 | 25 | 1.5 |
4 | 催化剂A | 14.20 | 8.001 | 25.94 | 10.490 | 0.4320 | 0.67996 | 0.485648 | 0.933127 | 10.80 | 16.999 | 25 | 2.0 |
时间为0.5时
test_0_5=test.loc[test['time']==0.5]
test_0_5
催化剂 | 剩余量_c(CH4) | 剩余量_c(CO2) | 生成量_c(CO) | 生成量_c(H2) | 转化率_X(CH4) | 转化率_X(CO2) | 选择性_S(H2) | 选择性_S(CO) | 转化量_CH4 | 转化量_CO2 | 初始量 | time | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 催化剂A | 19.080 | 13.9800 | 16.380 | 6.961 | 0.2368 | 0.440800 | 0.587922 | 0.966942 | 5.920 | 11.0200 | 25 | 0.5 |
12 | 催化剂B | 22.990 | 20.1000 | 6.622 | 1.954 | 0.0804 | 0.196000 | 0.486070 | 0.958321 | 2.010 | 4.9000 | 25 | 0.5 |
24 | 催化剂C | 2.065 | 0.6399 | 46.530 | 40.450 | 0.9174 | 0.974404 | 0.881840 | 0.983823 | 22.935 | 24.3601 | 25 | 0.5 |
只能是 在同样的反应时间里,比较三种催化剂对同一种物质的选择性
plt.bar(test_0_5['催化剂'],test_0_5['选择性_S(H2)'])
<BarContainer object of 3 artists>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u5bRkDTg-1574997026493)(output_8_1.png)]
plt.bar(test_0_5['催化剂'],test_0_5['选择性_S(CO)'])
<BarContainer object of 3 artists>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ActCs8pQ-1574997026494)(output_9_1.png)]
test_A=test.loc[test['催化剂']=='催化剂A']
test_B=test.loc[test['催化剂']=='催化剂B']
test_C=test.loc[test['催化剂']=='催化剂C']
选择性_S(H2)
fig, ax = plt.subplots()
ax.plot(test_A['time'],test_A['选择性_S(H2)'], label='催化剂A')
ax.plot(test_B['time'],test_B['选择性_S(H2)'], label='催化剂B')
ax.plot(test_C['time'],test_C['选择性_S(H2)'], label='催化剂C')
ax.set(ylabel='Temperature (deg C)', xlabel='Time', title='A tale of two cities')
ax.legend()
plt.show()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BLw8AeiT-1574997026495)(output_12_0.png)]
选择性_S(CO)
fig, ax = plt.subplots()
ax.plot(test_A['time'],test_A['选择性_S(CO)'], label='催化剂A')
ax.plot(test_B['time'],test_B['选择性_S(CO)'], label='催化剂B')
ax.plot(test_C['time'],test_C['选择性_S(CO)'], label='催化剂C')
ax.set(ylabel='Temperature (deg C)', xlabel='Time', title='A tale of two cities')
ax.legend()
plt.show()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WGQ6rBsJ-1574997026495)(output_14_0.png)]
test.head()
催化剂 | 剩余量_c(CH4) | 剩余量_c(CO2) | 生成量_c(CO) | 生成量_c(H2) | 转化率_X(CH4) | 转化率_X(CO2) | 选择性_S(H2) | 选择性_S(CO) | 转化量_CH4 | 转化量_CO2 | 初始量 | time | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 催化剂A | 18.59 | 14.160 | 17.24 | 6.306 | 0.2564 | 0.43360 | 0.491888 | 0.999420 | 6.41 | 10.840 | 25 | 0.0 |
1 | 催化剂A | 19.08 | 13.980 | 16.38 | 6.961 | 0.2368 | 0.44080 | 0.587922 | 0.966942 | 5.92 | 11.020 | 25 | 0.5 |
2 | 催化剂A | 18.91 | 13.060 | 17.13 | 6.837 | 0.2436 | 0.47760 | 0.561330 | 0.950083 | 6.09 | 11.940 | 25 | 1.0 |
3 | 催化剂A | 16.37 | 10.010 | 21.94 | 9.175 | 0.3452 | 0.59960 | 0.531576 | 0.928874 | 8.63 | 14.990 | 25 | 1.5 |
4 | 催化剂A | 14.20 | 8.001 | 25.94 | 10.490 | 0.4320 | 0.67996 | 0.485648 | 0.933127 | 10.80 | 16.999 | 25 | 2.0 |
x=test.drop(['催化剂','初始量','time'],axis=1)
data = np.array(x)
from sklearn import preprocessing
from sklearn.cluster import AgglomerativeClustering
min_max_scaler = preprocessing.MinMaxScaler()
data_M = min_max_scaler.fit_transform(data)
ac = AgglomerativeClustering(n_clusters=3, affinity='euclidean', linkage='ward')
ac.fit(data_M)
AgglomerativeClustering(affinity='euclidean', compute_full_tree='auto',
connectivity=None, linkage='ward', memory=None, n_clusters=3,
pooling_func=<function mean at 0x000002B7F2B5F378>)
labels = ac.fit_predict(data_M)
print(labels)
[0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1]
plt.scatter(data_M[:,0], data_M[:,1], c=labels)
plt.show()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dKHhKBE4-1574997026495)(output_22_0.png)]