Seaborn - 如何在distplot中解释x轴的值?

时间:2017-03-29 08:14:59

标签: python pandas seaborn

我有一个数据框,其中每一行代表一个日期,在该日期中,数据库中记录了许多事件。

每个事件都有一个关注的日期,例如,在2017-02-03上记录的事件可能属于2017-02-02(意味着它在事件发生后的第二天记录)。

Screenshot of the dataframe head

我试图在distplot中可视化每列的分布,以了解记录事件的时间与其关注的日期之间的距离("人们是否记录事件同一天,后一天,甚至更晚?")。

到目前为止,我已经制作了一个函数,它遍历每一列并将其绘制成一个seaborn distplot。

def plot(dates):
    plt.figure(figsize=(45,25))
    for date in dates:
        sns.distplot(df[date], kde=False, bins=len(dates))
    return

情节看起来像这样: this

但是,我无法理解如何解释x轴上的值。

它显示的范围是0 - 3500,这是什么意思?

还有其他更好的方法可视化吗?

2 个答案:

答案 0 :(得分:2)

在你当前的skript中,你循环数据并绘制同一图中的所有输出。在您提供的示例图中,x轴显示在2017-02-28上发生的事件,我假设它是数据集中的最后一个日期。但是,不同的颜色显示其他日期的数据,这些日期在循环内的同一图中绘制。关于情节的解释:x轴显示每天的事件数量:在图的右侧,您可以看到通常只有一天大量(> 1000左右)的事件是录音机。从图的左侧可以看出,只记录了一个事件,大约有50天。简单的条形图可能更容易理解:它将在x轴上显示日期,在y轴上显示记录的事件数。 您可以通过修改函数来为每个日期绘制并保存单独的条形图,如下所示:

def plot(dates):
  for date in dates:
    plt.figure()
    plt.bar(np.arange(0,len(dates)),df[date], width=1.0)
    ax=plt.gca()
    ax.set_xticks(np.arange(0,len(dates)),)+0.5)
    ax.set_xticklabels(dates)
    plt.savefig('barchart_'+date+'.png')
    return

可能有更优雅的方法来研究您的数据,但我希望这有助于您前进。

答案 1 :(得分:1)

sns.distplot是直方图。这意味着它显示某个值落入某个bin的频率。

在这里,您可以计算每列的直方图。因此,在图中您会发现 某个在此列中出现的频率。 "频率" 是y轴,是x轴。

因为您要为数据框的每个n列执行此操作,所以最终会得到n个不同的直方图(每个都有不同的颜色)。

例如,每列中只有一个值超过3000,因此您会在图中看到3000左右的小条。另一方面,每列中有许多介于0和100之间的值,因此您会在0附近看到一个大的条。