Как мне отобразить данные, которые я получил от SQL? - PullRequest
0 голосов
/ 12 декабря 2018

Я выполняю упражнение в DataQuest, где пытаюсь отобразить набор данных, полученных из SQL.

Это выдает ошибку:

AttributeError: у объекта 'str' нет атрибута 'values'

Как у меня есть name по оси x и Pop_Density по оси y?Я понимаю, что Python не может отобразить имя, но как я могу ссылаться на имя вместе с номером?Должен ли я сначала преобразовать DataFrame в словарь?Строка с проблемой прокомментирована ниже.

import pandas as pd
import sqlite3

conn = sqlite3.connect("factbook.db")

q7 = '''
SELECT name, CAST(population as float)/CAST(area_land as float) AS Pop_Density
FROM facts
ORDER BY Pop_Density DESC
LIMIT 20
'''

density = pd.read_sql_query(q7, conn)
print(density)

Output Population Density

%matplotlib inline

import matplotlib.pyplot as plt
import seaborn as sns

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)

bar_heights = density['name'].iloc[0].values # <-- line with problem. 
bar_positions = arange(5) + 0.75
tick_positions = range(1, 20)

ax.bar(bar_positions, bar_heights, 0.5)
ax.set_xticks(tick_positions)
ax.set_xticklabels(num_cols, rotation=90)

ax.set_xlabel("Country")
ax.set_ylabel("Population Density")
ax.set_title("Countries With The Highest Population Density")

1 Ответ

0 голосов
/ 12 декабря 2018
bar_heights = density['Pop_Density'].values
bar_positions = np.arange(len(bar_heights)) + 0.75
tick_positions = range(1, len(bar_heights) + 1)

ax.bar(bar_positions, bar_heights, 0.5)
ax.set_xticks(tick_positions)
ax.set_xticklabels(density['name'], rotation=90)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...