繁体   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