수업(국비지원)/Python

[Python] drinks.csv 파일 분석하기4

byeolsub 2023. 4. 26. 21:50
#################################
# 전세계 음주 데이터 분석하기 : drinks.csv
import pandas as pd
drinks = pd.read_csv("data/drinks.csv")
drinks.info()
'''
  country : 국가명
  beer_servings : 맥주소비량
  spirit_servings : 음료소비량
  wine_servings : 와인소비량   
  total_litres_of_pure_alcohol : 순수 알콜량
  continent : 대륙명
'''
drinks.head()

📌

'''
total_servings 전체 술소비량을 막대그래프로 작성하고, 
 대한민국의 위치를 빨강색으로 표시하기 

1.total_serving_rank = drinks[["country","total_servings"]] 
2.total_serving_rank total_servings 값의 내림차순으로 정렬  
3.total_serving_rank 데이터를 막대그래프로 작성.   
  대한민국의 데이터는 빨강색으로 변경 
4.막대그래프에 설명선 추가하기 

'''
#1. 전체 술 소비량
total_serving_rank = drinks[["country","total_servings"]]
total_serving_rank

#2-1 total_servings 값의 내림차순으로 정렬
total_serving_rank = total_serving_rank.sort_values(by="total_servings",ascending=False) 
total_serving_rank
#2-2
total_serving_rank = drinks[['country','total_servings']]
total_serving_rank = total_serving_rank.sort_values\\
										(by=['total_serving'], ascending=False)

# x축 대상으로 국가명 조회
country_list = total_serving_rank.country.tolist()
country_list

#3. total_serving_rank 데이터 막대그래프 시각화 하기
import numpy as np
import matplotlib.pyplot as plt
plt.rc("font", family="Malgun Gothic")

# x축의 값.
x_pox = np.arange(len(country_list)) 
# 막대그래프 y축의 값
rank = total_serving_rank.total_servings.tolist() # 알콜량

# 막대그래프 
# bar_list : 막대 목록
bar_list = plt.bar(x_pox, rank)

# 대한민국의 인덱스순서. 대한민국의 x축 값
korea_rank = country_list.index("South Korea")
korea_rank

# 대한민국 막대의 색을 red로 변경
bar_list[korea_rank].set_color('r')

plt.ylabel('total_servings')
plt.title('drink servings rank by country')

# (x축값의 시작, x축 종료, y축 시작, y축 종료) 
plt.axis([0,200,0,700])

# korea_serving_rate : 대한민국의 전체 술 소비량 데이터. y축값
korea_serving_rate = total_serving_rank\\
    [total_serving_rank['country'] == 'South Korea']\\
        ['total_servings'].values[0]

#4.막대그래프에 설명선 추가하기         
plt.annotate('South Korea :' + str(korea_rank +1) + "번째",
             xy=(korea_rank, korea_serving_rate),
             xytext=(korea_rank + 10, korea_serving_rate + 50),
             arrowprops=dict(facecolor='red', shrink=50))
plt.show()