私はPythonでのプロットの世界に不慣れで、今日自分でミニプロジェクトを行うことを学び始めました。データをスクレイピングして、次のコードを表現しようとしました。
import requests
import pandas as pd
from pandas import DataFrame
import numpy as np
import bs4
from bs4 import BeautifulSoup
import matplotlib.pyplot as plot
# Getting the HTML page
URL = "https://www.worldometers.info/coronavirus/#countries"
pag_html = requests.get(URL).text
# Extracting data with BeautifulSoup.
soup = BeautifulSoup(pag_html, 'html.parser')
tabla = soup.find("table", id="main_table_countries_today")
datos_tabla = tabla.tbody.find_all("tr")
Lista = []
for x in range(len(datos_tabla)):
values = [j.string for j in datos_tabla[x].find_all('td')]
Lista.append(values)
df = pd.DataFrame(Lista).iloc[7: , 1:9]
nombre_columna = ["Pais", "Casos totales", "Nuevos Casos", "Muertes totales", "Nuevas Muertes", "Total Recuperados", "Nuevos Recuperados", "Activos"]
df.columns = nombre_columna
df.plot(x="Pais", y="Casos totales", kind ="barh")
plot.show()
「TypeError:プロットする数値データがありません」というエラーが表示されます。このエラーは、「Casostotales」列がfloatではなく文字列であるためだと理解しています。データフレームの列をfloatに変換しようとしましたが、どこからでもエラーが発生することはありません。DataFrameをどのように表現できるか誰かが知っていますか?
ありがとう。
スクリプトの実行後、「Casos Totales」列は、値にコンマが含まれているため、文字列として解釈されています。データフレームの列名の名前を変更した直後に、を使用.str.replace(',','')
してこれを変更でき.astype(float)
ます。
df['Casos totales'] = df['Casos totales'].str.replace(',','').astype(float)
df.plot(x="Pais", y="Casos totales", kind ="barh")
plot.show()
そして、これはグラフをプロットします(視覚化はかなり貧弱ですが、それは別の話です)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加