본문 바로가기

환경, 에너지

[EMS] matplotlib, folium

 

결측값 처리

- fillna()

 

⁂ 행과 열 치환하기 , 전치행렬 ⁂

- .T , transpose()

- 치환후 데이터타입은 object

 

데이터타입 변환

- astype()

 

⁂ 이전 행/ 다음행 의 값으로 새로운 컬럼 만들기⁂

- df['컬럼명'].shift(1) 

- df['컬럼명'].shift(-1) 

 

 


⁂ zip ⁂

- 각 리스트들의 요소를 한개씩 뽑아서 튜플 형태로 반환

- 리스트들의 길이가 동일하지 않다면 가장 짧은 리스트 요소까지 반환 

lista = ['a','b','c']
list1 = [1,2,3]
list2 = ['가','나','다']
list3 = [4,5,6]
list4 = ['+','*','&']

listall = zip(lista, list1, list2,list3,list4)
for d in listall : 
    print(d)
    
#결과
('a', 1, '가', 4, '+')
('b', 2, '나', 5, '*')
('c', 3, '다', 6, '&')



 

데이터 시각화

- plot(kind = 'scatter')

- plot(kind = 'hist')

- plot(kind = 'bar')

 

 

 

연합그래프 그리기

'''
ax1 : 막대그래프 영역. pnadas.plot 함수로 그래프 작성
ndf[['수력','화력']] :  수력, 화력데이터로만 그래프 작성
width=0.7 : 막대그래프 넓이
stacked=False 막대를 따로따로 표시.기본값. True : 누적막대그래프
'''
ax1 = ndf[['수력','화력']].plot(kind = 'bar', figsize=(20,10),
                           width = 0.7, stacked=False) 
'''
ax2 : 선그래프영역. plt 패키지로 그래프 작성.
ndf.index : x축의 값
ndf.증감률 : y축의 값
ls='--' = 선의 종류 (-:실선, --:대쉬선)
'''
ax2 = ax1.twinx() # ax1, ax2 그래프를 같은 영역에서 출력
ax2.plot(ndf.index, ndf.증감률, ls='-', marker = 'o', markersize = 10,
           color='green', label = '전년대비 증감률(%)') # 선그래프
ax1.set_ylim(0,200) # ax1 영역의 y축의 값의 범위 설정
ax2.set_ylim(-50,50) # ax2 영역의 y축의 값의 범위 설정
ax1.set_xlabel('년도', size=20) # x축의 라벨
ax1.set_ylabel('발전량(억 Kwh)') # y축의 라벨
ax2.set_ylabel('전년 대비 증감률(%)') #y축의 라벨
plt.title('북한 전력 발전량(1990~2014)', size=30)
ax1.legend(loc ='upper left') #범례
ax2.legend(loc='upper right')

# 이미지 저장하기 (파일명, 해상도)
plt.savefig("북한전력량.png", dpi = 400, bbox_inches='tight')
plt.show()

 

 

 

 

boxplot 두개 그리기

# 박스그래프 : box 그래프
# 두개의 그래프로 출력하기
# 그래프 출력을 위한 영역 생성

fig = plt.figure(figsize=(15,5))
ax1 = fig.add_subplot(1,2,1) # 1행2열 1번째영역
ax2 = fig.add_subplot(1,2,2) # 1행2열 2번째영역
'''
x=[usa의 연비(mpg) 데이터목록, japan의 연비(mpg) 데이터목록, europe의 연비(mpg) 데이터목록]
vert=False : 수평박스플롯
sym : 이상치 표현 방식
     'r*' : red, *
           r:red, b:blue,...
           *:별, s:사각형, .:점, o:원, d:다이아몬드 
'''


box1 = ax1.boxplot(x=[mpg[mpg['origin']=='usa']['mpg'],
                      mpg[mpg['origin']=='japan']['mpg'],
                      mpg[mpg['origin']=='europe']['mpg']],
                      labels = ['USA','JAPAN','EU'], sym='r*')
box2 = ax2.boxplot(x=[mpg[mpg['origin']=='usa']['mpg'],
                      mpg[mpg['origin']=='japan']['mpg'],
                      mpg[mpg['origin']=='europe']['mpg']],
                      labels = ['USA','JAPAN','EU'], vert=False)
ax1.set_title('제조국별 연비 분포(수직박스플롯)')
ax2.set_title('제조국별 연비 분포(수평박스플롯)')

 

 

 

 

folium으로 지도 시각화

seoul_map = folium.Map(location = [37.55, 126.98], zoom_start = 12)

for name, lat, lng in zip(lib.index, lib.위도,lib.경도) : 
    folium.Marker([lat,lng],popup=name, tooltip=name,
                  icon = folium.Icon(color='orange', icon ='bookmark')
                  ).add_to(seoul_map)
seoul_map.save('seoul5.html')

 


사람들이 점점 줄어든다

다덜 어디가신거죠....돌아와요...젭알...

'환경, 에너지' 카테고리의 다른 글

[EMS]BeautifulSoup, Selenium  (0) 2024.07.10
[EMS] folium, numpy  (0) 2024.07.09
[EMS] Pandas 기본  (0) 2024.07.03
[EMS] Python 예외처리, 클래스와 모듈, 정규식  (1) 2024.07.03
[EMS] Python 기초  (0) 2024.07.02