Passe eine Kurve an die Grenze eines Streudiagramms an

Ich versuche, eine Kurve an die Grenze eines Streudiagramms anzupassen.Dieses Bild als Referenz ansehen.

Ich habe bereits mit dem folgenden (vereinfachten) Code eine Übereinstimmung erreicht. Es schneidet den Datenrahmen in kleine vertikale Streifen und ermittelt dann den Mindestwert in diesen Streifen mit der Breitewidth, ignoriertnans. (Die Funktion nimmt monoton ab.)

def func(val):
    """ returns some function of 'val'"""
    return val * 2

for i in range(0, max_val, width)):
    _df = df[(df.val > i) & (df.val < i + width)] # vertical slice
    if np.isnan(np.min(func(_df.val)):            # ignore nans
        continue
    xs.append(i + width)                         
    ys.append(np.min(func(_df.val)))

Ich mache dann die Passform mitscipy.optimize.curve_fit. Meine Frage ist: Gibt es eine natürlichere oder pythonischere Möglichkeit, dies zu tun - und kann ich die Genauigkeit auf irgendeine Weise verbessern? (Zum Beispiel durch eine höhere Gewichtung von Bereichen des Streudiagramms mit einer höheren Punktedichte?)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage