Как выбрать минимальные и максимальные значения для горизонтальной диаграммы леденцов / гантелей? - PullRequest
1 голос
/ 31 мая 2019

Я создал диаграмму гантелей, но получаю слишком много минимальных и максимальных значений для каждого типа категории. Я хочу отобразить только одну небесно-голубую точку (минимальная цена) и одну зеленую точку (максимальная цена) на область.

Вот как выглядит график:

Моя диаграмма гантелей

Вот мой DataFrame:

Фрейм данных

Вот ссылка на полный набор данных:

https://drive.google.com/open?id=1PpI6PlO8ox2vKfM4aGmEUexCPPWa59S_

А вот мой код:

   import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns

    db = df[['minPrice','maxPrice', 'neighbourhood_hosts']]
    ordered_db = db.sort_values(by='minPrice')
    my_range=db['neighbourhood_hosts']

    plt.figure(figsize=(8,6))
    plt.hlines(y=my_range, xmin=ordered_db['minPrice'], xmax=ordered_db['maxPrice'], color='grey', alpha=0.4)
    plt.scatter(ordered_db['minPrice'], my_range, color='skyblue', alpha=1, label='minimum price')
    plt.scatter(ordered_db['maxPrice'], my_range, color='green', alpha=0.4 , label='maximum price')
    plt.legend()


    plt.title("Comparison of the minimum and maximum prices")
    plt.xlabel('Value range')
    plt.ylabel('Area')

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

1 Ответ

1 голос
/ 31 мая 2019

Согласно разговору, вот сценарий:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('dumbbell data.csv')
db = df[['minPrice','maxPrice', 'neighbourhood_hosts']]
#create max and min price based on area name
max_price = db.groupby(['neighbourhood_hosts'])['maxPrice'].max().reset_index()
min_price = db.groupby(['neighbourhood_hosts'])['minPrice'].min().reset_index()
var_price = pd.DataFrame()
var_price['range'] = max_price.maxPrice-min_price.minPrice
var_price['neighbourhood_hosts'] = min_price['neighbourhood_hosts']
var_price = var_price.sort_values(by='range')

#sort max and min price according to variance
max_price = max_price.reindex(var_price.index)
min_price = min_price.reindex(var_price.index)

plt.figure(figsize=(8,6))
plt.hlines(y=min_price['neighbourhood_hosts'], xmin=min_price['minPrice'], xmax=max_price['maxPrice'], color='grey', alpha=0.4)
plt.scatter(min_price['minPrice'], min_price['neighbourhood_hosts'], color='skyblue', alpha=1, label='minimum price')
plt.scatter(max_price['maxPrice'], max_price['neighbourhood_hosts'], color='green', alpha=0.4 , label='maximum price')
plt.legend()


plt.title("Comparison of the minimum and maximum prices")
plt.xlabel('Value range')
plt.ylabel('Area')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...