# 데이터를 다루는 라이브러리 - pandas
import pandas as pd
# 엑셀 파일을 다룰 수 있는 라이브러리 - xlrd
import xlrd
# 데이터 다루는 라이브러리 - numpy
# 그래프 그리는 라이브러리 - matplotlib.pyplot
import matplotlib.pyplot as plt
import numpy as np
# 공개된 데이터 파일을 불러옵니다
## 데이터 파일 링크 --> https://data.newstapa.org/datasets/%EA%B0%80%EC%A7%9C%ED%95%99%ED%9A%8C-WASET-%ED%95%9C%EA%B5%AD-%EA%B4%80%EB%A0%A8-%EB%8D%B0%EC%9D%B4%ED%84%B0
!wget https://data.newstapa.org/datasets/%EA%B0%80%EC%A7%9C%ED%95%99%ED%9A%8C-WASET-%ED%95%9C%EA%B5%AD-%EA%B4%80%EB%A0%A8-%EB%8D%B0%EC%9D%B4%ED%84%B0/files/waset-20180727.csv
# 데이터 파일을 불러옵니다
file_name = 'waset-20180727.csv'
# 불러온 csv 파일을 dataframe 형태로 저장합니다
df_data = pd.read_csv(file_name)
# 불러온 데이터를 print 함수를 활용해 확인합니다
print(df_data)
# 카테고리별로 합계 구하기 value_counts
ratings = df_data['Institution'].value_counts()
print(ratings)
# 합계 데이터 dataframe 형태로 만들기
df_bar = ratings.reset_index()
df_bar.columns = ['university', 'counts']
print(df_bar)
# 상위 10개 대학 추출하기 sort_values / ascending
df_ranking = df_bar.sort_values(['counts'], ascending=False)[0:10]
print(df_ranking)
# 그래프 항목 길이 구하기
y_pos = np.arange(len(df_ranking))
# 막대 차트 그리기
# 수평 막대 그리는 함수는 barh
rects = plt.barh(y_pos, df_ranking['counts'], color='#333333')
# 막대 차트 y축에 카테고리 대학교 이름 추가하기 yticks
plt.yticks(y_pos, df_ranking['university'])
# 그래프 보여주기
plt.show()
# 연도별 합계를 구한다
years = df_data['Year'].value_counts()
# 데이터 칼럼명을 붙입니다.
df_years = years.reset_index()
df_years.columns = ['Year', 'counts']
print(df_years)
# 합쳐진 그래프로 그래프를 그려봅니다.
plt.plot(df_years['Year'], df_years['counts'])
plt.show()
# 오류 확인하기
print(df_years)
# 오류 수정하기
df_years = df_years.sort_values(by=['Year'])
print(df_years)
# 기본 그래프 그리기
plt.plot(df_years['Year'], df_years['counts'])
plt.show()
# 그래프 제목달기
# 기본 그래프 그리기 plot, 제목 title
plt.plot(df_years['Year'], df_years['counts'])
plt.title('Waset data')
plt.show()
# 스타일 바꾸기
## 색 바꾸기 - color
## 선 두께, 스타일 바꾸기 - color, linewidth, marker, linestyle
plt.plot(df_years['Year'], df_years['counts'], color='red', linewidth=2, marker='o', linestyle='--')
plt.show()
# 그래프 스타일 템플릿 사용하기 style use
## https://matplotlib.org/3.1.1/gallery/style_sheets/style_sheets_reference.html
plt.style.use('bmh')
plt.plot(df_years['Year'], df_years['counts'])
plt.show()