Я случайно испортил свой график python и не могу исправить это сейчас, однако он работал 30 минут назад

#python #pandas #dataframe #plot #python-requests

#python #pandas #dataframe #график #python-запросы

Вопрос:

Я все сделал правильно, но сегодня я все испортил, и построение графика невозможно — получить сообщение об ошибке, в котором говорится, что числовые данные для построения отсутствуют, когда буквально 30 минут назад он строился — что я сделал не так?

 import pandas as pd
from bs4 import BeautifulSoup 
import requests

wikiurl='https://en.wikipedia.org/wiki/Aviation_accidents_and_incidents#Statistics'

table_class="wikitable sortable jquery-tablesorter"
response=requests.get(wikiurl)
print(response.status_code)

soup = BeautifulSoup(response.text, 'html.parser')
indiatable=soup.find('table',{'class':"wikitable"})

df=pd.read_html(str(indiatable))
# convert list to dataframe
df=pd.DataFrame(df[0])
print(df.head)



df = df.sort_values(['Year'], ascending=[1])



ax = df.plot(x='Year', y = 'Deaths[57]', title = 'Aviation Accidents and Incidents', figsize=(20,20), 
grid=True)
 

Ответ №1:

Кажется, у вас есть несколько нечетных символов в вашем фрейме данных, например, ? которые заставляют столбец быть dtype = object таким, генерируя ошибку, что у него нет числовых значений для отображения. Вы можете обойти это, предварительно преобразовав все столбцы в числовые и превратив символы в NaN , pd.to_numeric() позволяя вам иметь числовые столбцы, следовательно, способные генерировать график. Это было бы моим обходным путем:

 df = df.sort_values(['Year'], ascending=[1])
for i in df:
  df[i] = pd.to_numeric(df[i],errors='coerce')

ax = df.plot(x='Year', y = 'Deaths[57]', title = 'Aviation Accidents and Incidents', figsize=(20,20), 
grid=True)
 

И график выглядит примерно так, с пробелами, учитывающими недостающие данные. Эти недостающие данные могут быть заполнены различными различными методами, такими как fillna() и / или interpolate() :

введите описание изображения здесь

Комментарии:

1. С удовольствием, не стесняйтесь принять мой ответ, если он помог вам решить проблему (:

2. Извиняюсь, но кто-нибудь может дать мне код для заполнения недостающих данных. Особенно данные 2001 года, которые были 9/11

3. привет @Raxephion! Дружеское напоминание о том, что люди будут более склонны помогать, если вы пометите их ответы как полезные или правильные

4. Я бы с удовольствием это сделал, но как — я новичок в этом, поскольку мне отлично помогли?