簡體   English   中英

將帶有逗號的數據框中的列轉換為數字數據以進行繪圖

[英]Convert columns in dataframe with comas into numeric data to plotting

我是 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()

它給我的錯誤是:“類型錯誤:沒有要繪制的數字數據”我知道這個錯誤是因為“Casos totales”列是一個字符串而不是一個浮點數。 我試圖將我的 Dataframe 的列轉換為浮點數,但我無法從任何地方得到錯誤。 有誰知道我如何表示我的 DataFrame?

謝謝。

運行腳本后,正如您所說,由於值中的逗號,列“Casos Totales”被解釋為字符串。 您可以使用.str.replace(',','')然后.astype(float)更改它,在重命名數據.astype(float)的列名之后:

df['Casos totales'] = df['Casos totales'].str.replace(',','').astype(float)


df.plot(x="Pais", y="Casos totales", kind ="barh")
plot.show()

這繪制了圖形(雖然可視化效果很差,但那是另一回事了)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM