Test Code

국가별 heatmap

assdiary 2024. 1. 13. 11:54
수업 시간에 과제로 주셨던 부분을 코드로 만들어 봤다
연습겸 기록용이다
# 필요한 라이브러리를 임포트합니다.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 평가 기준과 국가를 정의합니다.
criteria = [
    "현지국의 경제수준", "현지국의 성장잠재력", "하부구조 발전 정도",
    "현지국 정부의 대외경제정책", "현지국의 금융환경",
    "주력산업 및 관련산업의 발전단계", "현지국의 임금, 이직률 및 노동의 질",
    "노동쟁의, 노동조합 등의 노사관계", "공장입지 조건",
    "원자재의 가격과 구매의 안정성", "당해 제품의 현지 시장규모 및 성장성",
    "당해 제품의 제3국 수출가능성", "현지 경쟁상황",
    "부동산 취득의 용이성 및 비용", "지적 소유권 보호 및 비용",
    "무역 및 외환규제에 따르는 비용", "세제상의 우대조치",
    "정치제도 및 지도력의 변화 가능성", "전쟁, 폭동, 데모 가능성",
    "대외경제정책의 급격한 변화 가능성", "현지 국민의 외국인에 대한 적대감"
]
countries = ["중국", "베트남", "인도", "태국", "인도네시아"]

# 각 기준에 대한 가중치를 정의합니다. 합은 1.0이 되어야 합니다.
weights = [1/len(criteria)] * len(criteria)  # 모든 기준에 동일한 가중치를 부여합니다.

# 가중치를 출력합니다.
print("각 기준에 대한 가중치:")
for criterion, weight in zip(criteria, weights):
    print(f"{criterion}: {weight:.2f}")

# 평가 행렬을 초기화합니다.
evaluation_matrix = pd.DataFrame(index=criteria, columns=countries)

# 각 국가별 각 기준에 대한 임의의 정수 점수를 생성합니다.
for country in countries:
    for criterion in criteria:
        score = np.random.randint(1, 11)  # 1에서 10 사이의 임의의 정수 점수를 생성합니다.
        evaluation_matrix.loc[criterion, country] = score

# 가중치를 적용하여 가중 점수를 계산합니다.
weighted_scores = evaluation_matrix.mul(weights, axis=0)
evaluation_matrix.loc["가중 총점"] = weighted_scores.sum()

# 숫자 행렬을 출력합니다.
print("\n평가 행렬:")
print(evaluation_matrix)

print("\n가중 점수 행렬:")
print(weighted_scores)

# 가중 점수 행렬을 시각화합니다.
plt.figure(figsize=(10, 8))
sns.heatmap(weighted_scores.astype(float), annot=True, fmt=".1f", cmap="coolwarm", cbar=True)
plt.title("국가별 평가 항목 가중 점수")
plt.show()

오... 구글 코랩으로 하니까 이런 식으로 더 깔끔하게 나온다 좋다!

가중치는 0.05로 동일하고, 평가 점수는 랜덤으로 부여
한국어로 글자가 깨지지만 heatmap도 해봤다

다음부터는 영어로 하겠슴다... 여기에는 가끔 혼자 실습하는 코드 들고 오겠슴다

봐주셔서 감사함다