[주요 코드]
더보기
mapping = { 기존 값: 매핑값 }
chunck_size = 한번에 실행할 값 수
unique ( ) = 고유 값 확인
데이터 명. sort_values( '기준' ) = '기준'에 따라 데이터 정렬
[1] 라이브러리 불러오기
import pandas as pd # 엑셀,csv,데이터프레임 형태 불러오기
import matplotlib.pyplot as plt # 시각화 라이브러리
from matplotlib.backends.backend_pdf import PdfPages # 결과 PDf 저장
[2] 데이터 불러오기
기본 전처리는 Power bi를 통해 행, 열 정리를 해주었다.
esg= pd.read_excel(r"파일경로")
esg
<결과>
[3] 환경등급 평가 매핑
더보기
매핑을 한 이유
환경 등급이 A+, A, B+, B, C, D, 등급없음, 미공개로 입력되어 있었다.
하지만 평가년도별 기업의 환경평가 등급의 추이를 시각화하기 위해서는 정량적인 데이터가 필요했다.
그에 따라 각 등급별로 숫자 값을 매핑하기로 결정!
grade_mapping={
'A+': 7,
'A': 6,
'B+': 5,
'B': 4,
'C': 3,
'D': 2,
'등급없음': 1,
'미공개': 1
}
esg['환경등급_숫자']=esg['환경'].map(grade_mapping) #매핑한 값을 넣을 열 생성
<결과>
[4] 기업 코드 확인
* 동일한 기업코드를 가진 값의 연도별 추이를 시각화
esg['기업코드'].unique()
- unique() : 열의 고유값 확인 함수
[5] 시각화
기업코드리스트 = esg['기업코드'].unique() # 기업코드 리스트 생성
plt.rcParams['font.family'] = 'Malgun Gothic' #한글깨짐방지
chunk_size = 100 #한번 번에 처리할 기업 수
for i in range(0, len(기업코드리스트), chunk_size):
chunk = 기업코드리스트[i:i+chunk_size] #현재 위치 i에서 부터 i+100까지 기업 코드를 잘라 chunck에 저장
pdf_path = f"환경등급_추이_{i//chunk_size + 1}.pdf" # pdf 파일 이름
with PdfPages(pdf_path) as pdf:
for code in chunk:
df_temp = esg[esg['기업코드'] == code].sort_values('평가년도')
#esg 데이터에서 현재 기업 코드에 해당하는 행만 추출하고 평가년도로 정렬
if df_temp.empty: #데이터가 없으면, 건너뛰기
continue
기업명 = df_temp['기업명'].iloc[0] #기업명 추출
plt.figure(figsize=(10, 5)) #그래프 사이즈
plt.plot(df_temp['평가년도'], df_temp['환경등급_숫자'], marker='o', linestyle='-', color='darkgreen') # x축 평가년도, y축 환경등급_숫자로 된 그래프, 점 표시, 진녹색 선
plt.title(f"{기업명} ({code}) 환경 평가 등급 추이") #제목 이름 설정
plt.xlabel("평가년도") # x축 이름
plt.ylabel("등급 점수") # y축 이름
plt.xticks(df_temp['평가년도']) #x축 눈금 지정
plt.yticks(ticks=[1,2,3,4,5,6,7], labels=['1(미공개)', '2(D)', '3(C)', '4(B)', '5(B+)', '6(A)', '7(A+)']) #y축 눈금은 점수와 등급으로 표시
plt.grid(True) # 격자 생성
plt.tight_layout() # 레이아웃 자동 정리 (각 요소들이 겹치지 않게 여백 조정)
pdf.savefig() #현재 그린 그래프를 pdf 한장으로 저장
plt.close() # 그래프 닫기
print(f"✅ 저장 완료: {pdf_path}") #pdf 파일 저장 결과 알림
<결과>
'Python' 카테고리의 다른 글
Python : pivot(피벗) 및 결과 그래프 한 눈에 보기 (0) | 2025.06.15 |
---|---|
Python: 그래프 디자인(그리드, 그래프 내 텍스트, 범례 설정, 단위 수정) (1) | 2025.06.14 |
Python: 웹 크롤링 (2) | 2025.06.14 |
2. 중앙값 구하기 , 최빈값 구하기 , 홀수만 출력하기 (Python) (0) | 2024.10.23 |
1. 두 수 몫 구하기, 두 수의 나눗셈 , 숫자 비교하기, 분수 덧셈, 배열 2배 만들기 (Python) (0) | 2024.10.22 |