Как построить числовые значения в matplotlib - PullRequest
0 голосов
/ 14 апреля 2020

Итак, у меня есть такая база данных:

     Time Type  Profit
2      82  s/l   -51.3
5       9  t/p  164.32
8      38  s/l  -53.19
11     82  s/l   -54.4
14    107  s/l  -54.53
..    ...  ...     ...
730   111  s/l  -70.72

731   111  s/l  -70.72
732   111  s/l  -70.72
733   113  s/l  -65.13
734   113  s/l  -65.13

[239 rows x 3 columns]

Я хочу построить график, который показывает X как время (это уже в часах недели), а Y как прибыль (которая может быть положительной или отрицательный). Для Y я бы хотел, чтобы в течение каждого часа (X) было 2 бара для отображения прибыли. Отрицательная прибыль в этом случае также будет положительной, но в другом баре.

Например, у нас есть -65 и 70. Они будут отображаться как 65 и 70 на графике, но потеря будет иметь другой цвет бара.

Это мой код:

#reading the csv file
data = pd.read_csv(filename)
df = pd.DataFrame(data, columns = ['Time','Type','Profit']).astype(str)

#turns time column into hours of week
df['Time'] = df['Time'].apply(lambda x: findHourOfWeek(x))

#Takes in winning trades (t/p) and losing trades(s/l)
df = df[(df['Type'] == 't/p') | (df['Type'] == 's/l')]



#Plots the chart
ax = df.plot(title='Profits and Losses (Hour Of Week)',kind='bar')
#ax.legend(['Losses', 'Winners'])
plt.xlabel('Hour of Week')
plt.ylabel('Amount Of Profit/Loss')
plt.show()

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете группировать, распаковывать и наносить на график:

(df.groupby(['Time','Type']).Profit.sum().abs()
   .unstack('Type')
   .plot.bar()
)

Для приведенных выше образцов данных выведите:

enter image description here

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