<p>正如@user308827已经说过的,我也会使用seaborn来实现这一点,但我会做得有点不同:</p>
<pre><code>import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
pd.set_option('display.expand_frame_repr', False)
cols = ['ID', 'address', 'used_at']
df = pd.read_csv(r'D:\data\gDrive\data\.stack.overflow\data\avito_trend.csv.gz',
parse_dates=['used_at'], usecols=cols)
df.sort_values(['ID','used_at','address'], inplace=True)
df['prev_address'] = df['address'].shift()
df['time_diff'] = df['used_at'] - df['used_at'].shift()
df = df[df['address'] != df['prev_address']]
df = df[df['time_diff'] <= pd.Timedelta('10min')]
tmp = df[['ID','address','prev_address']] \
.groupby(['address','prev_address', df.used_at.dt.year]) \
.count() \
.reset_index()
# remove `df` from memory
del df
tmp['visit_from'] = tmp['prev_address'] + ' -> ' + tmp['address']
# keep only 'interesting' columns
tmp = tmp[['visit_from','used_at','ID']]
tmp.columns = ['visit_from','year','visits']
# save temporary groupped CSV file
#fn = r'D:\data\gDrive\data\.stack.overflow\data\avito_grp.csv'
#tmp.to_csv(fn, index=False)
# show all
#df = tmp
# show only those sites with visits >= 100 (within both years)
df = tmp[tmp.groupby('visit_from')['visits'].transform('sum') >= 100].reset_index()
# prepare sorted index
idx = df.groupby('visit_from')['visits'].transform('sum').sort_values(ascending=False).index
# 'apply' index
df = df.reindex(idx)
# add 'total' column (sum of visits for all years)
#df['total'] = df.groupby('visit_from')['visits'].transform('sum')
################################################
#
# SeaBorn plotting
#
sns.set(style="darkgrid")
sns.set_color_codes("pastel")
f, ax = plt.subplots(figsize=(16, 12))
ax = sns.barplot(x='visits', y='visit_from', hue='year', data=df, saturation=0.8)
plt.xlabel('Visits')
# add annotations
[ax.text(p.get_width() + 3, p.get_y() + p.get_height(),
int(p.get_width()), fontsize=8)
for p in ax.patches]
plt.show()
</code></pre>
<p>PS您感兴趣的部分以<code>SeaBorn plotting</code>注释开头</p>
<p><a href="https://i.stack.imgur.com/X4i1X.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/X4i1X.png" alt="Z@eB@vsy@"/></a></p>