【问题标题】:How to make a plot from value counts of two different DataFrames in Python如何从 Python 中两个不同 DataFrame 的值计数中绘制图表
【发布时间】:2020-10-22 23:20:52
【问题描述】:

我有以下两个数据框。我想绘制一个线图或散点图,它应指示 x 和 y 轴上“UserId”和“OwnerUserId”的值计数。请注意,“UserId”和“OwnerUserId”表示同一个用户,这些只是不同数据帧中的不同表示法。

我实际上想知道总数之间是否存在关系。用户拥有的徽章数(由“UserId”的值计数与他发布的帖子总数表示(由“OwnerUserId”的值计数表示。

我已经写了一个代码,但不知道它是否正确。

数据框 1(徽章)

rowId   UserId  Name    Date                   Class    TagBased
    1   1      Teacher  2009-09-30T15:17:50.660  3   False
    2   3      Teacher  2009-09-30T15:17:50.690  3   False
    3   13     Teacher  2009-09-30T15:17:50.690  3   False
    4   14     Teacher  2009-09-30T15:17:50.690  3   False
    5   22     Teacher  2009-09-30T15:17:50.690  3   False

DataFrame 2(帖子)

OwnerUserId   Post Title                                     CreationDate
1             Is a quotient of a reductive group reductive?  2009-09-28T16:11:38.533
2             Learning about Lie groups                      2009-09-28T17:42:23.207
1             Maths                                          2009-09-28T19:41:13.933

代码

x = badges['UserId'].value_counts()
y = posts['OwnerUserId'].value_counts()
sns.scatterplot(x,y)

注意 第一个数据帧的所有用户可能不会出现在第二个数据帧中。有没有一种方法可以只为两个数据框共有的用户绘制?

【问题讨论】:

    标签: python-3.x pandas matplotlib pandas-groupby seaborn


    【解决方案1】:

    如果您确定 帖子用户 包含在 徽章用户 中,您可以使用 过滤 徽章值帖子索引

    y = posts['OwnerUserId'].value_counts()
    x = badges['UserId'].value_counts()[y.index]
    sns.scatterplot(x,y)
    

    否则,使用 2 个数据帧的公共属性过滤 x 和 y

    common = list(set(badges.UserId.unique()).union(set(posts.OwnerUserId.unique()))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多