讀取數據
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd
df = pd.read_csv('/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_0923.csv')
檢視資料結構
print(df.info())
print(df.head()) # 顯示前幾行數據

檢查缺失值
print(df.isnull().sum())

基本敘述統計
print(df.describe())

類別變數的分佈
print(df['Industry'].value_counts())

數據的分佈和統計圖形
import matplotlib.pyplot as plt
import pandas as pd
# 假設 df 已包含日期資料
# 轉換日期欄位為 datetime 格式
df['Date'] = pd.to_datetime(df['Date'])
# 選擇 2024-10-15 或最近一天的數據
target_date = pd.Timestamp('2024-10-15')
# 找出 <= 2024-10-15 的最近一日數據
df_filtered = df[df['Date'] <= target_date].sort_values(by='Date', ascending=False).groupby('Company Name').first().reset_index()
# 將 Market Cap 的單位轉換為百萬
df_filtered['Market Cap (USD mn)'] = df_filtered['Market Cap (USD)'] / 1e6
# 繪製長條圖
plt.figure(figsize=(10, 6))
bars = plt.bar(df_filtered['Company Name'], df_filtered['Market Cap (USD mn)'])
# 設定 X 軸標籤並旋轉 90 度
plt.xticks(rotation=90)
# 添加 Market Cap 數值在每個長條的上方,並旋轉 90 度
for bar in bars:
yval = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2, yval, f'{yval:.2f}',
ha='center', va='bottom', rotation=90)
# 設定 Y 軸標籤
plt.ylabel('Market Cap (USD mn)')
# 設定標題
plt.title('Market Cap of Companies on or before 2024-10-15 (USD mn)')
# 顯示圖形
plt.tight_layout()
plt.show()

圖形修正
import matplotlib.pyplot as plt
import pandas as pd
# 假設 df 已包含日期資料
df['Date'] = pd.to_datetime(df['Date'])
# 選擇 2025-09-17 或最近一天的數據
target_date = pd.Timestamp('2025-09-17')
# 找出 <= target_date 的最近一日數據
df_filtered = (
df[df['Date'] <= target_date]
.sort_values(by='Date', ascending=False)
.groupby('Company Name')
.first()
.reset_index()
)
# 將 Market Cap 的單位轉換為百萬
df_filtered['Market Cap (USD mn)'] = df_filtered['Market Cap (USD)'] / 1e6
# 設定圖表大小(高度拉高)
plt.figure(figsize=(12, 8))
bars = plt.bar(df_filtered['Company Name'], df_filtered['Market Cap (USD mn)'], color='steelblue')
# 設定 X 軸標籤並旋轉 60 度,避免擠在一起
plt.xticks(rotation=60, ha='right', fontsize=10)
# 設定 Y 軸上限,多留 30% 空間
ymax = df_filtered['Market Cap (USD mn)'].max()
plt.ylim(0, ymax * 1.3)
# 添加數值標籤在每個長條上方,文字旋轉 90 度
for bar in bars:
yval = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2, yval,
f'{yval:,.0f}',
ha='center', va='bottom',
rotation=90, fontsize=8)
# 設定標籤與標題
plt.ylabel('Market Cap (USD mn)', fontsize=12)
plt.title('Market Cap of Companies on or before 2025-09-23 (USD mn)', fontsize=14)
plt.tight_layout()
plt.show()

公司代碼簡寫修正
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import pandas as pd
# 假設 df 已包含日期資料
# 轉換日期欄位為 datetime 格式
df['Date'] = pd.to_datetime(df['Date'])
# 選擇 2025-09-23 或最近一天的數據
target_date = pd.Timestamp('2025-09-23')
# 找出 <= 2025-09-23 的最近一日數據
df_filtered = df[df['Date'] <= target_date].sort_values(by='Date', ascending=False).groupby('Company Name').first().reset_index()
# 將 Market Cap 的單位轉換為百萬
df_filtered['Market Cap (USD mn)'] = df_filtered['Market Cap (USD)'] / 1e6
# 使用公司簡稱作為 X 軸標籤 (可手動定義簡稱)
company_abbr = {
'ASML Holding N.V.': 'ASML',
'Advanced Micro Devices, Inc.': 'AMD',
'Analog Devices, Inc.': 'ADI',
'Applied Materials, Inc.': 'AMAT',
'Arm Holdings plc': 'ARM',
'Broadcom Inc.': 'AVGO',
'Intel Corporation': 'INTC',
'KLA Corporation': 'KLA',
'Lam Research Corporation': 'LRCX',
'Marvell Technology, Inc.': 'MRVL',
'MediaTek Inc.': 'MTK',
'Micron Technology, Inc.': 'MU',
'NVIDIA Corporation': 'NVDA',
'QUALCOMM Incorporated': 'QCOM',
'SK hynix Inc.': 'SKH',
'Samsung Electronics Co., Ltd.': 'SEC',
'Synopsys, Inc.': 'SNPS',
'Taiwan Semiconductor Manufacturing Company Limited': 'TSMC',
'Texas Instruments Incorporated': 'TXN',
'Tokyo Electron Limited': 'TEL'
}
df_filtered['Company Abbr'] = df_filtered['Company Name'].map(company_abbr)
# 繪製長條圖
plt.figure(figsize=(10, 6))
bars = plt.bar(df_filtered['Company Abbr'], df_filtered['Market Cap (USD mn)'])
# 設定 X 軸標籤並旋轉 90 度
plt.xticks(rotation=90)
# 設定 Y 軸範圍和千分號格式
plt.ylim(10000, 6000000)
plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f'{int(x):,}'))
# 添加 Market Cap 數值在每個長條的上方,並旋轉 90 度
for bar in bars:
yval = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2, yval, f'{yval:,.2f}',
ha='center', va='bottom', rotation=90)
# 設定 Y 軸標籤
plt.ylabel('Market Cap (USD mn)')
# 設定標題
plt.title('Market Cap of Companies on or before 2024-10-15 (USD mn)')
# 顯示圖形
plt.tight_layout()
plt.show()

安裝 Cartopy ( 英國氣象局地圖包 )
pip install cartopy

畫一張地圖
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import pandas as pd
# 20 家公司總部位置資料
data = {
'Company Name': ['NVIDIA', 'ASML', 'TSMC', 'Samsung', 'Intel', 'Qualcomm', 'Broadcom',
'Micron', 'Texas Instruments', 'SK hynix', 'MediaTek', 'Applied Materials',
'AMD', 'KLA Corporation', 'Lam Research', 'Analog Devices', 'Arm Holdings',
'Synopsys', 'Tokyo Electron', 'Marvell'],
'Latitude': [37.7749, 52.0907, 25.0330, 37.5665, 37.3875, 32.7157, 37.4848,
43.6150, 32.7775, 37.4563, 24.7945, 37.6624, 37.7510, 37.4102,
37.4674, 42.3601, 51.5074, 37.3859, 35.6895, 37.5337],
'Longitude': [-122.4194, 5.1214, 121.5654, 126.9780, -122.0575, -117.1611, -122.1483,
-116.2023, -96.7970, 127.0419, 120.9615, -121.8747, -122.0312, -122.0595,
-121.9630, -71.0589, -0.1276, -122.0867, 139.6917, -122.2712],
'Funding Year': [1993, 1984, 1987, 1969, 1968, 1985, 1961,
1978, 1951, 1983, 1997, 1967, 1969, 1975,
1980, 1965, 1990, 1986, 1963, 1995],
'Market Cap (USD mn)': [3228148, 287205, 1824631, 799625, 821929, 193936, 157902,
115664, 182463, 99626, 65306, 154747, 253519, 196841,
94818, 111213, 57402, 75064, 84342, 68784]
}
# 創建DataFrame
df = pd.DataFrame(data)
# 創建地圖,設定 16:9 比例 (16 x 9 英吋)
fig, ax = plt.subplots(figsize=(16, 9), subplot_kw={'projection': ccrs.PlateCarree()})
ax.coastlines() # 繪製海岸線
# 設置地圖的視野範圍 (經度從 -130 到 150,緯度從 20 到 60)
ax.set_extent([-130, 150, -40, 80], crs=ccrs.PlateCarree())
# 標註公司位置,根據不同區域調整偏移
for idx, row in df.iterrows():
x_offset = 2 if row['Longitude'] < 0 else -2 # 西半球向右偏移,東半球向左偏移
y_offset = 0.5 if row['Latitude'] > 35 else -0.5 # 北緯度地區向上偏移,南緯度向下
ax.scatter(row['Longitude'], row['Latitude'], color='blue', s=100, transform=ccrs.PlateCarree()) # 標註地點
ax.text(row['Longitude'] + x_offset, row['Latitude'] + y_offset,
f"{row['Funding Year']}/{row['Company Name']}\n{row['Market Cap (USD mn)']:,} mn",
fontsize=8, ha='right', va='bottom', transform=ccrs.PlateCarree())
# 設定標題並顯示圖形
plt.title('TOP 20 Semiconductor Companies')
plt.tight_layout()
# 顯示圖形
plt.show()


新增一個欄位_Colse_Change %
import pandas as pd
# 讀取文件
input_file = '/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_0923.csv'
output_file = '/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_09231.csv'
# 讀取 CSV 文件
df = pd.read_csv(input_file)
# 計算每日的收盤價變動百分比(使用 Close_Price_Local)
df['Close_Price_Change%'] = df.groupby('Company Name')['Close Price_Local'].pct_change() * 100
# 保存結果為新的 CSV 文件
df.to_csv(output_file, index=False)
print(f"新文件已保存為: {output_file}")
相關性分析
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
# 定義公司簡稱
company_abbr = {
'ASML Holding N.V.': 'ASML',
'Advanced Micro Devices, Inc.': 'AMD',
'Analog Devices, Inc.': 'ADI',
'Applied Materials, Inc.': 'AMAT',
'Arm Holdings plc': 'ARM',
'Broadcom Inc.': 'AVGO',
'Intel Corporation': 'INTC',
'KLA Corporation': 'KLA',
'Lam Research Corporation': 'LRCX',
'Marvell Technology, Inc.': 'MRVL',
'MediaTek Inc.': 'MTK',
'Micron Technology, Inc.': 'MU',
'NVIDIA Corporation': 'NVDA',
'QUALCOMM Incorporated': 'QCOM',
'SK hynix Inc.': 'SKH',
'Samsung Electronics Co., Ltd.': 'SEC',
'Synopsys, Inc.': 'SNPS',
'Taiwan Semiconductor Manufacturing Company Limited': 'TSMC',
'Texas Instruments Incorporated': 'TXN',
'Tokyo Electron Limited': 'TEL'
}
# 讀取文件
input_file = '/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_09231.csv'
df = pd.read_csv(input_file)
# 使用簡稱替換公司名稱
df['Company'] = df['Company Name'].replace(company_abbr)
# 計算每日的收盤價變動百分比(使用 Close_Price_Local)
df['Close_Price_Change%'] = df.groupby('Company Name')['Close Price_Local'].pct_change() * 100
# 透過 pivot_table 生成檢定所需的格式
pivot_data = df.pivot_table(index='Date', columns='Company', values='Close_Price_Change%')
# 計算 Pearson 檢定的相關性矩陣
correlation_matrix = pivot_data.corr(method='pearson')
# 打印相關性矩陣
print(correlation_matrix)
# 繪製相關性矩陣的熱力圖
plt.figure(figsize=(16, 9))
sns.heatmap(correlation_matrix, cmap='coolwarm', annot=True, fmt='.2f', linewidths=0.5)
# 設置標題和標籤
plt.title('Pearson Correlation of Close Price Change % between Companies')
plt.xlabel('Company')
plt.ylabel('Company')
# 顯示圖形
plt.tight_layout()
plt.show()
Company ADI AMAT AMD ARM ASML AVGO INTC \
Company
ADI 1.000000 0.541918 0.423366 0.486624 0.568896 0.621776 0.487018
AMAT 0.541918 1.000000 0.454196 0.544436 0.666901 0.619881 0.555079
AMD 0.423366 0.454196 1.000000 0.463046 0.451012 0.415794 0.453819
ARM 0.486624 0.544436 0.463046 1.000000 0.495585 0.485536 0.305722
ASML 0.568896 0.666901 0.451012 0.495585 1.000000 0.578797 0.544514
AVGO 0.621776 0.619881 0.415794 0.485536 0.578797 1.000000 0.455889
INTC 0.487018 0.555079 0.453819 0.305722 0.544514 0.455889 1.000000
KLA 0.510681 0.632632 0.410530 0.558197 0.643390 0.603210 0.485578
LRCX 0.516641 0.630973 0.408571 0.562002 0.635982 0.613218 0.465112
MRVL 0.561540 0.535809 0.461225 0.474167 0.508250 0.561123 0.461089
MTK 0.057143 0.077351 0.078549 0.108997 0.091158 0.071464 0.058916
MU 0.460685 0.511019 0.443854 0.487499 0.488852 0.536306 0.488299
NVDA 0.522410 0.552755 0.482511 0.524515 0.526296 0.547520 0.478040
QCOM 0.425003 0.458807 0.319627 0.569955 0.446204 0.544711 0.417745
SEC 0.109014 0.105563 0.114888 0.089351 0.120939 0.087458 0.113838
SKH 0.085792 0.119534 0.104326 0.135799 0.119577 0.100415 0.099826
SNPS 0.401077 0.430971 0.312300 0.326379 0.426871 0.484249 0.386781
TEL 0.110707 0.116325 0.107175 0.066312 0.149715 0.078622 0.113225
TSMC 0.072692 0.077878 0.103152 0.122251 0.114173 0.106240 0.083760
TXN 0.590414 0.574693 0.477645 0.420051 0.589021 0.597949 0.569759
Company KLA LRCX MRVL MTK MU NVDA QCOM \
Company
ADI 0.510681 0.516641 0.561540 0.057143 0.460685 0.522410 0.425003
AMAT 0.632632 0.630973 0.535809 0.077351 0.511019 0.552755 0.458807
AMD 0.410530 0.408571 0.461225 0.078549 0.443854 0.482511 0.319627
ARM 0.558197 0.562002 0.474167 0.108997 0.487499 0.524515 0.569955
ASML 0.643390 0.635982 0.508250 0.091158 0.488852 0.526296 0.446204
AVGO 0.603210 0.613218 0.561123 0.071464 0.536306 0.547520 0.544711
INTC 0.485578 0.465112 0.461089 0.058916 0.488299 0.478040 0.417745
KLA 1.000000 0.597073 0.532974 0.059414 0.456168 0.550244 0.426259
LRCX 0.597073 1.000000 0.542129 0.072306 0.447227 0.544406 0.423479
MRVL 0.532974 0.542129 1.000000 0.062846 0.462426 0.527370 0.451346
MTK 0.059414 0.072306 0.062846 1.000000 0.098443 0.070321 0.051490
MU 0.456168 0.447227 0.462426 0.098443 1.000000 0.491772 0.350716
NVDA 0.550244 0.544406 0.527370 0.070321 0.491772 1.000000 0.414545
QCOM 0.426259 0.423479 0.451346 0.051490 0.350716 0.414545 1.000000
SEC 0.099445 0.121546 0.130619 0.260848 0.149158 0.095688 0.075216
SKH 0.104053 0.122636 0.109864 0.242886 0.213560 0.102754 0.076789
SNPS 0.405212 0.403582 0.412785 0.046350 0.343524 0.414020 0.323829
TEL 0.115637 0.131608 0.131444 0.271901 0.128999 0.110760 0.080498
TSMC 0.070768 0.090978 0.105954 0.440420 0.105783 0.096346 0.046957
TXN 0.524982 0.542830 0.524364 0.055881 0.537954 0.510233 0.435174
Company SEC SKH SNPS TEL TSMC TXN
Company
ADI 0.109014 0.085792 0.401077 0.110707 0.072692 0.590414
AMAT 0.105563 0.119534 0.430971 0.116325 0.077878 0.574693
AMD 0.114888 0.104326 0.312300 0.107175 0.103152 0.477645
ARM 0.089351 0.135799 0.326379 0.066312 0.122251 0.420051
ASML 0.120939 0.119577 0.426871 0.149715 0.114173 0.589021
AVGO 0.087458 0.100415 0.484249 0.078622 0.106240 0.597949
INTC 0.113838 0.099826 0.386781 0.113225 0.083760 0.569759
KLA 0.099445 0.104053 0.405212 0.115637 0.070768 0.524982
LRCX 0.121546 0.122636 0.403582 0.131608 0.090978 0.542830
MRVL 0.130619 0.109864 0.412785 0.131444 0.105954 0.524364
MTK 0.260848 0.242886 0.046350 0.271901 0.440420 0.055881
MU 0.149158 0.213560 0.343524 0.128999 0.105783 0.537954
NVDA 0.095688 0.102754 0.414020 0.110760 0.096346 0.510233
QCOM 0.075216 0.076789 0.323829 0.080498 0.046957 0.435174
SEC 1.000000 0.499564 0.076720 0.407232 0.423196 0.112434
SKH 0.499564 1.000000 0.079850 0.352210 0.326435 0.086746
SNPS 0.076720 0.079850 1.000000 0.105648 0.061736 0.397336
TEL 0.407232 0.352210 0.105648 1.000000 0.396922 0.111470
TSMC 0.423196 0.326435 0.061736 0.396922 1.000000 0.082757
TXN 0.112434 0.086746 0.397336 0.111470 0.082757 1.000000

Pearson 檢定
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
# 定義公司簡稱
company_abbr = {
'ASML Holding N.V.': 'ASML',
'Advanced Micro Devices, Inc.': 'AMD',
'Analog Devices, Inc.': 'ADI',
'Applied Materials, Inc.': 'AMAT',
'Arm Holdings plc': 'ARM',
'Broadcom Inc.': 'AVGO',
'Intel Corporation': 'INTC',
'KLA Corporation': 'KLA',
'Lam Research Corporation': 'LRCX',
'Marvell Technology, Inc.': 'MRVL',
'MediaTek Inc.': 'MTK',
'Micron Technology, Inc.': 'MU',
'NVIDIA Corporation': 'NVDA',
'QUALCOMM Incorporated': 'QCOM',
'SK hynix Inc.': 'SKH',
'Samsung Electronics Co., Ltd.': 'SEC',
'Synopsys, Inc.': 'SNPS',
'Taiwan Semiconductor Manufacturing Company Limited': 'TSMC',
'Texas Instruments Incorporated': 'TXN',
'Tokyo Electron Limited': 'TEL'
}
# 讀取文件
input_file = '/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_09231.csv'
df = pd.read_csv(input_file)
# 使用簡稱替換公司名稱
df['Company'] = df['Company Name'].replace(company_abbr)
# 計算每日的收盤價變動百分比(使用 Close_Price_Local)
df['Close_Price_Change%'] = df.groupby('Company Name')['Close Price_Local'].pct_change() * 100
# 透過 pivot_table 生成檢定所需的格式
pivot_data = df.pivot_table(index='Date', columns='Company', values='Close_Price_Change%')
# 創建一個空的 DataFrame 來存放結果
results = pd.DataFrame(columns=['Company 1', 'Company 2', 'Pearson R', 'P-value'])
# 計算每兩家公司之間的 Pearson R 和 P 值
companies = pivot_data.columns
for i in range(len(companies)):
for j in range(i+1, len(companies)): # 避免重複計算相同的組合
comp1 = companies[i]
comp2 = companies[j]
# 去除 NaN 值,避免影響計算
valid_data = pivot_data[[comp1, comp2]].dropna()
if not valid_data.empty:
# 計算 Pearson 相關性和 P 值
r_value, p_value = pearsonr(valid_data[comp1], valid_data[comp2])
# 將結果存入 DataFrame
new_row = pd.DataFrame({
'Company 1': [comp1],
'Company 2': [comp2],
'Pearson R': [r_value],
'P-value': [p_value]
})
results = pd.concat([results, new_row], ignore_index=True)
# 顯示結果
print(results)
# 保存為 CSV 文件,如果需要保存結果到文件
output_file = '/content/drive/My Drive/Semicon_Analysis/pearson_correlation_results.csv'
results.to_csv(output_file, index=False)
results = pd.concat([results, new_row], ignore_index=True)
Company 1 Company 2 Pearson R P-value
0 ADI AMAT 0.541918 0.000000e+00
1 ADI AMD 0.423366 0.000000e+00
2 ADI ARM 0.486624 2.209092e-31
3 ADI ASML 0.568896 0.000000e+00
4 ADI AVGO 0.621776 0.000000e+00
.. ... ... ... ...
185 SNPS TSMC 0.061736 1.185282e-06
186 SNPS TXN 0.397336 1.231097e-317
187 TEL TSMC 0.396922 4.839307e-231
188 TEL TXN 0.111470 1.351283e-18
189 TSMC TXN 0.082757 7.163894e-11
[190 rows x 4 columns]
重新提供 Heatmap of Price Change% , 基於 P-value <0.05
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import numpy as np
# 定義公司簡稱
company_abbr = {
'ASML Holding N.V.': 'ASML',
'Advanced Micro Devices, Inc.': 'AMD',
'Analog Devices, Inc.': 'ADI',
'Applied Materials, Inc.': 'AMAT',
'Arm Holdings plc': 'ARM',
'Broadcom Inc.': 'AVGO',
'Intel Corporation': 'INTC',
'KLA Corporation': 'KLA',
'Lam Research Corporation': 'LRCX',
'Marvell Technology, Inc.': 'MRVL',
'MediaTek Inc.': 'MTK',
'Micron Technology, Inc.': 'MU',
'NVIDIA Corporation': 'NVDA',
'QUALCOMM Incorporated': 'QCOM',
'SK hynix Inc.': 'SKH',
'Samsung Electronics Co., Ltd.': 'SEC',
'Synopsys, Inc.': 'SNPS',
'Taiwan Semiconductor Manufacturing Company Limited': 'TSMC',
'Texas Instruments Incorporated': 'TXN',
'Tokyo Electron Limited': 'TEL'
}
# 讀取文件
input_file = '/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_09231.csv'
df = pd.read_csv(input_file)
# 使用簡稱替換公司名稱
df['Company'] = df['Company Name'].replace(company_abbr)
# 計算每日的收盤價變動百分比(使用 Close_Price_Local)
df['Close_Price_Change%'] = df.groupby('Company Name')['Close Price_Local'].pct_change() * 100
# 透過 pivot_table 生成檢定所需的格式
pivot_data = df.pivot_table(index='Date', columns='Company', values='Close_Price_Change%')
# 創建一個空的 DataFrame 來存放結果
correlation_matrix = pd.DataFrame(np.zeros((len(pivot_data.columns), len(pivot_data.columns))),
columns=pivot_data.columns, index=pivot_data.columns)
# 計算每兩家公司之間的 Pearson R 和 P 值
for i in range(len(pivot_data.columns)):
for j in range(i+1, len(pivot_data.columns)): # 避免重複計算相同的組合
comp1 = pivot_data.columns[i]
comp2 = pivot_data.columns[j]
# 去除 NaN 值,避免影響計算
valid_data = pivot_data[[comp1, comp2]].dropna()
if not valid_data.empty:
# 計算 Pearson 相關性和 P 值
r_value, p_value = pearsonr(valid_data[comp1], valid_data[comp2])
# 只在 p-value < 0.05 的情況下填入 Pearson R 值,否則設為 NaN
if p_value < 0.05:
correlation_matrix.loc[comp1, comp2] = r_value
correlation_matrix.loc[comp2, comp1] = r_value
else:
correlation_matrix.loc[comp1, comp2] = np.nan
correlation_matrix.loc[comp2, comp1] = np.nan
# 繪製相關性矩陣的熱力圖,只顯示符合條件的公司 P Value < 0.05
plt.figure(figsize=(16, 9))
sns.heatmap(correlation_matrix, cmap='coolwarm', annot=True, fmt='.2f', linewidths=0.5, mask=correlation_matrix.isnull())
# 設置標題和標籤
plt.title('Heatmap of Company Close Price Change % (P-value < 0.05)')
plt.xlabel('Company')
plt.ylabel('Company')
# 顯示圖形
plt.tight_layout()
plt.show()