Как я могу вывести некоторые данные из ненормального фрейма данных?

#python #python-3.x #dataframe #plotly

#python #python-3.x #фрейм данных #графически

Вопрос:

Вот код, который я собираю.

 import requests
import pandas as pd
from pandas import DataFrame
pd.set_option('display.max_columns', None)

url = 'https://www.federalreserve.gov/releases/h8/current/default.htm'
html = requests.get(url).content
df_list = pd.read_html(html)
df = df_list[10]
df.shape
list(df)
type(df)

import plotly.express as px
fig = px.histogram(df['Commercial and industrial loans'])
fig.show()
  

Код работает, за исключением части построения графика. Объект: pandas.core.frame.DataFrame

Однако что-то мне кажется странным, потому что когда я запускаю list(df) , я получаю это:

 [('Account', 'Account'),
 ('Account', 'Account.1'),
 ('2019 Aug', '2019 Aug'),
 ('2020 Feb', '2020 Feb'),
 ('2020 Mar', '2020 Mar'),
 ('2020 Apr', '2020 Apr'),
 ('2020 May', '2020 May'),
 ('2020 Jun', '2020 Jun'),
 ('2020 Jul', '2020 Jul'),
 ('2020 Aug', '2020 Aug'),
 ('Week ending', 'Aug 12'),
 ('Week ending', 'Aug 19'),
 ('Week ending', 'Aug 26'),
 ('Week ending', 'Sep 02')]
  

Это не похоже ни на один фрейм данных, который я видел раньше. В конечном счете, я пытаюсь отобразить данные для учетной записи «Коммерческие и промышленные кредиты». Как я могу это сделать?

Ответ №1:

Данные выглядят не очень чистыми. и то, что у вас есть, называется multiIndex . На основе вашего варианта использования я создал приведенный ниже код.

 df_list = pd.read_html(html)
df = df_list[10]

df = df.drop(df.columns[0], axis=1) #drop the first column 0,1,2 etc
df.columns = df.columns.droplevel(0) #remove the upper level of multi Index
df.rename(columns = {'Account.1':'Account'}, inplace = True) #Rename Columns
df = df.set_index('Account').transpose() #Transpose the data

#Plot
import plotly.express as px
fig = px.bar(df,y = 'Commercial and industrial loans',x = df.index)
fig.show()
  

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

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

1. Для меня это выглядит правильно. Однако, когда я запускаю ваш код в своей среде, я фактически не получаю диаграмму. fig кажется прекрасным, но fig.show() на самом деле ничего не выдает.

2. fig.show() работает для меня как в shell, так и в jupyter notebook. Что вы используете? Использование в оболочке открывает браузер для рендеринга.

3. Я использую Python 3.7.6 и Spyder 4.0.1. Я, конечно, поискал решение в Google, но не нашел ничего полезного. Кроме того, это РАБОТАЕТ, когда я запускаю его в ноутбуке Jupyter и на том же ноутбуке.

4. Тогда вы можете попробовать автономную версию from plotly.offline import plot plot(fig)

5. Да, это работает!!! Спасибо за всю помощь здесь!!!