Nedenstående programm læser en excelfil som SKAL være formateret som vist her nedenunder. Det er ligegylidigt hvad der står i "overskiften" (1. række). Men teksten i python filen skal være eksakt det samme som står i excelfilen. Biblioteket som gør det ekstremt nemt til at snakke med excel-filer hedder PANDAS og det er den jeg vælger at bruger her.
Her er et screenshot af den excel fil som python programmet arbejder med.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('reg-excel-1.xlsx')
xarr = df["x"].to_numpy()
yarr = df["y"].to_numpy()
print(yarr)
plt.plot(xarr,yarr)
Ovenstående lille program læser reg-excel-1.xlsx filen som ligger i SAMME mappe som selve programfilen.
Filen hedder datafil df og er opbygget som en tabel. Prøv at skrive print(yarr)
for at se hvordan filen ser ud efter du har læst den ind i python.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_excel('reg-excel-1.xlsx')
xarr = df["plot x I i A"].to_numpy().reshape(-1,1)
#"plot x I i A" er overskriften for x-værdier i excel filen
#.reshape(-1,1) laver x-værdier om til en lodret liste
yarr = df["plot y U i V"].to_numpy()
#"plot y U i V" er overskriften for y-værdierne fra excelfilen
from sklearn.linear_model import LinearRegression
model = LinearRegression() #definerer "model" til at være LinearRegression
model.fit(xarr, yarr) # beregner a, b og r^2 værdierne
r2 = model.score(xarr, yarr).round(4) #r i anden værdien
a=float(model.coef_.round(3)) #hældningsværdi fra LineaerRegression
b=model.intercept_.round(4) #skæringsværdi fra LinearRegression
x=np.linspace(0,0.2,100) #beregner x-værdier til regressionslinjen
y=a*x+b # beregner y-værdier til regressionslinjen
#Plotfunktioner til at fremstille grafen
minlegende=("y = {0} Ohm * x + {1} V".format(a,b))
plt.scatter(xarr,yarr,label=minlegende) #scatter tegner x,y-punkter
plt.plot(x,y,'r--') #plot tegner regressionslinjen
plt.xlabel('I i A')
plt.ylabel('U i V')
plt.title("Strøm spændings karakteristik")
plt.legend(loc='upper left')
plt.show()
#Printer værdierne til konsollen
print('r-i-anden:', r2,)
print('b-værdi:', b)
print('hældning:', a)
find ud af hvilken mappe du har gemt til python fil i
opret en excelfil i SAMME mappe som ligner mit screenshot her oppe til venstre. Min excel fil hedder reg-excel-1.xlsx. Du kan se linjen i teksten til venstre hvor jeg kalder filen
df = pd.read_excel('reg-excel-1.xlsx')
Klip koden til venstre ud og sæt den direkte ind i spyder og tryk på kør så skulle den fremstille en graf
plt.scatter(xarr,yarr,label=minlegende)
plt.plot(x,y,'r--')
scatter plotter punkterne plot laver regressionslinjen. Læg mærke til at x og y skal genereres separat.
x=np.linspace(0,0.2,100)
y=a*x+b
Plotfunktionerne er beskrevet her og der er MANGE muligheder. Læg mærke til at jeg genererer en legende
minlegende=("y = {0} Ohm * x + {1} V".format(a,b))
Til sidst printes der de tre interessante værdier
print('r-i-anden:', r2,)
print('b-værdi:', b)
print('hældning:', a)