파이썬 그래프 활용에서의 for문

조회수 2728회

이미지

현재 코로나 나라별 사망률을 그래프로 만들려고 하는 코드입니다. 이 코드에서 for문 안에서는 name(나라이름)도 해당 페이지에 있는 나라 이름들이 전부 나오고 r_rate(나라별 사망률)도 해당 페이지에 있는 나라별 사망률도 정확히 다 나오는데 for문 밖에서 name과 r_rate를 사용해서 그래프로 출력할려고 하니까 전부안나오고 마지막 나라와 마지막 나라의 사망률만 나오네요. 혹시 어떻게 하면 모든 나라와 모든 나라의 사망률이 표시되게 할수있는지 아시는분 계신가요?

이미지

import urllib.request
import requests
from urllib.parse import quote_plus
from bs4 import BeautifulSoup
from urllib import parse
import matplotlib.pyplot as plt 


url='https://coronavirus.jhu.edu/data/mortality'
fp = urllib.request.urlopen(url)
source = fp.read()
fp.close()
soup = BeautifulSoup(source, "html.parser")
base_info= soup.find("div", {"class": "TFormat_main__35Moj"})
second_info=base_info.find_all('td')

for i in range(0,846,5):
    name=second_info[i].text.strip()      

for i in range(3,849,5):
    rate=second_info[i].text.strip()
    r_rate=float(rate.replace("%",""))


plt.rc('font', family='Malgun Gothic')
country=[name]
drate=[r_rate]
plt.rc('font', family='Malgun Gothic')
plt.figure(figsize=(10,6))
Colors=['red','green','blue','black']
plt.bar(country,drate,color=Colors)
plt.title('Covid19 Fatality Rate 2020.12')
plt.ylabel('Fatality Rate (%)')
plt.grid()
plt.show()

1 답변

  • print(country)
    print(drate)
    

    을 해보세요. 원소가 하나 밖에 없어요.

    질문입니다.

    1. 왜 하나밖에 없을까요?
    2. name = second_info[i].text.strip() ???

    위 질문에 답을 할 수 있으면, 문제를 풀 수 있습니다.


    덤으로, pd.read_html 이라는 아주 좋은 함수가 있습니다.

    dfs = pd.read_html('https://coronavirus.jhu.edu/data/mortality')
    df = dfs[0]
    
    df['Death Rate'] = df['Deaths']/df['Confirmed']
    plt.bar(df['Country'], df['Death Rate'])
    plt.show()
    
    df1 = df[:10]
    plt.bar(df1['Country'], df1['Death Rate'])
    plt.show()
    

    이것도 실행해 보세요.

    • for문 밖에서는 제가 입력한걸로 의하면 값이 한개밖에 없는것은 알고있습니다. 그래서 for문 안에 가둘려고 하니 그것도 잘안되더라구요. 그래서 어떻게 하면 값을 전부다 뜨게 할수있는지 여쭤봤습니다. 이제 입문이구 인터넷으로 찿는정보는 한계가 있더라구요. case가 완전히 같지도 않구요. 제가 쓴 식외에 따로 써야되는 식이있는건가요? 알 수 없는 사용자 2020.12.3 18:58
    • @Jeongtak Cho : 파이썬의 아주아주 기초문법입니다. 기초문법은 인터넷으로 찾는 것 보다 책을 하나 잡고 익히는 것이 먼저일 거에요. 간단히 원하시는 답을 알려드릴 수 있겠지만, 너무 기초적인 문법이라서, 이걸 스스로 못하신다면, 앞으로 다른 작업에서도 걸림돌이 많을 거에요. 기초문법 책이나 연속된 기초강좌 한번씩 따라치면서 익혀보시길 권합니다. 그리고 하시는 작업에 pandas 내용도 필요한 것 같은데, 기초문법을 익힌 후에는 pandas 문법도 책이나 강좌로 쭉 따라해보시기 바라고요. nowp 2020.12.4 05:35

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)