Adakah yang tahu cara menghitung kemiringan tiga kolom (sumbu y) yang diberikan sumbu x tetap untuk setiap baris? Misalnya, ini adalah kerangka data saya:

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

Yang saya butuhkan adalah membuat kolom keempat 'd' dengan kemiringan 1, 3, dan 7, dengan mempertimbangkan sumbu x menjadi, misalnya, 1, 2, dan 3. Ini 1, 2, 3 sumbu x, harus dipertimbangkan untuk setiap baris data.

0
Elias Urra 27 Mei 2021, 19:07

1 menjawab

Jawaban Terbaik

Coba ini, Anda dapat menggunakan np.polyfit() untuk menemukan kemiringan ( dengan mendefinisikan derajat polinomial ke 1) dan kemudian menghitung d dan memasukkannya ke dalam kamus Anda dan akhirnya mengubahnya menjadi 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'])

Variabel [1,2,3] dalam fungsi compute_slope sulit dikodekan karena Anda menyebutkan bahwa Anda ingin memiliki nilai x seperti itu.

Keluaran:

   a  b  c    d
0  1  3  7  3.0
1  2  4  8  3.0
2  3  5  9  3.0
1
aminrd 27 Mei 2021, 17:01