gpt4 book ai didi

python - 如何根据两列之间直线的斜率过滤数据框

转载 作者:行者123 更新时间:2023-12-04 17:12:45 25 4
gpt4 key购买 nike

我有一些数据要过滤,但不知道如何过滤。

我通过 pandas、matplotlib 和 seaborn 根据我的数据创建了以下图表。

enter image description here

来自以下代码

ax = sns.scatterplot("inverse_docking_score","MW",hue="QPlogPoct",data=df1)

sns.lineplot(data=slope_data, x="X", y="Y")

'slope_data'就是你看到的两个点(10.5, 300)到(12.0, 450)

我想从 df1 制作一个数据框,其中所有数据都低于这条线的斜率。但我不知道该怎么做,或者对我的问题有什么好的搜索词。我发现了很多非常复杂的例子,这些例子很难理解。我觉得这可能是一种非常常见的情况,但我想不出一个非常简单的解决方案。

最佳答案

这是简单的数学。计算线的参数(斜率和截距)并检查点是在上方还是下方:

# dummy data
df = pd.DataFrame({'MW': np.random.random(size=100)*250+300,
'score': np.random.random(size=100)*3+10
})

ax = sns.scatterplot(data=df, x='score', y='MW')
x1, y1 = 10,300
x2, y2 = 12,450
ax.plot((x1, x2), (y1, y2))

slope = (y2-y1)/(x2-x1)
intercept = y1-slope*x1

df2 = df[df['MW'] < df['score']*slope+intercept]
sns.scatterplot(data=df2, x='score', y='MW', marker='^', ax=ax)

points below line

关于python - 如何根据两列之间直线的斜率过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69177391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com