我可以获取数据框三列的斜率并使用 python 中的值创建一个新列吗?

Posted

技术标签:

【中文标题】我可以获取数据框三列的斜率并使用 python 中的值创建一个新列吗?【英文标题】:Can I get slope of three columns of a dataframe and create a new column with the values in python? 【发布时间】:2021-08-15 22:34:40 【问题描述】:

在给定每行固定的 x 轴的情况下,有谁知道如何计算三列(y 轴)的斜率? 例如,这是我的数据框:

data = 'a':  [1, 2, 3],
        'b': [3, 4, 5],
        'c': [7, 8, 9]
df = pd.DataFrame(data, columns=['a', 'b', 'c'])

我需要创建第四列“d”,其斜率为 1、3 和 7,考虑到 x 轴为例如 1、2 和 3。这 1、2、3 x -axis,应该考虑每一行数据。

【问题讨论】:

斜率定义是两个点(x1, y1)(x2, y2)。例如,您是指通过(1, 1), (2, 3), (3, 7) 的衬线的斜率吗? 实际上我需要一个由三个点 (1,3,7) 和 (1,2,3) 的简单线性回归定义的斜率; (2,4,5) 和 (1,2,3); (3,5,9) 和 (1,2,3) 例如简单的线性回归 (x1, x2, x3) = (1,2,3) and (y1, y2, y3) = (1, 3, 7) 【参考方案1】:

试试这个,你可以用np.polyfit()求斜率(通过将多项式的次数定义为1)然后计算d并把它放入你的字典中,最后将其转换为pandas DataFrame

import numpy as np
import pandas as pd

def compute_slope(arr):
    return round(np.polyfit([1, 2, 3], arr, 1)[0], 2)

data = 'a':  [1, 2, 3],
        'b': [3, 4, 5],
        'c': [7, 8, 9]

data['d'] = [compute_slope(list(arr)) for arr in zip(data['a'], data['b'], data['c'])]
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])

compute_slope 函数中的变量 [1,2,3] 是硬编码的,因为您提到您希望有这样的 x 值。

输出:

   a  b  c    d
0  1  3  7  3.0
1  2  4  8  3.0
2  3  5  9  3.0

【讨论】:

以上是关于我可以获取数据框三列的斜率并使用 python 中的值创建一个新列吗?的主要内容,如果未能解决你的问题,请参考以下文章

解析文本文件的不同行的有效方法

在 Pandas 数据框中查找每三列的平均值

在一个表中添加两列的值并插入第三列

【小工具】python 携手R 计算两组数据相关性

查找两列的最大值并在第三列中填充值

在SQL中,如何将两列的数据相乘以获得第三列