Как создать сюжет нового DataFrame на основе другого Dataframe - PullRequest
1 голос
/ 12 апреля 2020

Итак, у меня есть этот тип данных:

     Time  Type
1      81  sell
4       9  sell
7      36  sell
10     82   buy
13    106   buy
..    ...   ...
722   105  sell
723   105  sell
727   110  sell
728   110  sell
729   110  sell

Где Время показывает час недели, а Тип показывает действие (покупка или продажа). Я хотел бы построить график, где X - это часы недели от 1 до 140, а Y - количество покупок и продаж за время на многобаровой диаграмме. Как бы я это сделал?

Ответы [ 2 ]

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

если я правильно понимаю,

df.groupby(['Time']).apply(lambda x: x['Type'].value_counts()).plot(kind='bar')

или если вы хотите, чтобы бары были рядом друг с другом.

df = df.groupby(['Time']).apply(lambda x: x['Type'].value_counts())
df.reset_index().pivot('Time','level_1','Type').plot(kind='bar')

enter image description here

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

Используя мой метод, я создал два новых столбца для подсчета продаж и покупок, а затем сгруппировал их по времени и типу. Затем я создал сюжет.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df1=df.copy()
df1['Type_Count_Sell'] = np.where(df1['Type'] == 'sell', 1, 0)
df1['Type_Count_Buy'] = np.where(df1['Type'] == 'buy', 1, 0)
df1=df1.groupby(['Time', 'Type']).sum().reset_index()
#df1=df1.loc[df1.Time != '...']
df1['Time']=df1['Time'].astype(int)

ax = plt.subplot(111)
ax.set_title('Buys an dSells Count')
ax.set_xlabel('Hour')
ax.set_ylabel('Count of Type')
ax.bar(df1['Time'], df1['Type_Count_Sell'], width=1, color='b', align='center')
ax.bar(df1['Time']+1, df1['Type_Count_Buy'], width=1, color='g', align='center')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...