【问题标题】:How to create a column scatter plot from two different dataframes?如何从两个不同的数据框创建列散点图?
【发布时间】:2019-04-28 08:38:28
【问题描述】:

我有一个 1377x6 的数据框,有 2 列感兴趣:“ID”和“foo” 我将 foo 列拆分为 > 0.25 和

我想从 > 0.25 数据框和

我想如果我只是将负列合并到正数据框中,我应该不会遇到很多问题,但我想知道 是否可以使用来自两个不同数据框的值创建列散点图?

我尝试使用 plt.scatter(x = greater['foo'], y = less['foo']) 但我得到一个 ValueError,说 x 和 y 的大小必须相同。

将列合并到一个数据框能解决这个问题吗?

【问题讨论】:

  • 不,不会。您正在尝试将同一列的值相互绘制,即 x y 轴上同一列的数据。因此,如果没有进一步的信息,您如何确定哪些条目相互映射有点不清楚。此外,如果项目的数量 .25 不同, plt.scatter 会抛出一个错误,就像你的问题一样。我认为您更有可能想要绘制类似plt.scatter(greater['foo'], greater['ID']) 的内容
  • 这两个数据序列需要具有相同的维度(例如都是 100 行)。这就是导致错误的原因。尝试找到用于分割的动态边界(例如高于/低于中值),这会导致两个数据帧的长度相同。如果尺寸匹配,那么数据在哪个对象中并不重要。
  • 我正试图让它看起来像这样:link,x 轴散布着更大的值和小于的值 Y 轴本身就有 foo 值@warped跨度>

标签: python pandas dataframe visualization scatter-plot


【解决方案1】:

如果你可以使用seaborn,我想你想要sns.swarmplot

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import numpy as np

# generate dataframe with 100 random integers between 0 and 100
df = pd.DataFrame({'a': np.random.randint(0,100,100)})

# create a new column with True if value is larger than 50 and False otherwise
df['larger_than_50'] = df['a'] > 50

# make swarmplot
sns.swarmplot(x='larger_than_50', y='a', data=df)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2018-10-06
    • 2013-02-13
    • 2020-10-12
    • 2021-12-25
    • 2020-10-11
    相关资源
    最近更新 更多