Python 如何使用matplotlib创建采购活动图?
如何使用matplotlib创建用户活动图。我看过其他关于堆栈溢出的类似答案,但没有一个能很好地回答我的问题 我的熊猫数据框如下所示:Python 如何使用matplotlib创建采购活动图?,python,python-3.x,pandas,matplotlib,Python,Python 3.x,Pandas,Matplotlib,如何使用matplotlib创建用户活动图。我看过其他关于堆栈溢出的类似答案,但没有一个能很好地回答我的问题 我的熊猫数据框如下所示: user | purchase date | item ------------------------------- x | 7/1/2010 | AAA y | 8/2/2010 | BBB x | 7/2/2010 | CCC z | 8/4/2010 | AAA z |
user | purchase date | item
-------------------------------
x | 7/1/2010 | AAA
y | 8/2/2010 | BBB
x | 7/2/2010 | CCC
z | 8/4/2010 | AAA
z | 8/1/2010 | DDD
我想要这样的东西:
(users on y-axis)
x: |----X-X----------------------------------------
y: |-----------------X-----------------------------
z: |---------------X----X--------------------------
---|------------------------------------------------------->
time(I want dates to be in my x-axis)
我的目标是可视化客户的购买活动。谢谢。将
用户
列映射到每个用户
的唯一数值,这样您就可以简单地打印它,然后只需更改勾号标签
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df['purchase_date'] = pd.to_datetime(df.purchase_date)
users = df.user.unique()
d = dict((users[i], i) for i in range(len(users)))
df['user_id'] = df.user.map(d)
ax = df.plot(x='purchase_date', y='user_id', lw=0, marker='x', ms=6, legend=False)
ax.set_yticks(np.arange(0, len(users), 1))
ax.set_yticklabels(users)
plt.ylabel('user')
_ = plt.show()
请注意,我选择使用带有lw=0
的线图而不是散点图是很重要的,因为df.plot(kind='scatter')
无法处理x轴的datetime
对象,您必须跳过很多环才能正确处理