Eksterne pakker
Eksempler på eksterne pakker
Enkel installasjon (fungerer av og til)
Installasjon av eksterne moduler trenger man bare gjøre én gang for hver python-installasjon. Under finner du en kodesnutt du kan forsøke å kjøre som prøver å installere noen moduler.
import sys
libs = ['matplotlib', 'numpy', 'pandas', 'requests']
cmd = f"{sys.executable} -m pip install --user {' '.join(libs)}"
ans = input(f"\n\nType 'yes' to try direct install of {libs}: ")
if ans == "yes":
from subprocess import run
run(cmd.split())
else:
print("copy this line into the terminal:\n")
print(cmd)
print()
Installasjon med pip
For å installere eksterne pakker og moduler, bruker vi et program som heter pip. Dette er et program som ble installert sammen med python. Dersom du har flere versjoner av python installert på din datamaskin (for eksempel fordi en gammel versjon av python var installert fra før), har du også flere versjoner av pip installert på maskinen din. Når du installerer programmer med pip er det viktig at du bruker den versjonen av pip som matcher den versjonen av python du bruker.
For å installere noe med pip, bruker vi Terminalen og skriver kommandoen:
<python-sti> -m pip install <pakkenavn>
(det er også mulig å skrive <pip-sti> install <pakkenavn>
, men den metoden dekker vi ikke her). Et par punkter å passe på:
<pakkenavn>
skal erstattes med navnet på pakken som skal installeres.<python-sti>
skal erstattes med en sti til den python-versjonen du skal installere pakken for. Dette kan være så enkelt som å skrivepython
,py
ellerpython3
, eller det kan være du må skrive ned fullstendig sti til den python-fortolkeren du bruker. For å sjekke hvilken sti dette er, kan du kopiere dette programmet inn i en Python-fil og kjøre filen:
import sys
print(f"{sys.executable}")
- Dersom filstien inneholder mellomrom, kan det være du må skrive den inn med hermetegn rundt.
- Med Windows PowerShell må ta med
&
helt i begynnelsen av kommandoen, altså& <python-sti> -m pip install <pakkenavn>
. - I noen tilfeller kan det kreves administrator-rettigheter for å installere. På Mac/Linux kan man da legge til
sudo
helt i begynnelsen av kommandoen og så skrive inn passordet for datamaskinen. På Windows kan PowerShell åpnes som administrator ved å høyreklikke på PowerShell i startmenyen og velge «kjør som administrator».
Requests: last ned ting fra internett
https://requests.readthedocs.io/
Requests-pakken kan benyttes dersom man ønsker å laste ned informasjon fra internett (via http/https) som skal brukes i et python-program.
import requests
# Pakke for å laste ned data fra internett
url = "https://tinyurl.com/foo-txt" # Nettsiden som skal lastes ned
headers = {
# Noen nettsider krever at 'User-Agent' har fått en verdi
# for at man skal få respons.
'User-Agent': 'inf100.ii.uib.no abc123', # Noe som forteller hvem du er
}
webpage = requests.get(url, headers=headers)
print(webpage.content) # Innholdet på nettsiden før dekoding: 'byte-streng'
webpage_content = webpage.content.decode('utf-8')
print(webpage_content) # Etter dekoding: en vanlig streng
Matplotlib: visualisering av data
Matplotlib er et stort bibliotek med utallige muligheter for å visualisere data på ulike måter. Under viser vi bare et helt enkelt eksempel; se igjennom dokumentasjonen på matplotlib sin hjemmeside for å lære om flere muligheter.
Enkle plot
from matplotlib import pyplot as plt
x_values = [0, 1, 2, 3, 4, 5]
y_values = [10, 9, 4, 1, 5, 8]
plt.plot(x_values, y_values)
plt.show()
from matplotlib import pyplot as plt
x_values_a = [0, 1, 2, 3, 4, 5]
y_values_a = [10, 9, 4, 1, 5, 8]
plt.plot(
x_values_a, y_values_a,
color='red',
marker='o',
linestyle='dashed',
linewidth=2,
markersize=12,
label='A',
)
x_values_b = [0, 1, 2, 3, 4, 5]
y_values_b = [4, 5, 6, 5.5, 5, 6]
plt.plot(
x_values_b, y_values_b,
color='blue',
marker='x',
linestyle='dotted',
linewidth=10,
markersize=12,
alpha=0.5,
label='B',
)
plt.xlabel(
'Time',
fontsize='large',
fontweight='bold',
fontname='Comic Sans MS',
color='green',
)
plt.ylabel('Value')
plt.title('Comparison of A and B')
plt.legend(
title='Legend of Zelda',
loc='upper right',
fontsize='small',
)
plt.show()
from matplotlib import pyplot as plt
from math import sin, cos
# Eksempeldata som skal visualiseres
# liste med x-verdier
xs = [n / 10 for n in range(101)]
# 2 ulike lister med y-verdier
ys_1 = [sin(x) for x in xs]
ys_2 = [3 * cos(x) for x in xs]
# Opprette et plot
plt.plot(xs, ys_1, "r")
plt.plot(xs, ys_2, "b")
# savefig lagrer filene
plt.savefig("my_plot.svg") # SVG vektorgrafikk (bra format for figurer!)
plt.savefig("my_plot.pdf") # PDF
plt.savefig("my_plot.png") # PNG er egentlig bedre egnet for foto enn for
# figurer, men har høy kryss-kompatibilitet
# interaktivt vindu
plt.show()
Scatterplot
from matplotlib import pyplot as plt
x_values = [0, 1, 2, 3, 4, 5]
y_values = [10, 9, 4, 1, 5, 8]
plt.scatter(x_values, y_values)
plt.show()
Kombinerte scatterplott og linjediagram, med farge og størrelse og diverse andre innstillinger:
from matplotlib import pyplot as plt
x_values_a = [0, 1, 2, 3, 4, 5]
y_values_a = [10, 9, 4, 1, 5, 8]
sizes_a = [50, 2000, 3000, 4000, 5000, 50000]
colors_a = ['red', 'blue', 'green', 'yellow', 'purple', 'orange']
alpha_a = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
plt.scatter(
x_values_a, y_values_a,
s=sizes_a,
c=colors_a,
alpha=alpha_a,
)
x_values_b = [0, 1, 2, 3, 4, 5]
y_values_b = [4, 5, 6, 5.5, 5, 6]
plt.plot(
x_values_b, y_values_b,
color='blue',
marker='o', # ligner også på et scatterplot
linestyle='none', # ligner også på et scatterplotx
markersize=10,
)
plt.show()
Andre vanlige pakker
Numpy
Numpy er sammen med matplotlib et av de mest bruke eksterne bibliotekene til databehandling. En av grunnene til numpy sin store popluaritet, er at den kan behandle store datamengder svært raskt. Dette gjøres i bunn og grunn ved å omgå noen av Python sine mekanismer for å beskytte utviklere mot seg selv; men samtidig er numpy designet for å gjøre det enkelt å bedrive lineær algebra, hvor datatypene ofte er vektorer og matriser.
Pandas
Pandas er et slags avansert «excel» for Python, som bygger på numpy og som er integrert med matplotlib. Med dette biblioteket kan man håndtere regneark og andre former for databaser (alt fra csv til json, sql, xlm osv), og utføre en rekke analyser av dissen dataene.