#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. Я бы с удовольствием это сделал, но как — я новичок в этом, поскольку мне отлично помогли?