3 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個贊
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df_ = pd.read_csv('sam.csv')
df_['date'] = pd.to_datetime(df_['start_time']).dt.date
df_ = df_.set_index('start_time')
grouped = pd.DataFrame(df_.groupby(['date', 'status']).size().reset_index(name="count")).pivot(columns='status', index='date', values='count')
print(grouped)
sns.set()
grouped.plot(kind='bar', stacked=True)
# g = grouped.plot(x='date', kind='bar', stacked=True)
plt.show()
輸出:

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個贊
嘗試轉(zhuǎn)型df_與pandas.crosstab替代:
color = ['blue', 'yellow', 'green', 'red']
df_xtab = pd.crosstab(df_.start_time.dt.date, df_.status)
這DataFrame看起來像:
status ABANDONED_BY_TIMEOUT ABANDONED_BY_USER COMPLETED
start_time
2017-10-31 1 0 0
2017-11-01 0 0 1
2017-11-02 1 0 2
2017-11-03 0 1 0
并且更容易繪制。
df_xtab.plot(kind='bar',stacked=True, color=color, rot=90)

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊
使用barplot帶有色調(diào)的seaborn 庫
代碼:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df_ = pd.read_csv('sam.csv')
df_['date'] = pd.to_datetime(df_['start_time']).dt.date
df_ = df_.set_index('start_time')
print(df_)
grouped = pd.DataFrame(df_.groupby(['date', 'status']).size().reset_index(name="count"))
print(grouped)
g = sns.barplot(x='date', y='count', hue='status', data=grouped)
plt.show()
輸出:
數(shù)據(jù):
status,start_time,end_time
COMPLETED,2017-11-01 19:58:54.726,2017-11-01 20:01:05.414
COMPLETED,2017-11-02 19:43:04.000,2017-11-02 19:47:54.877
ABANDONED_BY_USER,2017-11-03 23:36:19.059,2017-11-03 23:36:41.045
ABANDONED_BY_TIMEOUT,2017-10-31 17:02:38.689,2017-10-31 17:12:38.844
COMPLETED,2017-11-02 19:35:33.192,2017-11-02 19:42:51.074
ABANDONED_BY_TIMEOUT,2017-11-02 19:35:33.192,2017-11-02 19:42:51.074
添加回答
舉報(bào)