{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Intro 2: Statistik i Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I denna notebook ska vi se på hur man importerar statistik till Python och presenterar den visuellt som en tabell, graf eller diagram.\n", "\n", "Vi kommer att använda **numpy**, som från tidigare är bekant, samt **pandas** och **matplotlib.pyplot**. Vi börjar med att importera paketen. Kör kodcellen, så att paketen är tillgängliga i resten av dokumentet." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt # matplotlib.pyplot innehåller verktyg för att rita grafer och diagram.\n", "import pandas as pd # pandas låter oss läsa in en datafil och spara den som en variabel i python.\n", "import numpy as np " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CSV-filer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Många datafiler är i .csv-format (comma separated values). En tabell i ett kalkylblad kan sparas som .csv, och ser då ut ungefär så här:\n", "\n", "\n", "\n", "Csv-filer kan importeras till python, och blir då till en typ av tabellvariabel som kallas DataFrame.\n", "Eftersom största delen av open data-filer är tillgängliga som .csv, ska vi här se på hur man hanterar sådana tabeller." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistik: Världens energiproduktion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Den Notebook som du läser nu finns online på GitHub. I samma system av mappar på GitHub finns en csv-fil med information om världens energiproduktion 1800-2019. På GitHub, såväl som lokalt på din dator, kan du hänvisa till en fil med en *relativ sökväg*. Tillsammans med denna notebook finns mappen **files** och i den finns filen **global-energy-substitution.csv**. Vi kan alltså hitta filen med sökvägen \"files/global-energy-substitution.csv\", och vi kan importera den till python med pandas-funktionen **pd.read_csv()**.\n", "\n", "Vi sparar csv-filen som en DataFrame-variabel med namnet **energi**. Därefter kan vi se de första raderna av tabellen med hjälp av kommandot **energi.head()**, bara så vi vet om den lästes in rätt." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YearWind (TWh)Oil (TWh)Nuclear (TWh)Hydropower (TWh)Biomass (TWh)Other renewables (TWh)Biofuels (TWh)Solar (TWh)Coal (TWh)Gas (TWh)
0180000005556000970
11810000058330001280
21820000061110001530
31830000063890002640
41840000069440003560
\n", "
" ], "text/plain": [ " Year Wind (TWh) Oil (TWh) Nuclear (TWh) Hydropower (TWh) \\\n", "0 1800 0 0 0 0 \n", "1 1810 0 0 0 0 \n", "2 1820 0 0 0 0 \n", "3 1830 0 0 0 0 \n", "4 1840 0 0 0 0 \n", "\n", " Biomass (TWh) Other renewables (TWh) Biofuels (TWh) Solar (TWh) \\\n", "0 5556 0 0 0 \n", "1 5833 0 0 0 \n", "2 6111 0 0 0 \n", "3 6389 0 0 0 \n", "4 6944 0 0 0 \n", "\n", " Coal (TWh) Gas (TWh) \n", "0 97 0 \n", "1 128 0 \n", "2 153 0 \n", "3 264 0 \n", "4 356 0 " ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "energi = pd.read_csv(\"files/global-energy-substitution.csv\")\n", "energi.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nu vill vi kunna sålla ut information ur tabellen. Här följer några metoder:\n", "\n", "#### Kolumn\n", "Vi kan välja ut en kolumn med värden. Detta kommer att behövas när vi ska föra in data i en graf. \n", "````python\n", "energi[\"Oil (TWh)\"] # Återger kolumnen med rubriken Oil (TWh)\n", "\n", "# Vi kan förstås också spara kolumnen som en variabel:\n", "oil = energi[\"Oil (TWh)\"]\n", "````\n", "\n", "#### Värdesökning\n", "Vi kan söka de rader som innehåller ett bestämt värde. I python använder vi = för att definiera en variabel och == för att kontrollera en variabel.\n", "````python\n", "energi[energi[\"Year\"]==2015] # Kontrollerar tabellen och återger de rader som innehåller årtalet 2015\n", "\n", "energi[energi[\"Wind (TWh)\"]>0] # Återger de rader där vindkraftsproduktionen är större än 0 TWh.\n", "\n", "energi[(energi[\"Year\"]<1990) & (energi[\"Wind (TWh)\"]>0)] # Flera krav kan kombineras med & (\"och\").\n", "````\n", "\n", "#### Index\n", "Vi kan välja ut rader med hjälp av index. Varje rad i tabellen har ett index längst till vänster, och indexering i python fungerar så att den första raden/elementet alltid har index 0. \n", "\n", "````python\n", "energi[67:69] # Hänvisar till raderna 67 och 68 (år 2015 och 2016), men inte slutgränsen 69.\n", "````\n", "#### Enskild cell\n", "Vi kan använda kommandon loc och iloc för att hänvisa till en viss cell.\n", "````python\n", "energi.iloc[[67],[2]] # iloc söker en cell med hjälp av radindex och kolumnindex\n", "\n", "energi.loc[[67],[\"Oil (TWh)\"]] # loc söker en cell med hjälp av radindex och kolumntitel\n", "````\n", "\n", "\n", "````python\n", "\n", "````" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Övning: Informationssökning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Med hjälp av tipsen ovan kan du utföra följande övningar:\n", "\n", "#### Värdesökning\n", "\n", "Skriv ett kommando som återger de rader i tabellen där produktionen för vindkraft överstiger 1000 TWh. Från och med vilket årtal skedde det här?\n", "\n", "Skriv ett kommando för att välja ut de rader i tabellen där produktionssiffran för oljeenergi är högre än för biomassa. Från och med vilket årtal skedde det här?\n", "\n", "#### Index\n", "\n", "Skriv ett kommando som väljer ut raderna med årtalen 2000-2005. Vilken form av energiproduktion var störst under den tiden?\n", "\n", "#### Enskild cell\n", "\n", "Hur hög var produktionen av vattenkraft år 1977? Skriv ett kommando som enbart återger den cellen." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Skriv din kod här. Skapa fler kodceller vid behov.\n", "# Kom ihåg att du måste köra de tidigare kodcellerna så att funktionspaketen och datafilen är tillgängliga." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }