【问题标题】:How do I create a purchase activity plot using matplotlib?如何使用 matplotlib 创建购买活动图?
【发布时间】:2018-12-28 21:08:42
【问题描述】:

如何使用 matplotlib 创建用户活动图。我查看了有关堆栈溢出的其他类似答案,但没有一个能很好地回答我的问题。

我的 pandas 数据框如下所示:

 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)

我的目标是可视化客户的购买活动。谢谢。

【问题讨论】:

    标签: python python-3.x pandas matplotlib


    【解决方案1】:

    user 列映射到每个user 的唯一数值,这样您就可以简单地绘制它,然后只需更改刻度标签。

    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 对象,您必须跳过很多圈才能得到它正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2013-03-07
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多