Как объединить двухлетние строки как диапазон в pandas и построить его график с другим столбцом - PullRequest
0 голосов
/ 06 мая 2020

У меня есть набор данных, содержащий столбцы ageFrom, ageTo и sales. Теперь я хочу построить график с возрастным диапазоном на одной оси и продажами на другой оси, чтобы найти продажи на основе возрастного диапазона?

enter image description here

Я сгруппировал по возрасту от, возраст до и нашел сумму продаж. Теперь мне нужно построить график ageFrom и ageTo как диапазон по оси X и Total Amount как по оси Y. Как к этому подойти?

1 Ответ

0 голосов
/ 06 мая 2020

Теперь я не уверен, что вы пробовали / не пробовали, однако самый простой способ сделать это - просто создать средний столбец (чтобы избежать нечисловых c значений, если вы хотите создать диапазон) для вашего диапазон, а затем сопоставьте его со своими продажами. Следующее должно сделать это:

import pandas as pd

#data
d = {'ageFrom': [0, 11, 21, 31], 'ageTo': [10, 20, 30, 40], 'sales':[2, 10, 15, 20]}
#create dataframe
df = pd.DataFrame(data = d)

#create a mean value for your range
df['mean'] = (df['ageFrom']  + df['ageTo'])/2
#plot data
ax1 = df.plot.scatter(x='mean',y='sales')

enter image description here

ИЛИ: вы все равно можете создать столбец диапазона и построить его как столбчатая диаграмма, как показано ниже:

#create a range column
df['range'] = df['ageFrom'].astype(str)  + '-' + df['ageTo'].astype(str)
#plot bar
ax2 = df.plot.bar(x='range', y='sales', rot=0)

enter image description here

Наконец, вы все равно можете использовать не числовые c для оси x используя matplotlib, как показано ниже:

import matplotlib.pyplot as plt

plt.scatter(df.range,df['sales'],c='b',label='range')

enter image description here

...