2025년 전세계 대학교 순위 시각화하기 (Python 데이터 시각화)
영국의 교육 평가 기관인 Times Higher Education(THE)에서 매년 세계 대학 순위(World University Rankings)를 발표합니다. 이 지표는 교육, 연구, 논문 인용, 국제 전망, 산업 수익 등 다양한 지표를 사용해 점수를 매깁니다. 대학의 글로벌 경쟁력을 보여주는 지표로 여겨집니다.
이번 포스트에서는 2025년 전세계 대학교 순위 데이터를 Python을 사용해 트렌디한 막대 그래프로 시각화하는 방법을 소개합니다. 이 과정에서 matplotlib와 seaborn 라이브러리를 활용하여 간단하고 직관적인 시각화를 만들어 보겠습니다.
전세계 대학교 순위 데이터 소개
이번에 시각화할 데이터는 2025년 전세계 대학교 순위입니다. 이 데이터는 영국의 THE(Times Higher Education)에서 제공한 자료로, 각 대학의 순위, 국가, 이름, 종합 점수를 포함하고 있습니다. 특히 한국의 대학도 포함되어 있어 국내외 대학의 순위를 쉽게 비교할 수 있습니다.
주요 데이터 요약
전세계 상위 5위 대학에는 영국과 미국의 대표 대학들이 상위권을 차지하고 있습니다. 아시아 주요 대학의 경우 중국, 일본, 한국의 대학들이 상위 100위 내에 포함되어 있으며, 아시아권 대학 간의 비교가 가능합니다. 한국 대학의 경우 서울대, 카이스트, 성균관대, 연세대가 전세계 대학교 순위 상위권에 속해 있습니다.
Python 코드로 전세계 대학교 순위 시각화하기
이제 전세계 대학교 순위 데이터를 pandas로 정리하고, seaborn과 matplotlib를 사용해 현대적인 스타일의 막대 그래프를 만들어보겠습니다. 한글 주석을 포함해 초보자도 쉽게 따라 할 수 있도록 설명을 추가했습니다.
# 필요한 라이브러리 불러오기
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 전세계 대학교 순위 데이터 준비
data = {
"Rank": [1, 2, 3, 4, 5, 12, 13, 28, 62, 82, 102, 102],
"Country": ["UK", "USA", "USA", "USA", "UK", "China", "China", "Japan", "South Korea", "South Korea", "South Korea", "South Korea"],
"University": ["University of Oxford", "MIT", "Harvard University", "Princeton University", "University of Cambridge",
"Tsinghua University", "Peking University", "University of Tokyo", "Seoul National University", "KAIST", "Sungkyunkwan University", "Yonsei University"],
"Score": [98.5, 98.1, 97.7, 97.5, 97.4, 92.5, 92.0, 83.3, 73.5, 69.5, 66.1, 66.1]
}
# 데이터프레임으로 변환
df = pd.DataFrame(data)
# 그래프 스타일 설정 - 'whitegrid' 스타일을 사용하여 깔끔한 배경 만들기
sns.set(style="whitegrid")
# 그래프 크기 설정 및 막대 그래프 그리기
plt.figure(figsize=(12, 8))
bar_plot = sns.barplot(
x="Score", y="University", data=df, # X축은 'Score', Y축은 'University'으로 지정
palette="viridis", edgecolor=".6" # 색상은 'viridis' 팔레트, 막대 테두리 색상은 회색
)
# 막대 그래프 끝단에 순위와 점수 표시
for index, row in df.iterrows():
bar_plot.text(
row["Score"] - 0.5, index, # 텍스트 위치 (점수에서 약간 왼쪽으로 이동)
f'#{row["Rank"]} ({row["Score"]})', # 표시할 텍스트 (순위와 점수)
color='white', # 텍스트 색상
ha='right', # 오른쪽 정렬
va='center' # 세로 가운데 정렬
)
# 그래프 타이틀 및 축 라벨 설정
bar_plot.set_title("2025 World University Rankings", fontsize=16) # 그래프 제목 설정
bar_plot.set_xlabel("Score", fontsize=12) # X축 라벨 설정
bar_plot.set_ylabel("University", fontsize=12) # Y축 라벨 설정
# 그래프 보여주기
plt.show()
코드 세부설명
아래는 각 코드 부분의 기능을 자세히 설명한 내용입니다. 특히 막대 그래프의 끝단에 순위와 점수를 추가하는 부분을 중심으로 코드가 어떻게 작동하는지 설명했습니다.
#필요한 라이브러리 불러오기
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#전세계 대학교 순위 데이터 준비
data = {
"Rank": [1, 2, 3, 4, 5, 12, 13, 28, 62, 82, 102, 102],
"Country": ["UK", "USA", "USA", "USA", "UK", "China", "China", "Japan", "South Korea", "South Korea", "South Korea", "South Korea"],
"University": ["University of Oxford", "MIT", "Harvard University", "Princeton University", "University of Cambridge",
"Tsinghua University", "Peking University", "University of Tokyo", "Seoul National University", "KAIST", "Sungkyunkwan University", "Yonsei University"],
"Score": [98.5, 98.1, 97.7, 97.5, 97.4, 92.5, 92.0, 83.3, 73.5, 69.5, 66.1, 66.1]
}
#데이터프레임으로 변환
df = pd.DataFrame(data)
- import 문을 통해 pandas, seaborn, matplotlib.pyplot 라이브러리를 불러옵니다. 각각 데이터프레임 생성, 시각화, 그리고 그래프 표시를 위한 필수 라이브러리입니다.
- data 딕셔너리를 정의하여 전세계 대학교 순위 데이터를 저장합니다. Rank, Country, University, Score 컬럼으로 구성되어 있습니다.
- pd.DataFrame(data)를 사용해 data 딕셔너리를 데이터프레임으로 변환하여 df에 저장합니다. 이제 이 데이터프레임을 시각화에 사용할 수 있습니다.
#그래프 스타일 설정 - 'whitegrid' 스타일을 사용하여 깔끔한 배경 만들기
sns.set(style="whitegrid")
- sns.set(style=”whitegrid”): seaborn 라이브러리의 whitegrid 스타일을 설정하여 그래프에 깔끔한 배경을 추가합니다. 이 스타일은 배경에 얕은 격자무늬를 추가해 데이터가 돋보이게 합니다.
#그래프 크기 설정 및 막대 그래프 그리기
plt.figure(figsize=(12, 8))
bar_plot = sns.barplot(
x="Score", y="University", data=df, # X축은 'Score', Y축은 'University'으로 지정
palette="viridis", edgecolor=".6" # 색상은 'viridis' 팔레트, 막대 테두리 색상은 회색
)
- plt.figure(figsize=(12, 8)): 그래프의 크기를 가로 12인치, 세로 8인치로 설정합니다. 그래프가 웹 페이지나 블로그에서 잘 보이도록 적절한 크기로 설정합니다.
- sns.barplot(…): seaborn의 barplot 함수를 사용해 막대 그래프를 그립니다.
- x=”Score”, y=”University”: X축은 점수(Score), Y축은 대학 이름(University)으로 설정합니다. 점수에 따라 막대의 길이가 달라지고, Y축에 대학 이름이 표시됩니다.
- data=df: 데이터로는 df 데이터프레임을 사용합니다.
- palette=”viridis”: viridis 팔레트를 사용해 그래프 색상을 설정합니다. viridis는 트렌디한 색감으로 데이터의 시각적 효과를 높입니다.
- edgecolor=”.6″: 막대 테두리 색을 회색(.6)으로 설정하여 그래프의 막대들이 서로 잘 구분되도록 합니다.
#막대 그래프 끝단에 순위와 점수 표시
for index, row in df.iterrows():
bar_plot.text(
row["Score"] - 0.5, index, # 텍스트 위치 (점수에서 약간 왼쪽으로 이동)
f'#{row["Rank"]} ({row["Score"]})', # 표시할 텍스트 (순위와 점수)
color='white', # 텍스트 색상
ha='right', # 오른쪽 정렬
va='center' # 세로 가운데 정렬
)
- for index, row in df.iterrows(): df 데이터프레임의 각 행(row)을 순회하며 index와 row 변수에 각각 인덱스와 행 데이터를 할당합니다. df.iterrows()는 데이터프레임의 각 행을 반복할 수 있도록 해주는 메서드입니다.
- bar_plot.text(…): 막대 그래프의 각 막대 끝단에 순위와 점수를 표시하기 위해 text 함수를 사용합니다.
- row[“Score”] – 0.5: X좌표를 Score 값의 약간 왼쪽에 위치시키기 위해 -0.5를 빼줍니다. 이렇게 하면 텍스트가 막대 끝단의 바로 안쪽에 위치하게 됩니다.
- index: Y좌표로 사용됩니다. index는 현재 반복 중인 행의 Y축 위치를 나타냅니다.
- f’#{row[“Rank”]} ({row[“Score”]})’: 텍스트 내용으로, #순위 (점수) 형식의 문자열을 만듭니다. 예를 들어, #1 (98.5)와 같은 형식으로 표시됩니다.
- color=’white’: 텍스트 색상을 흰색으로 설정하여 막대 내부에서 텍스트가 잘 보이도록 합니다.
- ha=’right’: 텍스트를 오른쪽 정렬하여 막대의 끝단에 맞춥니다.
- va=’center’: 텍스트의 세로 정렬을 가운데로 설정하여 텍스트가 막대의 높이 중앙에 위치하게 합니다.
#그래프 타이틀 및 축 라벨 설정
bar_plot.set_title("2025 World University Rankings", fontsize=16) # 그래프 제목 설정
bar_plot.set_xlabel("Score", fontsize=12) # X축 라벨 설정
bar_plot.set_ylabel("University", fontsize=12) # Y축 라벨 설정
- bar_plot.set_title(…): 그래프의 제목을 설정합니다. fontsize=16은 제목 글꼴 크기를 지정하여 강조합니다.
- bar_plot.set_xlabel(…): X축 라벨을 “Score”로 설정합니다. fontsize=12로 설정하여 가독성을 높입니다.
- bar_plot.set_ylabel(…): Y축 라벨을 “University”로 설정하여 대학 이름이 나타나도록 합니다.
#그래프 보여주기
plt.show()
- plt.show(): 모든 설정이 완료된 그래프를 화면에 출력합니다.
마무리 및 요약
이번 포스트에서는 2025년 전세계 대학교 순위를 Python을 활용해 시각화하는 방법을 소개했습니다. 데이터 시각화 과정을 단계별로 설명하고, 트렌디한 그래프 스타일링 팁을 제공하여 데이터를 더욱 흥미롭게 분석하는 방법을 공유했습니다.
이를 통해 전세계 대학교 순위를 직관적으로 파악하고, 대학들의 경쟁력을 쉽게 비교할 수 있습니다. 다양한 분야에서 데이터 시각화를 통해 유익한 인사이트를 얻을 수 있기를 바랍니다.
참고로, 출산율의 추이에 대해 관심있으신 분 계신가요? 그 추이를 시각화 해보고 특정시점에 예상되는 출산율을 쉽게 알아볼 수 있도록 하는 방법은 10년만에 한국 출산율 반등가능할까? 국회예산정책처가 전망한 2025년(feat. 파이썬) 포스트를 참고해 보세요!