Noch eine kleine Frage:
Ich möchte mit den fehlerbehafteten Werten rechnen, hier nur
beispielhaft eine Summe bilden, und das Ergebnis dann, inkl
Fehlerbalken, plotten.
Wenn ich die df's plotte funktioniert es auch,
das Ergebnis der Berechnung geht aber nicht.
Hier mal mein Beispiel:
1 | ## geht nicht..., geht doch :-)
|
2 |
|
3 | import uncertainties
|
4 | from uncertainties import ufloat
|
5 | import pandas as pd
|
6 | import matplotlib.pyplot as plt
|
7 |
|
8 | ## Funktionen
|
9 |
|
10 | def extract_errors(value):
|
11 | error = value.error_components()[value]
|
12 | return error
|
13 |
|
14 | ## Daten
|
15 |
|
16 | Messwert_Fehler_relativ = 0.01
|
17 | Messwert_Fehler_absolut = 1
|
18 |
|
19 | d = {'Messwert': [11, 10,12,10,13,12]}
|
20 | df = pd.DataFrame(data=d)
|
21 |
|
22 |
|
23 | ## Berechnungen
|
24 |
|
25 | df['Messwert_Fehler_gesamt'] = Messwert_Fehler_absolut + Messwert_Fehler_relativ * df['Messwert']
|
26 |
|
27 | ufloat_Messwert = df['Messwert']
|
28 | ufloat_Messwert_Fehler_gesamt = df['Messwert_Fehler_gesamt']
|
29 |
|
30 | df['Messwert_ufloat'] = df.apply(lambda x: ufloat(x['Messwert'], x['Messwert_Fehler_gesamt']), axis=1)
|
31 |
|
32 | Summe = df['Messwert_ufloat'].sum()
|
33 |
|
34 | Summe_Fehler = Summe.apply(extract_errors)
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | Summe.plot(kind='bar', yerr=Summe_Fehler.values.T, alpha = 0.5,error_kw=dict(ecolor='k'))
|
40 | plt.show()
|
41 |
|
42 | Summe
|
Der Fehler:
------------------------------------------------------------------------
---
AttributeError Traceback (most recent call
last)
<ipython-input-111-c3980e79ad11> in <module>
32 Summe = df['Messwert_ufloat'].sum()
33
---> 34 Summe_Fehler = Summe.apply(extract_errors)
35
36
AttributeError: 'AffineScalarFunc' object has no attribute 'apply'
Mache ich nen Denkfehler?