|
|
- {
- "nbformat": 4,
- "nbformat_minor": 0,
- "metadata": {
- "colab": {
- "provenance": [],
- "collapsed_sections": [
- "jdpl1tq-mPY0",
- "pmrzmPx4MnjE"
- ],
- "authorship_tag": "ABX9TyPX9T9/Zh9SYGGSPmx/O9lZ",
- "include_colab_link": true
- },
- "kernelspec": {
- "name": "python3",
- "display_name": "Python 3"
- },
- "language_info": {
- "name": "python"
- }
- },
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "view-in-github",
- "colab_type": "text"
- },
- "source": [
- "<a href=\"https://colab.research.google.com/github/KarinKnopper/eShopOnContainers/blob/dev/Eksamensprojekt_4__semester.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "# **Eksamensgrundlag 4. semester datamatiker**"
- ],
- "metadata": {
- "id": "JujLEKviOCo_"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "Et projekt af Karin Knopper\n",
- "\n",
- "\n",
- "## Fagelementer og omfang\n",
- "\n",
- "* AI (5 ECTS)\n",
- "\n",
- "* Toning\n",
- " * Power BI (20 ECTS)\n",
- " * Python (5 ECTS)\n",
- "\n"
- ],
- "metadata": {
- "id": "axxiNf2iTQwV"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "# **Beskrivelse af projektet**\n",
- "* Hvordan kan Jupyter Notebook hjælpe med dataanalyseringsprocessen.\n",
- "* Hvordan kan Power BI bruges til at vaske og visualisere data.\n",
- "* Hvordan kan man bruge python til dataanalyse i Power BI og Jupyter Notebook."
- ],
- "metadata": {
- "id": "5laDvlQQONc7"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Jupyter Notebook som arbejdsredskab\n",
- "\n",
- "Jupyter Notebook er en interaktiv notesbog, der kan bruges til at skrive og køre kode, skabe visualiseringer og lave rapporter. Koden kan testes direkte i dokumentet uden, at det skal overføres til visual studio eller lignende. Det er et populært værktøj blandt videnskabsfolk og dataanalytikere, der ofte har behov for at eksperimentere med og teste kode.\n",
- "\n",
- "Det er også muligt at integrere Jupyter Notebook og Power BI og tilsammen udgør det en stærk duo. F eks er datavask af store mængder data nemt at gøre med python i Jupyter Notebook og så kan man bruge Power BI til at skabe visualiseringer bygget på de vaskede data.\n",
- "\n",
- "Indenfor maskinlæring kan man bruge Jupyter Notebook til at træne og teste modellen og så bruge Power BI til at skabe visualiseringer, der viser modellens forudsigelser.\n",
- "\n",
- "\n",
- "Som standard er der meget få muligheder for at ændre layout, men man kan bruge html til at få det gjort lidt mere præsentabelt\n",
- "\n",
- "<br>\n",
- "<br>\n",
- "Man kan f eks centrere tekst, ændre farve og størrelse: (men bruger man 'br' til linjeskift, sker der noget med skriften)\n",
- "<br>\n",
- "<br>\n",
- "<font color='red', size=\"5\">\n",
- "<center>Således</center>\n",
- "</font>\n",
- "\n",
- "\n",
- "Istedet for at skrive side op og side ned om Jupyter Notebook har jeg valgt at bruge den til min rapport som demonstration af mulighederne."
- ],
- "metadata": {
- "id": "1l9kJ5WPWLYx"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Power BI\n",
- "Trods mulighederne for at bruge python til at hente og vaske data, har jeg brugt Power BI til dette projekt.\n",
- "\n",
- "<br>\n",
- "\n",
- "### Indsamling af data\n",
- "\n",
- "Til mit projekt gik jeg ind i DMI's vejrarkiv og fandt vejrdata for den sidste uge. Jeg kunne kun få timebaserede oplysninger med, hvis jeg hentede en fil pr døgn, så jeg hentede 7 cvs filer med timedata for solskinstimer og 7 csv filer for vinddata. Dernæst fandt jeg priser på strøm på andelenergi.dk, hvor jeg kunne finde timepriser for de foregående tre dage og estimerede priser for de kommende tre dage og downloade det som en csv fil. Derudover har jeg også brugt excel filer fra GEV med oplysninger om kunder, adresser og installationer.\n",
- "Så åbnede jeg Power BI og importerede de 19 filer med de data, jeg skulle bruge. \n",
- "\n",
- "<br>\n",
- "\n",
- "### Vask af data\n",
- "Det første, vigtigste og mest tidskrævende, der skulle ske med dataene var, at de skulle gøres brugbare, dvs vaskes. Så jeg gik ind i \"Transform data\". Der startede jeg med at sammenlægge de 7 filer med solskinstimer til en tabel og det samme med vinddata. Så tjekkede jeg, at datatyperne var korrekte og at alt så pænt ud.\n",
- "Filen med elpriserne krævede mere arbejde. Her var datoformatet helt forkert, så den ville ikke acceptere typen som DateTime. Jeg brugte \"replace values\" til at erstatte bindestreg med mellemrum og punktum med bindestreg (rækkefølgen var ret vigtig!). Så kunne jeg ændre typen til DateTime og typen i de tre kolonner med priser kunne jeg ændre til \"fixed decimal number\" der automatisk bliver til valuta.\n",
- "\n",
- "I de fire filer fra GEV kunne jeg se, at der i den ene tabel var 122 kolonner og mange null værdier. Jeg startede med at fjerne alle unødvendige kolonner ved at markere dem, jeg skulle bruge og vælge \"remove other columns\". Så omdøbte jeg nogle af kolonnerne for at gøre det mere forklarende (bogstavsal til bogstav), tjekkede at værdierne var rigtige, gik ind i \"View\" og så på column quality for at finde fejl og tomme værdier og tage stilling til dem, så fjernede jeg duplicates og arrangerede kolonnerne i en logisk rækkefølge. Jeg brugte også clean og trim og erstattede forskellige values, f eks \"Beboeren\" med \"beboeren\". Det gjorde jeg i alle 4 tabeller.\n",
- "\n",
- "Man kan også bruge \"Data view\" til at vaske data, f eks sætte punktummer i store tal så 1302980 bliver til 1.302.980,00 eller ændre format, datatype, foretage summering og vælge kategori f eks \"Adresse\", så man kan bruge kortfunktionen.\n",
- "\n",
- "Det er en god idé at være grundig i denne datavask, da det siges at det koster 10 dollars at finde en fejl, 100 dollars at rette den, men $1.000 at ignorere den...\n",
- "\n",
- "\n",
- "<br>\n",
- "\n",
- "### Visualisering\n",
- "Nu var tabellerne gjort brugbare og så skulle jeg have styr på relationerne. Vind, sol og priser var ligetil, da det var DateTime, der forbandt dem alle. Det var straks mere interessant med de fire GEV tabeller, da de både skulle forbindes på installationsnumre, kundenumre, firmanumre og målernumre.\n",
- "<br>\n",
- "Nu skulle jeg så tage stilling til, hvad jeg ville fortælle. Jeg kunne f eks se om antal solskinstimer og vindstyrke havde nogen indflydelse på elprisen. Eller jeg kunne se, hvor mange kunder, der har mere end en installation og om det er solceller eller ej. \n",
- "\n",
- "<br>\n",
- "\n",
- "### Hvad kan jeg bruge det til?\n",
- "Her kommer AI så ind i billedet, for når man har en masse historiske data på elpriser og vejrforhold kan man træne disse data til at forudsige elpriser ved hjælp af vejrudsigterne. Så kan man f eks vælge at sende elvarme ud i fjernvarmeanlæggene når prisen er lav istedet for at bruge træpiller, gas eller hvad man ellers bruger. Hvis kunderne har adgang til disse visualiseringer kan de se, hvornår det er godt at starte vaskemaskinen eller støvsugeren, især hvis man har solceller på taget.\n",
- "\n",
- "Noget af det er der allerede tænkt på, men jeg tror, at man kun lige har kradset i overfladen mht mulighederne.\n"
- ],
- "metadata": {
- "id": "XijPHAgTMzS0"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Python\n",
- "\n",
- "Som beskrevet tidligere går python og dataanalyse hånd i hånd. Meget af det man kan lave i Power BI ved hjælp af drag'n'drop, kan man også lave med pythonkode. Det kræver, at man importerer nogle biblioteker og værktøjer, hvilket er meget nemt når man bruger Jupyter Notebook. Nedenunder har jeg forsøgt at hente tre csv filer og lave den samme visualisering som i Power BI, men der er lige nogle ting, der skal arbejdes på...\n",
- "\n",
- "Jeg havde problemer med den ene csv fil da jeg hverken kunne bruge komma eller kolon til at separere, så jeg brugte tabulator, men den bliver læst forkert ind, så jeg har kun en kolonne med et meget langt navn og sære værdier."
- ],
- "metadata": {
- "id": "jdpl1tq-mPY0"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "Først skal jeg kunne hente filerne. Det kan gøres på flere måder og efter sigende er det nemmest at gøre via gitHub, men jeg valgte denne metode med at bruge google drive...\n",
- "Jeg starter med at importere pandas, så jeg kan opbygge en dataframe. Der er et standard alias -pd, og en indbygget funktion til at læse filerne -pd.read_csv og det gemmer jeg i en DataFrame variabel."
- ],
- "metadata": {
- "id": "fI7GRQgRf93a"
- }
- },
- {
- "cell_type": "code",
- "source": [
- "import pandas as pd\n",
- "from google.colab import drive\n",
- "\n",
- "drive.mount('/content/drive')"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CICRLmziBu_Q",
- "outputId": "24179be0-70ce-4704-f3c0-de08f6bf6df2"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Mounted at /content/drive\n"
- ]
- }
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "Så printer jeg tabellerne, så jeg kan se kolonnenavnene. "
- ],
- "metadata": {
- "id": "Yz0sz6fcnFOk"
- }
- },
- {
- "cell_type": "code",
- "source": [
- "sol = pd.read_csv('/content/drive/MyDrive/Eksamen_4_semester/Solskinstimer.csv')\n",
- "\n",
- "print(sol)"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "L-eFbtl_udxg",
- "outputId": "ebd48348-1d06-4936-86bc-1a1fa8024709"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- " DateTime Sum of Solskin\n",
- "0 2023-05-13 00:00:00 0.0\n",
- "1 2023-05-13 01:00:00 0.0\n",
- "2 2023-05-13 02:00:00 0.0\n",
- "3 2023-05-13 03:00:00 0.0\n",
- "4 2023-05-13 04:00:00 0.0\n",
- ".. ... ...\n",
- "163 2023-05-19 19:00:00 48.4\n",
- "164 2023-05-19 20:00:00 36.4\n",
- "165 2023-05-19 21:00:00 20.9\n",
- "166 2023-05-19 22:00:00 0.5\n",
- "167 2023-05-19 23:00:00 0.0\n",
- "\n",
- "[168 rows x 2 columns]\n"
- ]
- }
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "Jeg kan også nøjes med at printe de fem første linjer."
- ],
- "metadata": {
- "id": "lzcOXyr4nVW7"
- }
- },
- {
- "cell_type": "code",
- "source": [
- "vind = pd.read_csv('/content/drive/MyDrive/Eksamen_4_semester/Vinddata.csv')\n",
- "vind.head()"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "5mGKxkKjFDP3",
- "outputId": "f0721a07-bc25-4b3b-b4b2-3e4075889eaf"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " DateTime Sum of Højeste 10 min. middel \\\n",
- "0 2023-05-13 00:00:00 2.2 \n",
- "1 2023-05-13 01:00:00 2.3 \n",
- "2 2023-05-13 02:00:00 1.9 \n",
- "3 2023-05-13 03:00:00 2.1 \n",
- "4 2023-05-13 04:00:00 2.3 \n",
- "\n",
- " Sum of Højeste vindstød Sum of Middel vindhastighed \n",
- "0 2.6 1.2 \n",
- "1 2.6 1.6 \n",
- "2 2.4 1.3 \n",
- "3 2.1 1.2 \n",
- "4 2.9 1.4 "
- ],
- "text/html": [
- "\n",
- " <div id=\"df-bfa85f26-077c-4b3c-8b85-480ea23d3b51\">\n",
- " <div class=\"colab-df-container\">\n",
- " <div>\n",
- "<style scoped>\n",
- " .dataframe tbody tr th:only-of-type {\n",
- " vertical-align: middle;\n",
- " }\n",
- "\n",
- " .dataframe tbody tr th {\n",
- " vertical-align: top;\n",
- " }\n",
- "\n",
- " .dataframe thead th {\n",
- " text-align: right;\n",
- " }\n",
- "</style>\n",
- "<table border=\"1\" class=\"dataframe\">\n",
- " <thead>\n",
- " <tr style=\"text-align: right;\">\n",
- " <th></th>\n",
- " <th>DateTime</th>\n",
- " <th>Sum of Højeste 10 min. middel</th>\n",
- " <th>Sum of Højeste vindstød</th>\n",
- " <th>Sum of Middel vindhastighed</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>0</th>\n",
- " <td>2023-05-13 00:00:00</td>\n",
- " <td>2.2</td>\n",
- " <td>2.6</td>\n",
- " <td>1.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>1</th>\n",
- " <td>2023-05-13 01:00:00</td>\n",
- " <td>2.3</td>\n",
- " <td>2.6</td>\n",
- " <td>1.6</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2</th>\n",
- " <td>2023-05-13 02:00:00</td>\n",
- " <td>1.9</td>\n",
- " <td>2.4</td>\n",
- " <td>1.3</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>3</th>\n",
- " <td>2023-05-13 03:00:00</td>\n",
- " <td>2.1</td>\n",
- " <td>2.1</td>\n",
- " <td>1.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>4</th>\n",
- " <td>2023-05-13 04:00:00</td>\n",
- " <td>2.3</td>\n",
- " <td>2.9</td>\n",
- " <td>1.4</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-bfa85f26-077c-4b3c-8b85-480ea23d3b51')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-bfa85f26-077c-4b3c-8b85-480ea23d3b51 button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-bfa85f26-077c-4b3c-8b85-480ea23d3b51');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 22
- }
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "Her er så den problematiske fil."
- ],
- "metadata": {
- "id": "u7twuqtcnv4a"
- }
- },
- {
- "cell_type": "code",
- "source": [
- "priser = pd.read_csv('/content/drive/MyDrive/Eksamen_4_semester/Elpriser.csv')\n",
- "print(priser)"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "hjSdaZ6wFShx",
- "outputId": "36604f08-9940-4058-e04f-dc2331733be2"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- " Dato\\tElpris\\tTransport og afgifter\\tTotal\n",
- "2023-05-21 23:00:00\\t0 77\\t0 43\\t1 2.0\n",
- "2023-05-21 22:00:00\\t0 87\\t0 43\\t1 3.0\n",
- "2023-05-21 21:00:00\\t0 88\\t0 43\\t1 31.0\n",
- "2023-05-21 20:00:00\\t0 9\\t0 89\\t1 79.0\n",
- "2023-05-21 19:00:00\\t0 85\\t0 89\\t1 74.0\n",
- "... ...\n",
- "2023-05-13 04:00:00\\t0 65\\t0 34\\t0 99.0\n",
- "2023-05-13 03:00:00\\t0 63\\t0 34\\t0 97.0\n",
- "2023-05-13 02:00:00\\t0 69\\t0 34\\t1 3.0\n",
- "2023-05-13 01:00:00\\t0 71\\t0 34\\t1 5.0\n",
- "2023-05-13 00:00:00\\t0 75\\t0 34\\t1 9.0\n",
- "\n",
- "[216 rows x 1 columns]\n"
- ]
- }
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "For at kunne skabe visualiseringer skal jeg bruge matplotlib, men da jeg kun skal bruge pyplot nøjes jeg med at importere det og giver det et alias. Mange af disse biblioteker har et standard alias.\n",
- "Her kan jeg så lave forskellige visualiseringer som bar chart, line chart, scatterplot og histogrammer.\n",
- "Man kan navngive akserne, lave overskrift, ændre farve, skrifttype og størrelse og en ufattelig masse andre sjove ting."
- ],
- "metadata": {
- "id": "9vRklXgOhFFr"
- }
- },
- {
- "cell_type": "code",
- "source": [
- "from matplotlib import pyplot as plt\n",
- "\n",
- "\n",
- "plt.plot(sol.DateTime, sol['Sum of Solskin'], label=\"Solskinstimer\", color='red')\n",
- "#plt.plot(vind['Sum of Middel vindhastighed'], label=\"Vind\", color='green')\n",
- "plt.bar(vind.DateTime, vind['Sum of Middel vindhastighed'], label=\"Vind\")\n",
- "#plt.bar(priser., priser.Total, label=\"Elpriser\")\n",
- "#plt.bar(priser['Dato\\tElpris\\tTransport og afgifter\\tTotal'])\n",
- "#plt.plot(vind.DateTime, vind['Sum of Middel vindhastighed'], label=\"Vind\", color='green', linestyle='--')\n",
- "#plt.xlabel(\"Dato\")\n",
- "#plt.ylabel(\"Pris\")\n",
- "plt.title(\"Prissammenligning\", fontsize=20, color=\"green\")\n",
- "plt.text(30, 55, \"Meget sol\")\n",
- "plt.text(68, 15, \"Meget vind\")\n",
- "plt.legend()\n",
- "plt.show()"
- ],
- "metadata": {
- "id": "NJuAmRr14IkU",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 460
- },
- "outputId": "d7efa68b-507a-4f9e-c8c0-4967f7508aa1"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- "<Figure size 640x480 with 1 Axes>"
- ],
- "image/png": "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
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "markdown",
- "source": [
- "# **Projektet**"
- ],
- "metadata": {
- "id": "pmrzmPx4MnjE"
- }
- },
- {
- "cell_type": "markdown",
- "source": [],
- "metadata": {
- "id": "gx0QUW0A9hkS"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "![Skærmbillede 2023-05-19 091241.png](data:image/png;base64,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
- ],
- "metadata": {
- "id": "CaZS0rnn6jH4"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "![image.png](data:image/png;base64,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
- ],
- "metadata": {
- "id": "7eln3hr63rVm"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- " ![image.png](data:image/png;base64,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
- ],
- "metadata": {
- "id": "2_vojIbBj2AQ"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "Kunstig intelligens er et meget vidt begreb, med mange grene og mange anvendelsesmuligheder, både i fortiden, nutiden og fremtiden. Et af de nyeste tiltag er ChatGPT, der allerede efter kun 6 måneder er det nye sort! Det er et fantastisk værktøj til ufattelig mange opgaver, men da det er baseret på ufattelig meget data, som er udsprunget fra mennesker, vil det kunne drejes i ønskede eller uønskede retninger.\n",
- "Og hvad gør man når ChatGPT pludselig begynder at lære udfra data, der er genereret af ChatGPT??? Hvordan kan man være sikker på at oplysningerne er korrekte? Vil der ikke altid være to sider af samme sag afhængigt af hvilket perspektiv man ser det fra? Selv bibelen har 2 versioner af jordens skabelse, set fra 2 forskellige synspunkter...\n",
- "GPT kan være godt og en hjælp, men det fjerner evnen til at samtale. Jeg kan få GPT til at skrive en halv side om AI på ca 50 sekunder, men jeg er jo nødt til at vide noget selv for at kunne svare på spørgsmål. Ellers gentager jeg jo bare gpt\n",
- "\n",
- "Jupyter notebook er et meget anvendeligt værktøj til dataanalyse og ka meget nemt integreres med Power BI da begge er bygget på python. Det er meget nemt at blande tekst og kode\n",
- "\n",
- "Eksempel på dårlig maskinoversættelse:\n",
- "https://hashdork.com/da/machine-learning-training-inference-explained/"
- ],
- "metadata": {
- "id": "Pid0XsMZOsgD"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "# Refleksion over semestret"
- ],
- "metadata": {
- "id": "Z9wzSIflDrBf"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "\n",
- "**Hvad har jeg lært, hvilke færdigheder har jeg tilegnet mig, hvad gik godt/ mindre godt, hvad kunne jeg have gjort anderledes.**\n",
- "\n",
- "\n",
- "Da fjerde semester startede 1. februar troede jeg, at jeg skulle være på skolen 3 dage om ugen og lære IT sikkerhed, kunstig intelligens og microservices, lave et projekt med clean architecture og C# og søge praktikplads ved bankdata eller lignende, men jeg blev klogere...\n",
- "Fra jeg blev gjort opmærksom på en fantastisk mulighed hos GEV i Grindsted, til kontakten var formidlet, 2 samtaler overstået og kontrakten underskrevet, gik der 14 dage og 1. marts startede jeg så hos GEV. Jeg har vist fortjent retten til at skrive omstillingsparat på mit CV!\n",
- "\n",
- "Microservices og C# blev sat på pause og en ny verden med kurs mod dataanalytiker blev åbnet med Power BI, python og real life data.\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "metadata": {
- "id": "WF3rgXIYNxcR"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Hvad har jeg lært?\n",
- "\n",
- "**Power BI** er et cloudbaseret Business Intelligence værktøj udviklet af microsoft, der hjælper en igennem hele dataanlyse processen ved at gøre en i stand til at hente og vaske data, lave interaktive visualiseringer og udgive/dele sine rapporter på en nem og effektiv måde. Det er integreret med andre microsoft redskaber som excel, SQL og Teams. Det har sit eget programmeringssprog, DAX, der bl a bruges til at lave beregnede kolonner, udregninger og målinger. DAX består af en række formler og funktioner, der kan hjælpe med at beregne værdier på tværs af tabeller.\n",
- "\n",
- "**Python** er det foretrukne sprog til dataanalyse og da Power BI er et dataanalyseværktøj er python naturligvis en integreret del af Power BI. Jeg har kun lige kradset lidt i overfladen mht python, men mulighederne er uendelige. Man kan f eks lave en visualisering ved hjælp af drag'n'drop i Power BI, men man kan også skrive pythonkode, der laver en visualisering med de ønskede data, overskrift, navngivne x- og y-akser og meget mere. Når det kommer til analyse og træning af data findes der gode værktøjer som pytorch, tensorflow, pandas, scikit og mange flere.\n",
- "\n",
- "**Artificial Intelligence** er et utroligt stort og komplekst emne og findes efterhånden i alt.\n",
- "\n",
- "**Machine learning** er en underafdeling af AI og bruges også i Power BI, hvor man kan se trends, bruge Q&A funktionen og lave analyser mm. For at begrænse mig lidt, har jeg valgt at fokusere på hvilke værktøjer, der findes til at få det hele til at samarbejde og her er Jupyter Notebook et virkelig godt eksempel.\n",
- "\n",
- "**Jupyter Notebook** er meget populært blandt dataanalytikere, da man kan blande tekst, kode og formler efter forgodtbefindende og det hele kommer ud i et nydeligt format. Man behøver ikke lange kommentarer i ens kode, da man bare indsætter en tekstblok og skriver det, man har brug for. Formler skrives med keyboard shortcuts og bliver omsat til pænt opstillede formler med de korrekte matematiske tegn og url adresser genkendes og laves automatisk til et link.\n",
- "Man kan installere programmet på sin computer og køre det via port 8888, men det absolut nemmeste er at køre det gennem google colab, som er et google Research projekt, hvor man logger ind med sin google-konto fra en hvilken som helst computer og så er det køreklart med adgang til alle pythons biblioteker.\n",
- "\n",
- "https://colab.research.google.com/notebooks/intro.ipynb \n",
- "\n",
- "\n",
- "**Mit fokus:**\n",
- "\n",
- "Jeg har koncentreret mig om Power BI og vask og visualisering af data. Hvad man kan bruge de data til må komme senere, hvor jeg vil se på, hvordan man træner datasæt og hvilke værktøjer, der bruges til det."
- ],
- "metadata": {
- "id": "qd9PKCgdYbLN"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Hvilke færdigheder har jeg tilegnet mig?\n",
- "\n",
- "\n",
- "Jeg har lært at\n",
- "* bruge Power BI desktop til at hente data fra flere forskellige kilder som excel, csv filer, databaser og nettet.\n",
- "* bruge power query til at vaske data med funktioner som trim, clean, format, extract, split, merge og mange andre.\n",
- "* kode i python på begynderniveau og jeg har fået øjnene op for potentialet i forhold til dataanalyse.\n",
- "* AI og Machine Learning er et enormt stort emne og hvad det kan bruges til, men ikke hvordan...\n",
- "* ChatGPT er det nye sort, men at man er nødt til at forholde sig kritisk til svarene og at det kan hjælpe en med opgaveløsning og -skrivning, men ikke erstatte viden.\n",
- "* bruge Jupyter Notebook og kombinere det med github.\n",
- "* Jeg er også blevet introduceret til den virkelige verden og har lært at se efter abnormaliteter i elforbrug, oprette nye installationer og registrere solceller."
- ],
- "metadata": {
- "id": "4PT2QLpZv38-"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Hvad gik godt/mindre godt?\n",
- "\n",
- "Jeg synes, at det meste er gået godt og som jeg forventede. Jeg er dog slem til at bevæge mig i mange forskellige retninger i starten og først til sidst få øjnene på målet."
- ],
- "metadata": {
- "id": "_HHKiM94_drj"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "## Hvad kunne jeg have gjort anderledes?\n",
- "\n",
- "\n",
- "Pensum var lidt overvældende, når alt er nyt, men jeg tænkte, at igennem skulle jeg jo, så jeg startede fra en ende af og damptromlede mig igennem de første ca 18 kurser, men hele tiden under tidspres, hvilket betød, at jeg kun gav opgaverne en minimal chance inden jeg trykkede på hint-knappen. Når et kursus var slut, gik jeg direkte videre til næste uden at reflektere over, hvad jeg havde lært eller forsøgt at lære. På et tidspunkt stoppede jeg heldigvis op og begyndte at tænke... Det resulterede i, at jeg erkendte at prøve at gå fra \"zero to hero in three months\" nok var en dårlig ide, så jeg valgte at fokusere på det grundlæggende og jeg genså en del af kurserne og fandt andre videoer og kurser om de mest basale ting i Power BI. Der er jo ingen grund til at lære at lave avancerede markedsanalyser og case studies, hvis jeg ikke kan finde ud af at hente data eller vaske dem først. Det var virkelig et kvantespring i min forståelse, at jeg gentog det og i et mere roligt tempo. Jeg skulle have brugt mere tid på grundbegreberne fra starten og jeg skal virkelig arbejde på min note-skrivning. Den er elendig...\n",
- "Også i mit daglige arbejde, havde det været en hjælp, hvis jeg havde været bedre til at tage noter.\n",
- "\n",
- "I AI/ML var jeg virkelig udfordret med min computer, der ikke ville lade mig installere de ting vi skulle bruge i klassen, så jeg brugte meget tid på at prøve at finde en løsning, inden jeg opgav og fandt på alternativer. Dem er der så en masse af, så jeg kunne have sparet en masse tid, hvis jeg havde vidst det fra starten.\n",
- "\n",
- "Især indenfor machine learning var der en masse nye begreber og når man googlede dem, var forklaringen fyldt med andre nye begreber, der også skulle googles og sådan kørte det i ring! Jeg skulle have erkendt lidt tidligere, at det at forsøge at lære det hele på et semester var lidt for ambitiøst og valgt at fokusere på hvilke muligheder, der er indenfor kunstig intelligens og hvilke værktøjer, der kan bruges.\n",
- "\n",
- "Alt i alt har det været et spændende og udfordrende semester, hvor jeg har fået afklaring på, hvilken vej jeg skal følge i fremtiden og det er vel ikke så skidt endda!"
- ],
- "metadata": {
- "id": "xnDxUPBrYnQC"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "# Pensumliste"
- ],
- "metadata": {
- "id": "DKfMQT41jKJB"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "\n",
- "\n",
- "https://app.datacamp.com/learn/career-tracks/data-analyst-in-power-bi?version=2\n",
- "\n",
- "https://app.datacamp.com/learn/skill-tracks/sql-fundamentals\n",
- "\n",
- "https://app.datacamp.com/learn/skill-tracks/power-bi-fundamentals\n",
- "\n",
- "https://app.datacamp.com/learn/skill-tracks/python-fundamentals\n",
- "\n",
- "\n",
- "\n",
- "**Datacamp python:**\n",
- "\n",
- "* Introduction to Python \n",
- "* Intermediate Python\n",
- "\n",
- "\n",
- "**Datacamp SQL:**\n",
- "\n",
- "* Introduction to SQL\n",
- "* Intermediate SQL\n",
- "* Joining Data in SQL\n",
- "\n",
- "\n",
- "**Datacamp DAX:**\n",
- "\n",
- "* Introduction to DAX in Power BI\n",
- "* DAX functions in Power BI\n",
- "* Intermediate DAX in Power BI\n",
- " \n",
- "\n",
- "**Datacamp Power BI:**\n",
- "\n",
- "* Understanding Data Science\n",
- "* Introduction to Power BI\n",
- "* Data visualization in Power BI\n",
- "* Case Study: Analyzing Customer Churn in Power BI\n",
- "* Data Preparation in Power BI\n",
- "* Data Transformation in Power BI\n",
- "* Data Modeling in Power BI\n",
- "* Intermediate Data Modeling in Power BI\n",
- "* Case Study: HR Analytics in Power BI\n",
- "* Case Study: Analyzing Job Market Data in Power BI\n",
- "\n",
- "\n",
- "**LinkedIn Learning**\n",
- "\n",
- "* Power BI Data Modeling with DAX\n",
- "* Learning Power BI Desktop\n",
- "\n",
- "\n",
- "**AI/ML**\n",
- "\n",
- "* Pensum fra itslearning\n",
- "* Artikler fra JP i april\n",
- "* ChatGPT\n",
- "* Prosas \"Talk-on-ChatGPT\"\n",
- "\n",
- "\n",
- "**Diverse**\n",
- "\n",
- "* Power BI's egne tutorials\n",
- "* Jupyter notebook https://www.datacamp.com/tutorial/tutorial-jupyter-notebook\n",
- "* Colab's egen dokumentation og tutorials \n",
- "https://colab.research.google.com/\n"
- ],
- "metadata": {
- "id": "D5kkIdDONNI_"
- }
- }
- ]
- }
|