From 905cc61ac70020d8413bb3bb714a9e950cfa954e Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Fri, 17 Jul 2026 18:27:37 +0000 Subject: [PATCH] [da,no,fi] chore(i18n): sync translations Sync translations with latest source changes. Languages: Danish [da], Norwegian [no], Finnish [fi] --- translations/da/.co-op-translator.json | 4 +- .../2-Working-With-Data/07-python/README.md | 181 ++++++++-------- translations/fi/.co-op-translator.json | 4 +- .../2-Working-With-Data/07-python/README.md | 195 +++++++++--------- translations/no/.co-op-translator.json | 4 +- .../2-Working-With-Data/07-python/README.md | 189 ++++++++--------- 6 files changed, 297 insertions(+), 280 deletions(-) diff --git a/translations/da/.co-op-translator.json b/translations/da/.co-op-translator.json index 88491a46..6393bd83 100644 --- a/translations/da/.co-op-translator.json +++ b/translations/da/.co-op-translator.json @@ -96,8 +96,8 @@ "language_code": "da" }, "2-Working-With-Data/07-python/README.md": { - "original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", - "translation_date": "2025-09-06T15:46:35+00:00", + "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1", + "translation_date": "2026-07-17T18:24:47+00:00", "source_file": "2-Working-With-Data/07-python/README.md", "language_code": "da" }, diff --git a/translations/da/2-Working-With-Data/07-python/README.md b/translations/da/2-Working-With-Data/07-python/README.md index 19e50671..337d8617 100644 --- a/translations/da/2-Working-With-Data/07-python/README.md +++ b/translations/da/2-Working-With-Data/07-python/README.md @@ -1,4 +1,4 @@ -# Arbejde med Data: Python og Pandas-biblioteket +# Arbejde med data: Python og Pandas-biblioteket | ![ Sketchnote af [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | | :-------------------------------------------------------------------------------------------------------: | @@ -6,57 +6,57 @@ [![Introduktionsvideo](../../../../translated_images/da/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) -Selvom databaser tilbyder meget effektive måder at gemme data og forespørge dem ved hjælp af forespørgselssprog, er den mest fleksible måde at bearbejde data på at skrive dit eget program til at manipulere data. I mange tilfælde vil en databaseforespørgsel være en mere effektiv løsning. Men i nogle tilfælde, hvor mere kompleks databehandling er nødvendig, kan det ikke nemt gøres med SQL. -Databehandling kan programmeres i ethvert programmeringssprog, men der er visse sprog, der er mere avancerede, når det kommer til at arbejde med data. Dataforskere foretrækker typisk et af følgende sprog: +Mens databaser tilbyder meget effektive måder at gemme data på og forespørge på dem ved hjælp af forespørgselssprog, er den mest fleksible måde til databehandling at skrive dit eget program til at manipulere data. I mange tilfælde vil det være mere effektivt at lave en databaseforespørgsel. Men i nogle tilfælde, når mere kompleks databehandling er nødvendig, kan det ikke let gøres med SQL. +Databehandling kan programmeres i ethvert programmeringssprog, men der findes visse sprog, som er på højere niveau med hensyn til arbejde med data. Dataforskere foretrækker typisk et af følgende sprog: -* **[Python](https://www.python.org/)**, et generelt programmeringssprog, som ofte anses for at være en af de bedste muligheder for begyndere på grund af dets enkelhed. Python har mange ekstra biblioteker, der kan hjælpe dig med at løse praktiske problemer, såsom at udtrække data fra en ZIP-arkiv eller konvertere et billede til gråtoner. Ud over data science bruges Python også ofte til webudvikling. -* **[R](https://www.r-project.org/)** er en traditionel værktøjskasse udviklet med statistisk databehandling i tankerne. Det indeholder også et stort bibliotek af pakker (CRAN), hvilket gør det til et godt valg for databehandling. Dog er R ikke et generelt programmeringssprog og bruges sjældent uden for data science-domænet. -* **[Julia](https://julialang.org/)** er et andet sprog udviklet specifikt til data science. Det er designet til at give bedre ydeevne end Python, hvilket gør det til et fremragende værktøj til videnskabelige eksperimenter. +* **[Python](https://www.python.org/)**, et generelt programmeringssprog, som ofte betragtes som en af de bedste muligheder for begyndere på grund af dets enkelhed. Python har mange yderligere biblioteker, der kan hjælpe dig med at løse mange praktiske problemer, såsom at hente dine data ud af en ZIP-arkiv eller konvertere et billede til gråtoner. Ud over data science bruges Python også ofte til webudvikling. +* **[R](https://www.r-project.org/)** er et traditionelt værktøjskasse udviklet med statistisk databehandling i tankerne. Det indeholder også et stort bibliotek af pakker (CRAN), hvilket gør det til et godt valg til databehandling. Dog er R ikke et generelt programmeringssprog og bruges sjældent uden for data science-domænet. +* **[Julia](https://julialang.org/)** er et andet sprog udviklet specifikt til data science. Det er tænkt til at give bedre ydelse end Python, hvilket gør det til et fremragende værktøj til videnskabelige eksperimenter. -I denne lektion vil vi fokusere på at bruge Python til simpel databehandling. Vi antager grundlæggende kendskab til sproget. Hvis du ønsker en dybere introduktion til Python, kan du henvise til en af følgende ressourcer: +I denne lektion vil vi fokusere på brug af Python til simpel databehandling. Vi antager en grundlæggende kendskab til sproget. Hvis du ønsker en dybere introduktion til Python, kan du se en af følgende ressourcer: -* [Lær Python på en sjov måde med Turtle Graphics og Fractals](https://github.com/shwars/pycourse) - GitHub-baseret hurtig introduktionskursus i Python-programmering +* [Lær Python på en sjov måde med Turtle Graphics og Fraktaler](https://github.com/shwars/pycourse) - GitHub-baseret hurtig introduktionskursus til Python-programmering * [Tag dine første skridt med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -Data kan komme i mange former. I denne lektion vil vi se på tre former for data - **tabulære data**, **tekst** og **billeder**. +Data kan forekomme i mange former. I denne lektion vil vi se på tre former for data - **tabulære data**, **tekst** og **billeder**. -Vi vil fokusere på nogle få eksempler på databehandling i stedet for at give dig en fuld oversigt over alle relaterede biblioteker. Dette vil give dig en idé om, hvad der er muligt, og efterlade dig med en forståelse af, hvor du kan finde løsninger på dine problemer, når du har brug for dem. +Vi vil fokusere på et par eksempler på databehandling i stedet for at give dig et fuldt overblik over alle relevante biblioteker. Det vil give dig en hovedidé om, hvad der er muligt, og lade dig forstå, hvor du kan finde løsninger på dine problemer, når du har brug for dem. -> **Det mest nyttige råd**. Når du skal udføre en bestemt operation på data, som du ikke ved, hvordan du gør, så prøv at søge efter det på internettet. [Stackoverflow](https://stackoverflow.com/) indeholder ofte mange nyttige kodeeksempler i Python til mange typiske opgaver. +> **Det mest nyttige råd**. Når du har brug for at udføre en bestemt operation på data, som du ikke ved, hvordan du gør, så prøv at søge efter det på internettet. [Stackoverflow](https://stackoverflow.com/) indeholder ofte mange nyttige kodeeksempler i Python til mange typiske opgaver. -## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/12) +## [Quiz inden lektionen](https://ff-quizzes.netlify.app/en/ds/quiz/12) -## Tabulære Data og Dataframes +## Tabulære data og DataFrames -Du har allerede stiftet bekendtskab med tabulære data, da vi talte om relationelle databaser. Når du har mange data, og de er indeholdt i mange forskellige sammenkædede tabeller, giver det bestemt mening at bruge SQL til at arbejde med dem. Men der er mange tilfælde, hvor vi har en tabel med data, og vi skal opnå en **forståelse** eller **indsigt** om disse data, såsom fordeling, korrelation mellem værdier osv. I data science er der mange tilfælde, hvor vi skal udføre nogle transformationer af de oprindelige data, efterfulgt af visualisering. Begge disse trin kan nemt udføres ved hjælp af Python. +Du har allerede mødt tabulære data, når vi talte om relationelle databaser. Når du har meget data, og den er indeholdt i mange forskellige sammenkoblede tabeller, giver det bestemt mening at bruge SQL til at arbejde med dem. Der er dog mange tilfælde, hvor vi har en datatabel, og vi skal opnå en form for **forståelse** eller **indsigt** i disse data, såsom fordelingen, korrelationen mellem værdier osv. I data science er der mange situationer, hvor vi skal udføre transformationer af de oprindelige data efterfulgt af visualisering. Begge disse trin kan nemt udføres med Python. -Der er to mest nyttige biblioteker i Python, der kan hjælpe dig med at arbejde med tabulære data: -* **[Pandas](https://pandas.pydata.org/)** giver dig mulighed for at manipulere såkaldte **Dataframes**, som er analoge med relationelle tabeller. Du kan have navngivne kolonner og udføre forskellige operationer på rækker, kolonner og dataframes generelt. -* **[Numpy](https://numpy.org/)** er et bibliotek til at arbejde med **tensore**, dvs. multidimensionelle **arrays**. Et array har værdier af samme underliggende type og er enklere end en dataframe, men det tilbyder flere matematiske operationer og skaber mindre overhead. +Der er to af de mest nyttige biblioteker i Python, som kan hjælpe dig med at håndtere tabulære data: +* **[Pandas](https://pandas.pydata.org/)** gør det muligt at manipulere såkaldte **DataFrames**, som svarer til relationelle tabeller. Du kan have navngivne kolonner og udføre forskellige operationer på rækker, kolonner og DataFrames generelt. +* **[Numpy](https://numpy.org/)** er et bibliotek til arbejde med **tensorer**, dvs. multi-dimensionelle **arrays**. Arrays har værdier af samme underliggende type, og de er simplere end DataFrames, men tilbyder flere matematiske operationer og skaber mindre overhead. Der er også et par andre biblioteker, du bør kende til: -* **[Matplotlib](https://matplotlib.org/)** er et bibliotek, der bruges til datavisualisering og graftegning -* **[SciPy](https://www.scipy.org/)** er et bibliotek med nogle ekstra videnskabelige funktioner. Vi er allerede stødt på dette bibliotek, da vi talte om sandsynlighed og statistik +* **[Matplotlib](https://matplotlib.org/)** er et bibliotek, der bruges til datavisualisering og til at plotte grafer +* **[SciPy](https://www.scipy.org/)** er et bibliotek med nogle yderligere videnskabelige funktioner. Vi er allerede stødt på dette bibliotek, når vi talte om sandsynlighed og statistik Her er et stykke kode, som du typisk vil bruge til at importere disse biblioteker i begyndelsen af dit Python-program: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt -from scipy import ... # you need to specify exact sub-packages that you need +from scipy import ... # du skal angive præcise underpakker, som du har brug for ``` -Pandas er centreret omkring nogle få grundlæggende begreber. +Pandas er centreret omkring nogle grundlæggende begreber. -### Series +### Serie (Series) -**Series** er en sekvens af værdier, der ligner en liste eller numpy-array. Den største forskel er, at en series også har en **indeks**, og når vi opererer på series (f.eks. lægger dem sammen), tages indekset i betragtning. Indekset kan være så simpelt som et heltal (det er standardindekset, når man opretter en series fra en liste eller et array), eller det kan have en kompleks struktur, såsom et datointerval. +**Series** er en sekvens af værdier, svarende til en liste eller numpy-array. Den vigtigste forskel er, at en serie også har et **index**, og når vi opererer på serier (f.eks. lægger dem sammen), tages index i betragtning. Index kan være så simpelt som heltalsrækkenummer (det er standardindekset, når man opretter en serie fra en liste eller array), eller det kan have en kompleks struktur som et datointerval. -> **Bemærk**: Der er noget introducerende Pandas-kode i den medfølgende notebook [`notebook.ipynb`](notebook.ipynb). Vi skitserer kun nogle af eksemplerne her, og du er bestemt velkommen til at tjekke den fulde notebook. +> **Bemærk**: Der er noget introducerende Pandas-kode i det tilhørende notebook [`notebook.ipynb`](notebook.ipynb). Vi skitserer kun nogle af eksemplerne her, og du er bestemt velkommen til at tjekke hele notebooken. -Lad os tage et eksempel: vi vil analysere salget i vores isbutik. Lad os generere en series af salgsnumre (antal solgte varer hver dag) for en given tidsperiode: +Overvej et eksempel: vi vil analysere salget i vores isbod. Lad os generere en serie af salgsnumre (antal solgte varer hver dag) for en given periode: ```python start_date = "Jan 1, 2020" @@ -66,43 +66,43 @@ print(f"Length of index is {len(idx)}") items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx) items_sold.plot() ``` -![Tidsserieplot](../../../../translated_images/da/timeseries-1.80de678ab1cf727e.webp) +![Tidsserie-diagram](../../../../translated_images/da/timeseries-1.80de678ab1cf727e.webp) -Antag nu, at vi hver uge arrangerer en fest for venner, og vi tager yderligere 10 pakker is med til festen. Vi kan oprette en anden series, indekseret efter uge, for at demonstrere det: +Antag nu, at vi hver uge arrangerer en fest for venner og medbringer yderligere 10 pakker is til festen. Vi kan oprette en anden serie, indekseret efter uger, for at vise det: ```python additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) ``` -Når vi lægger de to series sammen, får vi det samlede antal: +Når vi lægger to serier sammen, får vi et samlet antal: ```python total_items = items_sold.add(additional_items,fill_value=0) total_items.plot() ``` -![Tidsserieplot](../../../../translated_images/da/timeseries-2.aae51d575c55181c.webp) +![Tidsserie-diagram](../../../../translated_images/da/timeseries-2.aae51d575c55181c.webp) -> **Bemærk** at vi ikke bruger den simple syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi få mange `NaN` (*Not a Number*) værdier i den resulterende series. Dette skyldes, at der mangler værdier for nogle af indeksene i `additional_items`-serien, og at lægge `NaN` til noget resulterer i `NaN`. Derfor skal vi angive parameteren `fill_value` under addition. +> **Bemærk** at vi ikke bruger den simple syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi få mange `NaN` (*Not a Number*) værdier i den resulterende serie. Det skyldes, at der mangler værdier for nogle af indeks-punkterne i `additional_items`-serien, og at lægges `NaN` til noget som helst, resulterer det i `NaN`. Derfor skal vi angive `fill_value`-parameteren under addition. -Med tidsserier kan vi også **resample** serien med forskellige tidsintervaller. For eksempel, hvis vi vil beregne gennemsnitligt salgsvolumen månedligt, kan vi bruge følgende kode: +Med tidsserier kan vi også **genprøveudtage** serien med forskellige tidsintervaller. For eksempel antag, at vi vil beregne gennemsnitligt salgsmængde pr. måned. Vi kan bruge følgende kode: ```python monthly = total_items.resample("1M").mean() ax = monthly.plot(kind='bar') ``` -![Månedlige tidsserie-gennemsnit](../../../../translated_images/da/timeseries-3.f3147cbc8c624881.webp) +![Månedlige gennemsnit for tidsserie](../../../../translated_images/da/timeseries-3.f3147cbc8c624881.webp) ### DataFrame -En DataFrame er i bund og grund en samling af series med samme indeks. Vi kan kombinere flere series til en DataFrame: +En DataFrame er i bund og grund en samling af serier med samme index. Vi kan kombinere flere serier i en DataFrame: ```python a = pd.Series(range(1,10)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) df = pd.DataFrame([a,b]) ``` -Dette vil skabe en horisontal tabel som denne: +Dette vil skabe en vandret tabel som denne: | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 1 | I | like | to | use | Python | and | Pandas | very | much | -Vi kan også bruge series som kolonner og angive kolonnenavne ved hjælp af en ordbog: +Vi kan også bruge Series som kolonner og angive kolonnenavne ved hjælp af en ordbog (dictionary): ```python df = pd.DataFrame({ 'A' : a, 'B' : b }) ``` @@ -120,39 +120,39 @@ Dette vil give os en tabel som denne: | 7 | 8 | very | | 8 | 9 | much | -**Bemærk** at vi også kan få denne tabelopsætning ved at transponere den tidligere tabel, f.eks. ved at skrive +**Bemærk** at vi også kan få dette tabellayout ved at transponere den tidligere tabel, f.eks. ved at skrive ```python -df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' }) ``` -Her betyder `.T` operationen at transponere DataFrame, dvs. at bytte rækker og kolonner, og `rename`-operationen giver os mulighed for at omdøbe kolonnerne, så de matcher det tidligere eksempel. +Her betyder `.T` operationen at transponere DataFrame, dvs. at skifte rækker og kolonner, og `rename`-operationen tillader os at ændre kolonnenavne, så de passer med det tidligere eksempel. Her er nogle af de vigtigste operationer, vi kan udføre på DataFrames: -**Kolonnevalg**. Vi kan vælge individuelle kolonner ved at skrive `df['A']` - denne operation returnerer en Series. Vi kan også vælge et delmængde af kolonner til en anden DataFrame ved at skrive `df[['B','A']]` - dette returnerer en anden DataFrame. +**Kolonnevalg**. Vi kan vælge individuelle kolonner ved at skrive `df['A']` - denne operation returnerer en Serie. Vi kan også vælge et delmængde af kolonner til en anden DataFrame ved at skrive `df[['B','A']]` - dette returnerer en anden DataFrame. -**Filtrering** af kun visse rækker baseret på kriterier. For eksempel, for kun at beholde rækker med kolonnen `A` større end 5, kan vi skrive `df[df['A']>5]`. +**Filtrering** af kun visse rækker efter kriterier. For eksempel, for kun at bevare rækker med kolonne `A` større end 5, kan vi skrive `df[df['A']>5]`. -> **Bemærk**: Måden filtrering fungerer på er følgende. Udtrykket `df['A']<5` returnerer en boolsk series, som angiver, om udtrykket er `True` eller `False` for hvert element i den oprindelige series `df['A']`. Når en boolsk series bruges som indeks, returnerer den en delmængde af rækker i DataFrame. Derfor er det ikke muligt at bruge vilkårlige Python-boolske udtryk, f.eks. at skrive `df[df['A']>5 and df['A']<7]` ville være forkert. I stedet skal du bruge den specielle `&`-operation på boolske series, ved at skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteser er vigtige her*). +> **Bemærk**: Måden filtrering fungerer på er følgende. Udtrykket `df['A']<5` returnerer en boolesk serie, som angiver, om udtrykket er `True` eller `False` for hvert element i den oprindelige serie `df['A']`. Når en boolesk serie bruges som index, returnerer det et delmængde af rækker i DataFrame. Derfor er det ikke muligt at bruge vilkårlige Python-boolske udtryk, for eksempel ville `df[df['A']>5 and df['A']<7]` være forkert. I stedet bør du bruge den særlige `&` operation på booleske serier, altså skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteserne er vigtige her*). -**Oprettelse af nye beregnelige kolonner**. Vi kan nemt oprette nye beregnelige kolonner for vores DataFrame ved at bruge intuitive udtryk som dette: +**Oprettelse af nye beregnede kolonner**. Vi kan nemt oprette nye beregnede kolonner for vores DataFrame ved at bruge intuitive udtryk som dette: ```python df['DivA'] = df['A']-df['A'].mean() ``` -Dette eksempel beregner afvigelsen af A fra dens gennemsnitsværdi. Hvad der faktisk sker her er, at vi beregner en series og derefter tildeler denne series til venstre side, hvilket skaber en ny kolonne. Derfor kan vi ikke bruge operationer, der ikke er kompatible med series, f.eks. nedenstående kode er forkert: +Dette eksempel beregner afvigelsen af A fra dens gennemsnitsværdi. Hvad der faktisk sker her, er, at vi beregner en serie og derefter tildeler denne serie til venstresiden, hvilket skaber en ny kolonne. Derfor kan vi ikke bruge operationer, som ikke er kompatible med serier; for eksempel er nedenstående kode forkert: ```python -# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" -df['LenB'] = len(df['B']) # <- Wrong result +# Forkert kode -> df['ADescr'] = "Low" hvis df['A'] < 5 ellers "Hi" +df['LenB'] = len(df['B']) # <- Forkert resultat ``` -Det sidste eksempel, selvom det er syntaktisk korrekt, giver os et forkert resultat, fordi det tildeler længden af serien `B` til alle værdier i kolonnen og ikke længden af de individuelle elementer, som vi havde tænkt os. +Det sidste eksempel, selvom det er syntaktisk korrekt, giver et forkert resultat, fordi det tildeler længden af serien `B` til alle værdier i kolonnen, og ikke længden af de enkelte elementer, som vi ønskede. -Hvis vi skal beregne komplekse udtryk som dette, kan vi bruge funktionen `apply`. Det sidste eksempel kan skrives som følger: +Hvis vi har brug for at beregne komplekse udtryk som dette, kan vi bruge `apply`-funktionen. Det sidste eksempel kan skrives således: ```python df['LenB'] = df['B'].apply(lambda x : len(x)) -# or +# eller df['LenB'] = df['B'].apply(len) ``` -Efter ovenstående operationer ender vi med følgende DataFrame: +Efter ovenstående operationer vil vi ende op med følgende DataFrame: | | A | B | DivA | LenB | | --- | --- | ------ | ---- | ---- | @@ -166,16 +166,16 @@ Efter ovenstående operationer ender vi med følgende DataFrame: | 7 | 8 | very | 3.0 | 4 | | 8 | 9 | much | 4.0 | 4 | -**Valg af rækker baseret på numre** kan gøres ved hjælp af `iloc`-konstruktionen. For eksempel, for at vælge de første 5 rækker fra DataFrame: +**Udvælgelse af rækker baseret på nummer** kan gøres med `iloc`-konstruktionen. For eksempel, for at vælge de første 5 rækker fra DataFrame: ```python df.iloc[:5] ``` -**Gruppering** bruges ofte til at få et resultat, der ligner *pivot-tabeller* i Excel. Antag, at vi vil beregne gennemsnitsværdien af kolonnen `A` for hver given værdi af `LenB`. Så kan vi gruppere vores DataFrame efter `LenB` og kalde `mean`: +**Gruppering** bruges ofte til at få et resultat, der ligner *pivot-tabeller* i Excel. Antag, at vi ønsker at beregne gennemsnitsværdien for kolonne `A` for hvert givet tal af `LenB`. Så kan vi gruppere vores DataFrame efter `LenB` og kalde `mean`: ```python df.groupby(by='LenB')[['A','DivA']].mean() ``` -Hvis vi skal beregne gennemsnittet og antallet af elementer i gruppen, kan vi bruge den mere komplekse `aggregate`-funktion: +Hvis vi vil beregne gennemsnit og antallet af elementer i gruppen, kan vi bruge en mere kompleks `aggregate`-funktion: ```python df.groupby(by='LenB') \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ @@ -191,93 +191,98 @@ Dette giver os følgende tabel: | 4 | 3 | 6.333333 | | 6 | 2 | 6.000000 | -### Hentning af Data -Vi har set, hvor nemt det er at oprette Series og DataFrames fra Python-objekter. Dog kommer data ofte i form af en tekstfil eller en Excel-tabel. Heldigvis tilbyder Pandas en enkel måde at indlæse data fra disk. For eksempel er det lige så nemt at læse en CSV-fil som dette: +### Indhentning af data + + +Vi har set, hvor nemt det er at opbygge Series og DataFrames fra Python-objekter. Data kommer dog som regel i form af en tekstfil eller en Excel-tabel. Heldigvis tilbyder Pandas en simpel måde at indlæse data fra disk på. For eksempel er det så enkelt at læse en CSV-fil: ```python df = pd.read_csv('file.csv') ``` -Vi vil se flere eksempler på indlæsning af data, herunder at hente det fra eksterne websteder, i afsnittet "Challenge". +Vi vil se flere eksempler på indlæsning af data, herunder hentning fra eksterne websteder, i afsnittet "Challenge" + -### Udskrivning og Visualisering +### Udskrivning og plotning -En Data Scientist skal ofte udforske data, og derfor er det vigtigt at kunne visualisere dem. Når en DataFrame er stor, vil vi ofte bare sikre os, at vi gør alting korrekt, ved at udskrive de første par rækker. Dette kan gøres ved at kalde `df.head()`. Hvis du kører det fra Jupyter Notebook, vil det udskrive DataFrame i en flot tabelform. +En dataforsker skal ofte udforske data, så det er vigtigt at kunne visualisere dem. Når en DataFrame er stor, vil man mange gange bare sikre sig, at man gør alt korrekt ved at udskrive de første par rækker. Dette kan gøres ved at kalde `df.head()`. Hvis du kører det fra Jupyter Notebook, vil det udskrive DataFramen i pæn tabelform. -Vi har også set brugen af funktionen `plot` til at visualisere nogle kolonner. Selvom `plot` er meget nyttig til mange opgaver og understøtter mange forskellige graf-typer via parameteren `kind=`, kan du altid bruge det rå `matplotlib`-bibliotek til at lave noget mere komplekst. Vi vil dække datavisualisering i detaljer i separate kursuslektioner. +Vi har også set brugen af `plot` funktionen til at visualisere nogle kolonner. Mens `plot` er meget nyttigt til mange opgaver og understøtter mange forskellige graf-typer via `kind=` parameteren, kan du altid bruge det rå `matplotlib` bibliotek til at plotte noget mere komplekst. Vi vil dække datavisualisering detaljeret i separate kursuslektioner. -Denne oversigt dækker de vigtigste begreber i Pandas, men biblioteket er meget rigt, og der er ingen grænser for, hvad du kan gøre med det! Lad os nu anvende denne viden til at løse et specifikt problem. +Denne oversigt dækker de vigtigste koncepter i Pandas, men biblioteket er meget rigt, og der er ingen grænse for, hvad du kan gøre med det! Lad os nu anvende denne viden til at løse et specifikt problem. ## 🚀 Challenge 1: Analyse af COVID-spredning -Det første problem, vi vil fokusere på, er modellering af den epidemiske spredning af COVID-19. For at gøre dette vil vi bruge data om antallet af smittede individer i forskellige lande, leveret af [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasættet er tilgængeligt i [denne GitHub-repository](https://github.com/CSSEGISandData/COVID-19). +Det første problem, vi vil fokusere på, er modellering af den epidemiske spredning af COVID-19. For at gøre dette bruger vi data om antallet af smittede individer i forskellige lande, leveret af [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Data-sættet er tilgængeligt i [dette GitHub Repository](https://github.com/CSSEGISandData/COVID-19). -Da vi ønsker at demonstrere, hvordan man arbejder med data, inviterer vi dig til at åbne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og læse det fra top til bund. Du kan også udføre celler og lave nogle udfordringer, som vi har efterladt til dig i slutningen. +Da vi vil demonstrere, hvordan man håndterer data, inviterer vi dig til at åbne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og læse den fra top til bund. Du kan også køre celler og prøve nogle af de udfordringer, vi har efterladt til dig til sidst. ![COVID Spread](../../../../translated_images/da/covidspread.f3d131c4f1d260ab.webp) -> Hvis du ikke ved, hvordan man kører kode i Jupyter Notebook, kan du kigge på [denne artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> Hvis du ikke ved, hvordan man kører kode i Jupyter Notebook, kan du tage et kig på [denne artikel](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -## Arbejde med ustruktureret data +## Arbejde med ustrukturerede data -Selvom data meget ofte kommer i tabelform, skal vi i nogle tilfælde arbejde med mindre struktureret data, for eksempel tekst eller billeder. I dette tilfælde, for at anvende de databehandlingsteknikker, vi har set ovenfor, skal vi på en eller anden måde **udtrække** struktureret data. Her er nogle eksempler: +Selvom data meget ofte kommer i tabelform, er der i nogle tilfælde behov for at håndtere mindre strukturerede data, for eksempel tekst eller billeder. I dette tilfælde, for at anvende de databehandlingsteknikker, vi har set ovenfor, skal vi på en eller anden måde **udtrække** strukturerede data. Her er nogle eksempler: -* Udtrække nøgleord fra tekst og se, hvor ofte disse nøgleord optræder -* Bruge neurale netværk til at udtrække information om objekter på et billede -* Få information om folks følelser via videokamera-feed +* Udtrækning af nøgleord fra tekst, og se hvor ofte disse nøgleord forekommer +* Brug af neurale netværk til at udtrække information om objekter på billedet +* Indhentning af information om følelser hos personer på videokamera-feed ## 🚀 Challenge 2: Analyse af COVID-artikler -I denne udfordring fortsætter vi med emnet COVID-pandemien og fokuserer på behandling af videnskabelige artikler om emnet. Der findes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mere end 7000 (på tidspunktet for skrivningen) artikler om COVID, tilgængelige med metadata og abstracts (og for omkring halvdelen af dem er der også fuld tekst tilgængelig). +I denne udfordring fortsætter vi med emnet COVID-pandemien og fokuserer på behandling af videnskabelige artikler om emnet. Der findes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mere end 7000 (på tidspunktet for skrivning) artikler om COVID, tilgængelige med metadata og abstracts (og for omkring halvdelen er der også fuld tekst tilgængelig). -Et fuldt eksempel på analyse af dette datasæt ved hjælp af [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitive tjeneste er beskrevet [i denne blogpost](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet version af denne analyse. +Et fuldt eksempel på analyse af dette datasæt ved hjælp af [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitiv service er beskrevet [i dette blogindlæg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet version af denne analyse. -> **NOTE**: Vi leverer ikke en kopi af datasættet som en del af dette repository. Du skal muligvis først downloade [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) filen fra [dette datasæt på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være påkrævet. Du kan også downloade datasættet uden registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulde tekster ud over metadatafilen. +> **NOTE**: Vi stiller ikke en kopi af datasættet til rådighed som en del af dette repository. Du skal muligvis først downloade [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) filen fra [dette datasæt på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være nødvendig. Du kan også downloade datasættet uden registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulde tekster ud over metadata-filen. -Åbn [`notebook-papers.ipynb`](notebook-papers.ipynb) og læs det fra top til bund. Du kan også udføre celler og lave nogle udfordringer, som vi har efterladt til dig i slutningen. +Åbn [`notebook-papers.ipynb`](notebook-papers.ipynb) og læs den fra top til bund. Du kan også køre celler og prøve nogle af de udfordringer, vi har efterladt til dig til sidst. ![Covid Medical Treatment](../../../../translated_images/da/covidtreat.b2ba59f57ca45fbc.webp) ## Behandling af billeddata -For nylig er der blevet udviklet meget kraftfulde AI-modeller, der gør det muligt for os at forstå billeder. Der er mange opgaver, der kan løses ved hjælp af forudtrænede neurale netværk eller cloud-tjenester. Nogle eksempler inkluderer: +For nylig er meget kraftfulde AI-modeller blevet udviklet, der gør det muligt for os at forstå billeder. Der er mange opgaver, som kan løses ved brug af fortrænede neurale netværk eller cloud-tjenester. Nogle eksempler omfatter: -* **Billedklassifikation**, som kan hjælpe dig med at kategorisere et billede i en af de foruddefinerede klasser. Du kan nemt træne dine egne billedklassifikatorer ved hjælp af tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) -* **Objektdetektion** til at finde forskellige objekter på billedet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan finde en række almindelige objekter, og du kan træne [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellen til at finde specifikke objekter af interesse. -* **Ansigtsdetektion**, inklusive alder, køn og følelsesdetektion. Dette kan gøres via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). +* **Billedklassifikation**, som kan hjælpe dig med at kategorisere billedet i en af de foruddefinerede klasser. Du kan nemt træne dine egne billedklassifikatorer ved hjælp af tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Objektdetektion** for at opdage forskellige objekter i billedet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan opdage en række almindelige objekter, og du kan træne en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) model til at opdage nogle specifikke objekter af interesse. +* **Ansigtsgenkendelse**, inklusive alder, køn og følelsesdetektion. Dette kan gøres via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). -Alle disse cloud-tjenester kan kaldes ved hjælp af [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), og kan derfor nemt integreres i din dataudforskningsarbejdsgang. +Alle disse cloudtjenester kan kaldes ved hjælp af [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) og kan således nemt integreres i din dataudforskningsworkflow. Her er nogle eksempler på udforskning af data fra billeddatakilder: -* I blogindlægget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) udforsker vi Instagram-billeder og forsøger at forstå, hvad der får folk til at give flere likes til et billede. Vi udtrækker først så meget information som muligt fra billederne ved hjælp af [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), og bruger derefter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) til at bygge en fortolkbar model. -* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruger vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) til at udtrække følelser hos mennesker på fotografier fra begivenheder for at forsøge at forstå, hvad der gør folk glade. +* I blogindlægget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) undersøger vi Instagram-fotos for at forstå, hvad der får folk til at give flere likes til et foto. Vi udtrækker først så meget information som muligt fra billeder ved hjælp af [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), og bruger derefter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) til at bygge en fortolkelig model. +* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruger vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) til at udtrække følelser hos personer på fotografier fra events for at prøve at forstå, hvad der gør folk glade. ## Konklusion -Uanset om du allerede har struktureret eller ustruktureret data, kan du med Python udføre alle trin relateret til databehandling og forståelse. Det er sandsynligvis den mest fleksible måde at behandle data på, og det er grunden til, at størstedelen af dataforskere bruger Python som deres primære værktøj. At lære Python i dybden er sandsynligvis en god idé, hvis du er seriøs omkring din data science-rejse! +Uanset om du allerede har strukturerede eller ustrukturerede data, kan du med Python udføre alle trin relateret til databehandling og forståelse. Det er sandsynligvis den mest fleksible måde at håndtere data på, og det er grunden til, at størstedelen af dataforskere bruger Python som deres primære værktøj. Det er nok en god idé at lære Python i dybden, hvis du mener alvorligt med din data science rejse! -## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/13) +## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ds/quiz/13) -## Gennemgang & Selvstudie +## Gennemgang & Selvstudium **Bøger** * [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) **Online Ressourcer** -* Officiel [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial +* Officiel [10 minutter til Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) vejledning * [Dokumentation om Pandas Visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) **Lær Python** -* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) -* [Tag dine første skridt med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) +* [Lær Python på en sjov måde med Turtle Graphics og Fraktaler](https://github.com/shwars/pycourse) +* [Tag dine første skridt med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) ## Opgave -[Udfør en mere detaljeret dataundersøgelse for ovenstående udfordringer](assignment.md) +[Udfør en mere detaljeret dataanalyse for ovenstående udfordringer](assignment.md) -## Credits +## Kilder Denne lektion er skrevet med ♥️ af [Dmitry Soshnikov](http://soshnikov.com) --- -**Ansvarsfraskrivelse**: -Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse. \ No newline at end of file + +**Ansvarsfraskrivelse**: +Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse. + \ No newline at end of file diff --git a/translations/fi/.co-op-translator.json b/translations/fi/.co-op-translator.json index 7eb427d6..bd2a12ef 100644 --- a/translations/fi/.co-op-translator.json +++ b/translations/fi/.co-op-translator.json @@ -96,8 +96,8 @@ "language_code": "fi" }, "2-Working-With-Data/07-python/README.md": { - "original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", - "translation_date": "2025-09-06T15:48:25+00:00", + "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1", + "translation_date": "2026-07-17T18:27:26+00:00", "source_file": "2-Working-With-Data/07-python/README.md", "language_code": "fi" }, diff --git a/translations/fi/2-Working-With-Data/07-python/README.md b/translations/fi/2-Working-With-Data/07-python/README.md index 3d1238b9..18648d37 100644 --- a/translations/fi/2-Working-With-Data/07-python/README.md +++ b/translations/fi/2-Working-With-Data/07-python/README.md @@ -2,59 +2,61 @@ | ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | | :-------------------------------------------------------------------------------------------------------: | -| Työskentely Pythonin kanssa - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Työskentely Pythonin kanssa - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | -[![Intro Video](../../../../translated_images/fi/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) +[![Esittelyvideo](../../../../translated_images/fi/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) -Vaikka tietokannat tarjoavat erittäin tehokkaita tapoja tallentaa dataa ja tehdä kyselyitä kyselykielillä, joustavin tapa käsitellä dataa on kirjoittaa oma ohjelma datan muokkaamiseen. Monissa tapauksissa tietokantakysely olisi tehokkaampi tapa. Kuitenkin joissakin tapauksissa, kun tarvitaan monimutkaisempaa datan käsittelyä, sitä ei voida helposti tehdä SQL:llä. -Datan käsittelyä voidaan ohjelmoida millä tahansa ohjelmointikielellä, mutta tietyt kielet ovat korkeammalla tasolla datan käsittelyn suhteen. Datatieteilijät suosivat yleensä yhtä seuraavista kielistä: +Vaikka tietokannat tarjoavat erittäin tehokkaita tapoja tallentaa dataa ja kysellä sitä kyselykielten avulla, joustavin tapa datan käsittelyyn on kirjoittaa oma ohjelma datan käsittelemiseksi. Monissa tapauksissa tietokantakysely olisi tehokkaampi tapa. Kuitenkin joissain tapauksissa, kun tarvitaan monimutkaisempaa datan käsittelyä, sitä ei voi tehdä helposti SQL:llä. +Datan käsittely voidaan ohjelmoida millä tahansa ohjelmointikielellä, mutta tietyt kielet ovat korkeamman tason datan käsittelyn näkökulmasta. Data-analyytikot suosivat yleensä jotakin seuraavista kielistä: -* **[Python](https://www.python.org/)**, yleiskäyttöinen ohjelmointikieli, jota pidetään usein yhtenä parhaista vaihtoehdoista aloittelijoille sen yksinkertaisuuden vuoksi. Pythonilla on paljon lisäkirjastoja, jotka voivat auttaa ratkaisemaan monia käytännön ongelmia, kuten datan purkaminen ZIP-arkistosta tai kuvan muuntaminen harmaasävyksi. Datatieteen lisäksi Pythonia käytetään usein myös verkkokehityksessä. -* **[R](https://www.r-project.org/)** on perinteinen työkalu, joka on kehitetty tilastollisen datan käsittelyä varten. Se sisältää laajan kirjastojen arkiston (CRAN), mikä tekee siitä hyvän valinnan datan käsittelyyn. R ei kuitenkaan ole yleiskäyttöinen ohjelmointikieli, ja sitä käytetään harvoin datatieteen ulkopuolella. -* **[Julia](https://julialang.org/)** on toinen kieli, joka on kehitetty erityisesti datatiedettä varten. Sen tarkoituksena on tarjota parempaa suorituskykyä kuin Python, mikä tekee siitä erinomaisen työkalun tieteellisiin kokeiluihin. +* **[Python](https://www.python.org/)**, yleiskäyttöinen ohjelmointikieli, jota pidetään usein yhtenä parhaista vaihtoehdoista aloittelijoille sen yksinkertaisuuden vuoksi. Pythonilla on paljon lisäkirjastoja, jotka voivat auttaa ratkaisemaan monia käytännön ongelmia, kuten datan purkamista ZIP-arkistosta tai kuvan muuntamista harmaasävyiseksi. Data-analyysin lisäksi Pythonia käytetään usein myös web-kehityksessä. +* **[R](https://www.r-project.org/)** on perinteinen työkalu, joka on kehitetty erityisesti tilastollista datankäsittelyä varten. Siinä on myös suuri kirjastoarkisto (CRAN), mikä tekee siitä hyvän valinnan datan käsittelyyn. Kuitenkin R ei ole yleiskäyttöinen ohjelmointikieli ja sitä käytetään harvoin data-analyysin ulkopuolella. +* **[Julia](https://julialang.org/)** on toinen kieli, joka on kehitetty erityisesti data-analyysiin. Se on suunniteltu tarjoamaan parempi suorituskyky kuin Python, mikä tekee siitä erinomaisen työkalun tieteelliseen kokeiluun. -Tässä oppitunnissa keskitymme Pythonin käyttöön yksinkertaisessa datan käsittelyssä. Oletamme, että sinulla on perustiedot kielestä. Jos haluat syvemmän katsauksen Pythonista, voit tutustua johonkin seuraavista resursseista: +Tässä oppitunnissa keskitymme Pythonin käyttöön yksinkertaisessa datan käsittelyssä. Oletamme perustason tutustumisen kieleen. Jos haluat syvällisemmän Pythonin katsauksen, voit tutustua johonkin seuraavista resursseista: -* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-pohjainen pikaopas Python-ohjelmointiin -* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Oppimispolku [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -sivustolla +* [Opiskele Pythonia hauskasti Turtle Graphicsin ja fraktaalien avulla](https://github.com/shwars/pycourse) - GitHub-pohjainen pikaopas Python-ohjelmointiin +* [Ota ensimmäiset askeleesi Pythonin kanssa](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Oppimispolku Microsoft Learnissa -Data voi olla monessa eri muodossa. Tässä oppitunnissa tarkastelemme kolmea datan muotoa - **taulukkomuotoista dataa**, **tekstiä** ja **kuvia**. +Data voi olla monessa muodossa. Tässä oppitunnissa käsittelemme kolmea datan muotoa - **taulukkodata**, **teksti** ja **kuvat**. -Keskitymme muutamaan esimerkkiin datan käsittelystä sen sijaan, että antaisimme kattavan yleiskatsauksen kaikista asiaan liittyvistä kirjastoista. Tämä antaa sinulle käsityksen siitä, mitä on mahdollista tehdä, ja auttaa sinua ymmärtämään, mistä löytää ratkaisuja ongelmiisi tarvittaessa. +Keskitymme muutamiin esimerkkeihin datan käsittelystä sen sijaan, että antaisimme täydellisen yleiskatsauksen kaikista aiheeseen liittyvistä kirjastoista. Tämä antaa sinulle pääidean siitä, mitä on mahdollista tehdä, ja auttaa sinua ymmärtämään, mistä löydät ratkaisumat ongelmiisi, kun sitä tarvitset. -> **Hyödyllisin neuvo**. Kun sinun täytyy suorittaa jokin datan käsittelytoimenpide, jota et osaa tehdä, yritä etsiä sitä internetistä. [Stackoverflow](https://stackoverflow.com/) sisältää yleensä paljon hyödyllisiä Python-koodiesimerkkejä moniin tyypillisiin tehtäviin. +> **Yleisin hyödyllinen neuvoni**. Kun sinun täytyy suorittaa jokin tietty operaatio datalle, jota et osaa tehdä, yritä etsiä ratkaisu internetistä. [Stackoverflow](https://stackoverflow.com/) sisältää yleensä paljon hyödyllisiä Python-koodiesimerkkejä moniin tyypillisiin tehtäviin. -## [Ennakkokysely](https://ff-quizzes.netlify.app/en/ds/quiz/12) -## Taulukkomuotoinen data ja DataFrame-rakenteet -Olet jo tutustunut taulukkomuotoiseen dataan, kun puhuimme relaatiotietokannoista. Kun sinulla on paljon dataa, joka on tallennettu moniin eri linkitettyihin tauluihin, SQL:n käyttö on ehdottomasti järkevää. Kuitenkin on monia tapauksia, joissa meillä on yksittäinen datataulukko, ja meidän täytyy saada siitä **ymmärrystä** tai **oivalluksia**, kuten jakauma tai arvojen välinen korrelaatio. Datatieteessä on paljon tilanteita, joissa alkuperäistä dataa täytyy muokata ja sen jälkeen visualisoida. Molemmat vaiheet voidaan helposti tehdä Pythonilla. +## [Ennakkotehtävä](https://ff-quizzes.netlify.app/en/ds/quiz/12) -Pythonissa on kaksi hyödyllistä kirjastoa, jotka auttavat sinua käsittelemään taulukkomuotoista dataa: -* **[Pandas](https://pandas.pydata.org/)** mahdollistaa niin sanottujen **DataFrame-rakenteiden** käsittelyn, jotka ovat analogisia relaatiotaulukoille. Voit käyttää nimettyjä sarakkeita ja suorittaa erilaisia operaatioita riveille, sarakkeille ja DataFrameille yleisesti. -* **[Numpy](https://numpy.org/)** on kirjasto, joka on tarkoitettu **tensorien**, eli monidimensionaalisten **taulukoiden**, käsittelyyn. Taulukko sisältää saman tyyppisiä arvoja, ja se on yksinkertaisempi kuin DataFrame, mutta tarjoaa enemmän matemaattisia operaatioita ja aiheuttaa vähemmän ylikuormitusta. +## Taulukkodata ja DataFrame -Lisäksi on muutama muu kirjasto, jotka sinun kannattaa tietää: -* **[Matplotlib](https://matplotlib.org/)** on kirjasto, jota käytetään datan visualisointiin ja graafien piirtämiseen -* **[SciPy](https://www.scipy.org/)** on kirjasto, joka sisältää lisätieteellisiä funktioita. Olemme jo törmänneet tähän kirjastoon, kun puhuimme todennäköisyyksistä ja tilastoista +Olet jo tavannut taulukkodataa puhuttaessa relaatiotietokannoista. Kun sinulla on paljon dataa ja se on monissa eri linkitetyissä tauluissa, SQL:n käyttäminen on ehdottomasti järkevää. Kuitenkin on monia tapauksia, joissa meillä on joukko dataa taulukkona ja tarvitsemme jonkinlaista **ymmärrystä** tai **näkemyksiä** tästä datasta, kuten jakaumaa, arvojen välistä korrelaatiota, jne. Data-analyysissä on usein tarpeen tehdä alkuperäiselle datalle muutoksia, joita seuraa visualisointi. Molemmat vaiheet voidaan helposti tehdä Pythonilla. -Tässä on koodiesimerkki, jota yleensä käytetään näiden kirjastojen tuomiseen Python-ohjelman alkuun: +Pythonissa on kaksi eniten käytettyä kirjastoa, jotka auttavat käsittelemään taulukkodataa: +* **[Pandas](https://pandas.pydata.org/)** antaa sinun käsitellä niin kutsuttuja **Dataframeja**, jotka ovat analoogisia relaatiotietokannan tauluille. Voit käyttää nimettyjä sarakkeita ja suorittaa erilaisia operaatioita riveillä, sarakkeilla ja dataframella yleisesti. +* **[Numpy](https://numpy.org/)** on kirjasto **tensoreiden**, eli moniulotteisten **taulukoiden** käsittelyyn. Taulukolla on samantyyppisiä arvoja, ja se on yksinkertaisempi kuin dataframe, mutta tarjoaa enemmän matemaattisia operaatioita ja luo vähemmän ylikuormitusta. + +On myös pari muuta kirjastoa, jotka sinun kannattaa tuntea: +* **[Matplotlib](https://matplotlib.org/)** on kirjasto datan visualisointiin ja kuvaajien piirtämiseen +* **[SciPy](https://www.scipy.org/)** on kirjasto, jossa on lisätieteellisiä funktioita. Olemme törmänneet tähän kirjastoon jo puhuttaessa todennäköisyydestä ja tilastotieteestä + +Tässä on koodinpätkä, jonka tyypillisesti käytät näiden kirjastojen tuomiseksi Python-ohjelman alkuun: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt -from scipy import ... # you need to specify exact sub-packages that you need +from scipy import ... # sinun täytyy määrittää tarkat alipaketit, joita tarvitset ``` -Pandas-kirjasto keskittyy muutamaan peruskäsitteeseen. +Pandas-kirjasto perustuu muutamaan peruskäsitteeseen. -### Sarjat (Series) +### Series -**Sarja** on arvojen jono, joka muistuttaa listaa tai numpy-taulukkoa. Suurin ero on, että sarjalla on myös **indeksi**, ja kun teemme operaatioita sarjoilla (esim. lisäämme niitä), indeksi otetaan huomioon. Indeksi voi olla yksinkertainen kokonaisluku (se on oletusindeksi, kun luodaan sarja listasta tai taulukosta), tai sillä voi olla monimutkainen rakenne, kuten aikaväli. +**Series** on arvojono, joka on samanlainen kuin lista tai numpy-taulukko. Tärkein ero on, että series sisältää myös **indeksin**, ja kun operoimme serieseillä (esim. lisäämme niitä), indeksi otetaan huomioon. Indeksi voi olla yksinkertainen kokonaislukurivi (tämä on oletuksena kun tehdään series listasta tai taulukosta), tai se voi olla monimutkaisempi rakenne, kuten aikaväli. -> **Huomio**: Mukana olevassa notebookissa [`notebook.ipynb`](notebook.ipynb) on johdantokoodia Pandas-kirjastoon. Tässä esittelemme vain joitakin esimerkkejä, ja olet ehdottomasti tervetullut tutustumaan koko notebookiin. +> **Huom**: On olemassa johdantokoodia Pandasista mukana tulevassa muistikirjassa [`notebook.ipynb`](notebook.ipynb). Tässä esittelemme vain joitain esimerkkejä, mutta olet tervetullut tutustumaan koko muistikirjaan. -Otetaan esimerkki: haluamme analysoida jäätelökioskimme myyntiä. Luodaan sarja myyntilukuja (myytyjen tuotteiden määrä päivittäin) tietylle ajanjaksolle: +Otetaan esimerkki: haluamme analysoida jäätelökauppamme myyntiä. Luodaan sarja myyntilukuja (päivittäinen myytyjen tuotteiden määrä) jollekin aikajaksolle: ```python start_date = "Jan 1, 2020" @@ -64,22 +66,22 @@ print(f"Length of index is {len(idx)}") items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx) items_sold.plot() ``` -![Aikasarjan kuvaaja](../../../../translated_images/fi/timeseries-1.80de678ab1cf727e.webp) +![Aikasarjakuva](../../../../translated_images/fi/timeseries-1.80de678ab1cf727e.webp) -Oletetaan nyt, että järjestämme joka viikko juhlat ystäville, ja otamme juhliin 10 ylimääräistä jäätelöpakkausta. Voimme luoda toisen sarjan, joka on indeksoitu viikoittain, osoittamaan tätä: +Oletetaan, että joka viikko järjestämme kaveriporukalle juhlat, ja otamme ylimääräiset 10 pakettia jäätelöä juhlia varten. Voimme luoda toisen seriesin, jonka indeksi on viikko, näyttämään tämän: ```python additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) ``` -Kun lisäämme kaksi sarjaa yhteen, saamme kokonaismäärän: +Kun lisäämme kaksi seriesiä yhteen, saamme kokonaismäärän: ```python total_items = items_sold.add(additional_items,fill_value=0) total_items.plot() ``` -![Aikasarjan kuvaaja](../../../../translated_images/fi/timeseries-2.aae51d575c55181c.webp) +![Aikasarjakuva](../../../../translated_images/fi/timeseries-2.aae51d575c55181c.webp) -> **Huomio**: Emme käytä yksinkertaista syntaksia `total_items+additional_items`. Jos tekisimme niin, saisimme paljon `NaN` (*Not a Number*) -arvoja tuloksena olevaan sarjaan. Tämä johtuu siitä, että `additional_items`-sarjassa on puuttuvia arvoja joillekin indeksipisteille, ja `NaN`-arvon lisääminen mihin tahansa johtaa `NaN`:iin. Siksi meidän täytyy määrittää `fill_value`-parametri lisäyksen aikana. +> **Huomaa**, ettemme käytä yksinkertaista syntaksia `total_items+additional_items`. Jos käyttäisimme, saisimme paljon `NaN` (*Not a Number*) arvoja tuloksena olevalle seriesille. Tämä johtuu siitä, että `additional_items` -seriesissä puuttuu joitakin indeksejä, ja kun lasketaan yhteen NaN:n kanssa, tuloksena on NaN. Siksi meidän täytyy määrittää `fill_value` -parametri yhteenlaskussa. -Aikasarjojen kanssa voimme myös **resamplata** sarjan eri aikaväleillä. Esimerkiksi, jos haluamme laskea keskimääräisen myyntimäärän kuukausittain, voimme käyttää seuraavaa koodia: +Aikasarjojen kanssa voimme myös **uudelleenotantaa (resample)** seriesia eri aikaväleillä. Esimerkiksi, jos haluamme laskea kuukausittaiset keskimääräiset myyntimäärät, voimme käyttää seuraavaa koodia: ```python monthly = total_items.resample("1M").mean() ax = monthly.plot(kind='bar') @@ -88,7 +90,7 @@ ax = monthly.plot(kind='bar') ### DataFrame -DataFrame on pohjimmiltaan kokoelma sarjoja, joilla on sama indeksi. Voimme yhdistää useita sarjoja DataFrameksi: +DataFrame on pohjimmiltaan useiden samankaltaisten indeksoitujen seriesien kokoelma. Voimme yhdistää useita serieseitä yhdeksi DataFrameksi: ```python a = pd.Series(range(1,10)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) @@ -100,7 +102,7 @@ Tämä luo vaakasuoran taulukon, joka näyttää tältä: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 1 | I | like | to | use | Python | and | Pandas | very | much | -Voimme myös käyttää sarjoja sarakkeina ja määrittää sarakenimet sanakirjan avulla: +Voimme myös käyttää Serieseitä sarakkeina, ja nimetä sarakkeet sanakirjan avulla: ```python df = pd.DataFrame({ 'A' : a, 'B' : b }) ``` @@ -118,39 +120,39 @@ Tämä antaa meille taulukon, joka näyttää tältä: | 7 | 8 | very | | 8 | 9 | much | -**Huomio**: Voimme myös saada tämän taulukon asettelun transponoimalla edellisen taulukon, esimerkiksi kirjoittamalla +**Huomaa**, että voimme myös saada tämän taulukon muodon kääntämällä edellisen taulukon, esimerkiksi kirjoittamalla ```python -df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' }) ``` -Tässä `.T` tarkoittaa DataFramen transponointia, eli rivien ja sarakkeiden vaihtamista, ja `rename`-operaatio mahdollistaa sarakkeiden uudelleennimeämisen vastaamaan edellistä esimerkkiä. +Tästä `.T` tarkoittaa DataFramen transponointia, eli rivien ja sarakkeiden vaihtamista, ja `rename` operaatiolla voimme nimetä sarakkeet uudelleen vastaamaan edellistä esimerkkiä. -Tässä on muutamia tärkeimpiä operaatioita, joita voimme suorittaa DataFrameille: +Tässä muutamia tärkeimpiä operaatioita, joita voimme tehdä DataFrameillä: -**Sarakkeiden valinta**. Voimme valita yksittäisiä sarakkeita kirjoittamalla `df['A']` - tämä operaatio palauttaa sarjan. Voimme myös valita osajoukon sarakkeista toiseen DataFrameen kirjoittamalla `df[['B','A']]` - tämä palauttaa toisen DataFramen. +**Sarakkeiden valinta**. Voimme valita yksittäisen sarakkeen kirjoittamalla `df['A']` - tämä operaatio palauttaa Seriesin. Voimme myös valita osan sarakkeista toiseksi DataFrameksi kirjoittamalla `df[['B','A']]` - tämä palauttaa toisen DataFramen. -**Rivien suodatus** tiettyjen kriteerien perusteella. Esimerkiksi, jos haluamme jättää vain rivit, joissa sarakkeen `A` arvo on suurempi kuin 5, voimme kirjoittaa `df[df['A']>5]`. +**Suodattaminen** vain tiettyjen rivien perusteella kriteerillä. Esimerkiksi, jos haluamme jättää vain ne rivit, joiden sarakkeen `A` arvo on suurempi kuin 5, voimme kirjoittaa `df[df['A']>5]`. -> **Huomio**: Suodatuksen toiminta on seuraava. Lauseke `df['A']<5` palauttaa totuusarvosarjan, joka osoittaa, onko lauseke `True` vai `False` kullekin alkuperäisen sarjan `df['A']` elementille. Kun totuusarvosarjaa käytetään indeksinä, se palauttaa DataFramen rivien osajoukon. Siksi ei ole mahdollista käyttää mielivaltaisia Pythonin totuuslausekkeita, esimerkiksi kirjoittamalla `df[df['A']>5 and df['A']<7]` olisi väärin. Sen sijaan sinun tulisi käyttää erityistä `&`-operaatiota totuusarvosarjoille, kirjoittamalla `df[(df['A']>5) & (df['A']<7)]` (*sulkeet ovat tässä tärkeitä*). +> **Huom**: Suodatus toimii seuraavasti. Lauseke `df['A']<5` palauttaa boole-tyyppisen seriesin, joka ilmaisee onko ehto `True` vai `False` kullekin alkuperäisen seriesin `df['A']` alkiolle. Kun tätä boole-seriesiä käytetään indeksinä, se palauttaa DataFramesta niiden rivien osajoukon, joille ehto on tosi. Siksi ei ole mahdollista käyttää mielivaltaista Pythonin boolean lauseketta, esimerkiksi `df[df['A']>5 and df['A']<7]` olisi virheellinen. Sen sijaan pitää käyttää erityistä `&` operaatiota boolean-seriesien välillä, kirjoittaen `df[(df['A']>5) & (df['A']<7)]` (*sulkeet ovat tärkeitä tässä*). -**Uusien laskettavien sarakkeiden luominen**. Voimme helposti luoda uusia laskettavia sarakkeita DataFrameille käyttämällä intuitiivisia lausekkeita, kuten tämä: +**Uusien laskettavien sarakkeiden luominen**. Voimme helposti luoda uusia laskettavia sarakkeita DataFrameemme intuitiivisella lausekkeella kuten: ```python df['DivA'] = df['A']-df['A'].mean() ``` -Tämä esimerkki laskee sarakkeen A poikkeaman sen keskiarvosta. Mitä tässä oikeastaan tapahtuu, on se, että laskemme sarjan ja sitten määritämme tämän sarjan vasemmalle puolelle, luoden uuden sarakkeen. Siksi emme voi käyttää operaatioita, jotka eivät ole yhteensopivia sarjojen kanssa, esimerkiksi alla oleva koodi on väärin: +Tämä esimerkki laskee sarakkeen A poikkeaman sen keskiarvosta. Käytännössä laskemme seriesin ja asetamme sen vasemmalle puolelle, jolloin syntyy uusi sarake. Tämän vuoksi emme voi käyttää operaatioita, jotka eivät ole yhteensopivia seriesin kanssa, esimerkiksi alla oleva koodi on väärin: ```python -# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" -df['LenB'] = len(df['B']) # <- Wrong result +# Väärä koodi -> df['ADescr'] = "Low" jos df['A'] < 5 muuten "Hi" +df['LenB'] = len(df['B']) # <- Väärä tulos ``` -Viimeinen esimerkki, vaikka se on syntaktisesti oikein, antaa meille väärän tuloksen, koska se määrittää sarjan `B` pituuden kaikille sarakkeen arvoille, eikä yksittäisten elementtien pituutta, kuten tarkoitimme. +Viimeinen esimerkki, vaikka syntaksillisesti oikea, antaa väärän tuloksen, koska se asettaa sarakkeen B pituuden arvoon kaikille riveille, eikä yksittäisten alkioiden pituuksiin kuten tarkoitimme. -Jos meidän täytyy laskea monimutkaisia lausekkeita, voimme käyttää `apply`-funktiota. Viimeinen esimerkki voidaan kirjoittaa seuraavasti: +Jos tarvitsemme monimutkaisempia laskutoimituksia, voimme käyttää `apply` funktiota. Viimeinen esimerkki voidaan kirjoittaa näin: ```python df['LenB'] = df['B'].apply(lambda x : len(x)) -# or +# tai df['LenB'] = df['B'].apply(len) ``` -Yllä olevien operaatioiden jälkeen meillä on seuraava DataFrame: +Operaatioiden jälkeen päädymme seuraavaan DataFrameen: | | A | B | DivA | LenB | | --- | --- | ------ | ---- | ---- | @@ -164,22 +166,22 @@ Yllä olevien operaatioiden jälkeen meillä on seuraava DataFrame: | 7 | 8 | very | 3.0 | 4 | | 8 | 9 | much | 4.0 | 4 | -**Rivien valinta numeroiden perusteella** voidaan tehdä käyttämällä `iloc`-rakennetta. Esimerkiksi, jos haluamme valita ensimmäiset 5 riviä DataFramesta: +**Rivien valinta numeroiden perusteella** onnistuu käyttämällä `iloc`-rakennetta. Esimerkiksi, valitaksemme ensimmäiset 5 riviä DataFramesta: ```python df.iloc[:5] ``` -**Ryhmittely** on usein käytetty tapa saada tuloksia, jotka muistuttavat *pivot-taulukoita* Excelissä. Oletetaan, että haluamme laskea sarakkeen `A` keskiarvon jokaiselle annetulle `LenB`-arvolle. Voimme ryhmitellä DataFramen `LenB`-sarakkeen mukaan ja kutsua `mean`-funktiota: +**Ryhmittely** on yleinen tapa saada vastaava tulos kuin Excelin *pivot-taulukot*. Oletetaan, että haluamme laskea sarakkeen `A` keskiarvon kullekin arvolle sarakkeessa `LenB`. Silloin voimme ryhmitellä DataFramen `LenB` mukaan ja kutsua `mean`-funktiota: ```python df.groupby(by='LenB')[['A','DivA']].mean() ``` -Jos meidän täytyy laskea keskiarvo ja elementtien lukumäärä ryhmässä, voimme käyttää monimutkaisempaa `aggregate`-funktiota: +Jos tarvitsemme sekä keskiarvon että ryhmän jäsenten lukumäärän, voimme käyttää monimutkaisempaa `aggregate`-funktiota: ```python df.groupby(by='LenB') \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) ``` -Tämä antaa meille seuraavan taulukon: +Tämä antaa seuraavan taulukon: | LenB | Count | Mean | | ---- | ----- | -------- | @@ -190,92 +192,97 @@ Tämä antaa meille seuraavan taulukon: | 6 | 2 | 6.000000 | ### Datan hankinta -Olemme nähneet, kuinka helppoa on luoda Series- ja DataFrame-objekteja Pythonilla. Kuitenkin data tulee yleensä tekstitiedostona tai Excel-taulukkona. Onneksi Pandas tarjoaa yksinkertaisen tavan ladata dataa levyltä. Esimerkiksi CSV-tiedoston lukeminen on yhtä helppoa kuin tämä: + + +Olemme nähneet, kuinka helppoa on rakentaa Series- ja DataFrame-rakenteita Python-olioista. Kuitenkin data tulee yleensä tekstimuotoisena tiedostona tai Excel-taulukkona. Onneksi Pandas tarjoaa meille yksinkertaisen tavan ladata dataa levyltä. Esimerkiksi CSV-tiedoston lukeminen on näin yksinkertaista: ```python df = pd.read_csv('file.csv') ``` -Näemme lisää esimerkkejä datan lataamisesta, mukaan lukien sen hakeminen ulkoisilta verkkosivuilta, "Haaste"-osiossa. +Näemme lisää esimerkkejä datan lataamisesta, mukaan lukien datan hakeminen ulkoisilta verkkosivuilta, kohdassa "Haaste" + ### Tulostaminen ja Visualisointi -Data Scientistin täytyy usein tutkia dataa, joten on tärkeää pystyä visualisoimaan sitä. Kun DataFrame on suuri, haluamme monesti varmistaa, että kaikki toimii oikein tulostamalla ensimmäiset rivit. Tämä onnistuu kutsumalla `df.head()`. Jos suoritat sen Jupyter Notebookissa, se tulostaa DataFramen siistissä taulukkomuodossa. +Data scientistin täytyy usein tutkia dataa, joten on tärkeää pystyä visualisoimaan sitä. Kun DataFrame on suuri, monesti haluamme vain varmistaa, että teemme kaiken oikein tulostamalla muutaman ensimmäisen rivin. Tämä onnistuu kutsumalla `df.head()`. Jos ajat sen Jupyter Notebookissa, DataFrame tulostuu siistissä taulukkomuodossa. -Olemme myös nähneet `plot`-funktion käytön tiettyjen sarakkeiden visualisointiin. Vaikka `plot` on erittäin hyödyllinen moniin tehtäviin ja tukee monia eri kaaviotyyppejä `kind=`-parametrin avulla, voit aina käyttää raakaa `matplotlib`-kirjastoa monimutkaisempien kaavioiden luomiseen. Käsittelemme datan visualisointia yksityiskohtaisesti erillisissä kurssin osioissa. +Olemme myös nähneet `plot`-funktion käytön joidenkin sarakkeiden visualisoimiseen. Vaikka `plot` on monissa tehtävissä erittäin hyödyllinen ja tukee monia erilaisia kaaviotyyppejä parametrilla `kind=`, voit aina käyttää raakaa `matplotlib`-kirjastoa monimutkaisempien asioiden piirtämiseen. Käsittelemme datan visualisointia tarkemmin erillisissä kurssin osioissa. -Tämä yleiskatsaus kattaa Pandasin tärkeimmät käsitteet, mutta kirjasto on erittäin monipuolinen, eikä sen käyttömahdollisuuksilla ole rajoja! Käytetään nyt tätä tietoa tietyn ongelman ratkaisemiseen. +Tämä yleiskatsaus kattaa Pandasin tärkeimmät käsitteet, mutta kirjasto on hyvin laaja, eikä rajaa sille, mitä voit tehdä, ole! Sovelletaanpa nyt tätä tietoa ratkomaan konkreettinen ongelma. ## 🚀 Haaste 1: COVID-leviämisen analysointi -Ensimmäinen ongelma, johon keskitymme, on COVID-19:n epidemian leviämisen mallintaminen. Tätä varten käytämme dataa tartunnan saaneiden henkilöiden määrästä eri maissa, jonka tarjoaa [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) [Johns Hopkins University](https://jhu.edu/):sta. Datasetti on saatavilla [tässä GitHub-repositoriossa](https://github.com/CSSEGISandData/COVID-19). +Ensimmäisenä ongelmana keskitymme COVID-19-epidemian leviämisen mallintamiseen. Tätä varten käytämme tietoa tartunnan saaneiden määrästä eri maissa, jota tarjoaa [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) [Johns Hopkins Universityssä](https://jhu.edu/). Aineisto on saatavilla [tässä GitHub-repositoriossa](https://github.com/CSSEGISandData/COVID-19). -Koska haluamme demonstroida, miten dataa käsitellään, kutsumme sinut avaamaan [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ja lukemaan sen alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun. +Koska haluamme näyttää, miten dataa käsitellään, kutsumme sinut avaamaan [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ja lukemaan sen alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle lopuksi. -![COVID Leviäminen](../../../../translated_images/fi/covidspread.f3d131c4f1d260ab.webp) +![COVID Spread](../../../../translated_images/fi/covidspread.f3d131c4f1d260ab.webp) -> Jos et tiedä, miten suorittaa koodia Jupyter Notebookissa, tutustu [tähän artikkeliin](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> Jos et tiedä, miten koodi ajetaan Jupyter Notebookissa, tutustu [tähän artikkeliin](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -## Työskentely jäsentämättömän datan kanssa +## Työskentely strukturoimattoman datan kanssa -Vaikka data tulee usein taulukkomuodossa, joissakin tapauksissa meidän täytyy käsitellä vähemmän jäsenneltyä dataa, kuten tekstiä tai kuvia. Tällöin, jotta voimme soveltaa edellä nähtyjä datankäsittelytekniikoita, meidän täytyy jotenkin **jäsentää** data. Tässä muutamia esimerkkejä: +Vaikka data tulee hyvin usein taulukkomuodossa, joissakin tapauksissa meidän täytyy käsitellä vähemmän strukturoitua dataa, kuten tekstiä tai kuvia. Tässä tapauksessa voidaksemme soveltaa yllä näkemäämme datankäsittelyä, meidän täytyy jotenkin **uoria** strukturoitua dataa. Tässä muutama esimerkki: -* Avainsanojen poimiminen tekstistä ja niiden esiintymistiheyden tarkastelu -* Neuroverkkojen käyttö tiedon poimimiseen kuvassa olevista objekteista -* Tunteiden analysointi videokameran syötteestä +* Avainsanojen uuttaminen tekstistä ja niiden esiintymistiheyden tarkastelu +* Neuroverkkojen käyttö objektien tiedon uuttamiseen kuvista +* Tietojen saaminen ihmisten tunteista videokuvasta ## 🚀 Haaste 2: COVID-tutkimuspapereiden analysointi -Tässä haasteessa jatkamme COVID-pandemian aihetta ja keskitymme tieteellisten papereiden käsittelyyn aiheesta. [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) sisältää yli 7000 (kirjoitushetkellä) paperia COVID:sta, saatavilla metadatan ja tiivistelmien kanssa (ja noin puolessa tapauksista myös koko teksti). +Tässä haasteessa jatkamme COVID-pandemian aiheen parissa ja keskitymme tieteellisten tutkimuspapereiden käsittelyyn. On olemassa [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), jossa on yli 7000 (kirjoitushetkellä) COVIDiin liittyvää paperia metatiedon ja tiivistelmien kanssa (ja noin puolella niistä on myös kokoteksti saatavilla). -Täydellinen esimerkki tämän datasetin analysoinnista [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) -kognitiivisen palvelun avulla on kuvattu [tässä blogikirjoituksessa](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Keskustelemme yksinkertaistetusta versiosta tästä analyysistä. +Täydellinen esimerkki tästä aineistosta analysoinnista käyttäen [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitiivista palvelua on kuvattu [tässä blogikirjoituksessa](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Käymme läpi yksinkertaistetun version tästä analyysistä. -> **NOTE**: Emme tarjoa datasetin kopiota osana tätä repositoriota. Sinun täytyy ensin ladata [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) tiedosto [tästä Kaggle-datasetistä](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Rekisteröityminen Kaggleen saattaa olla tarpeen. Voit myös ladata datasetin ilman rekisteröitymistä [täältä](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mutta se sisältää kaikki kokotekstit metadatatiedoston lisäksi. +> **HUOMIO**: Emme tarjoa tätä aineistoa kopiona osana tätä repositoriota. Sinun täytyy ensin ladata [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) tiedosto [tästä Kaggle-datasta](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Kaggle-tilin luonti saattaa olla tarpeen. Voit myös ladata aineiston rekisteröitymättä [täältä](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mutta sieltä saat kaikki kokotekstit lisäksi metadata-tiedostoon. -Avaa [`notebook-papers.ipynb`](notebook-papers.ipynb) ja lue se alusta loppuun. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle loppuun. +Avaa [`notebook-papers.ipynb`](notebook-papers.ipynb) ja lue se kokonaan. Voit myös suorittaa soluja ja tehdä joitakin haasteita, jotka olemme jättäneet sinulle lopuksi. -![Covid Lääketieteellinen Hoito](../../../../translated_images/fi/covidtreat.b2ba59f57ca45fbc.webp) +![Covid Medical Treatment](../../../../translated_images/fi/covidtreat.b2ba59f57ca45fbc.webp) ## Kuvadatan käsittely -Viime aikoina on kehitetty erittäin tehokkaita AI-malleja, jotka mahdollistavat kuvien ymmärtämisen. Monet tehtävät voidaan ratkaista esikoulutettujen neuroverkkojen tai pilvipalveluiden avulla. Esimerkkejä: +Viime aikoina on kehitetty hyvin tehokkaita tekoälymalleja, jotka antavat meille ymmärrystä kuvista. Monia tehtäviä voidaan ratkaista valmiiksi koulutetuilla neuroverkoilla tai pilvipalveluilla. Esimerkkejä ovat: -* **Kuvien luokittelu**, joka auttaa kategorisoimaan kuvan ennalta määriteltyihin luokkiin. Voit helposti kouluttaa omia kuvien luokittelijoita palveluilla, kuten [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum). -* **Objektien tunnistus** kuvassa. Palvelut, kuten [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), voivat tunnistaa useita yleisiä objekteja, ja voit kouluttaa [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) -mallin tunnistamaan tiettyjä kiinnostavia objekteja. -* **Kasvojen tunnistus**, mukaan lukien ikä, sukupuoli ja tunteiden tunnistus. Tämä voidaan tehdä [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) avulla. +* **Kuvien luokittelu**, joka auttaa luokittelemaan kuvan ennalta määriteltyihin luokkiin. Voit helposti kouluttaa oman kuvien luokittelumallisi palveluilla kuten [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Objektien havaitseminen**, jolla tunnistetaan erilaisia objekteja kuvasta. Palvelut kuten [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) voivat tunnistaa useita yleisiä objekteja, ja voit kouluttaa [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) mallin tunnistamaan erityisiä kiinnostuksen kohteita. +* **Kasvojen havaitseminen**, mukaan lukien iän, sukupuolen ja tunteiden tunnistus. Tämä onnistuu [Face API:n](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) avulla. -Kaikki nämä pilvipalvelut voidaan kutsua [Python SDK:iden](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) avulla, ja ne voidaan helposti sisällyttää datan tutkimustyöhön. +Näitä pilvipalveluja voidaan kutsua [Python SDK:iden](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) kautta, joten ne voidaan helposti integroida data-analyysityöhön. Tässä muutamia esimerkkejä kuvadatalähteiden tutkimisesta: -* Blogikirjoituksessa [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tutkimme Instagram-kuvia yrittäen ymmärtää, mikä saa ihmiset antamaan enemmän tykkäyksiä kuvalle. Ensin poimimme mahdollisimman paljon tietoa kuvista [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) avulla, ja sitten käytämme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) -palvelua tulkittavan mallin rakentamiseen. -* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) -työpajassa käytämme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) -palvelua poimimaan tunteita tapahtumien valokuvista, jotta voimme yrittää ymmärtää, mikä tekee ihmiset onnellisiksi. +* Blogikirjoituksessa [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tutkimme Instagram-kuvia ja yritämme ymmärtää, mikä saa ihmiset antamaan enemmän tykkäyksiä kuvalle. Ensin uimme mahdollisimman paljon tietoa kuvista käyttäen [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) -palvelua, ja sitten käytämme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) rakentamaan tulkinnanvaraista mallia. +* [Facial Studies Workshopissa](https://github.com/CloudAdvocacy/FaceStudies) käytämme [Face API:a](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) uimaan ihmisten tunteita valokuvista tapahtumista, jotta voisimme yrittää ymmärtää, mikä tekee ihmiset onnellisiksi. ## Yhteenveto -Olipa sinulla jo jäsenneltyä tai jäsentämätöntä dataa, Pythonilla voit suorittaa kaikki datankäsittelyyn ja ymmärtämiseen liittyvät vaiheet. Se on todennäköisesti joustavin tapa datankäsittelyyn, ja siksi suurin osa data-analyytikoista käyttää Pythonia ensisijaisena työkalunaan. Pythonin syvällinen oppiminen on luultavasti hyvä idea, jos olet vakavissasi datatieteen urasi suhteen! +Olipa sinulla jo strukturoitua tai strukturoimatonta dataa, Pythonin avulla voit suorittaa kaikki datankäsittelyyn ja ymmärtämiseen liittyvät vaiheet. Se on luultavasti joustavin tapa datankäsittelyyn, ja siksi suurin osa data scientistien käyttää Pythonia ensisijaisena työkalunaan. Pythonin opetteleminen perusteellisesti on hyvä idea, jos olet tosissasi data science -matkallasi! -## [Luennon jälkeinen kysely](https://ff-quizzes.netlify.app/en/ds/quiz/13) +## [Luentojälkeinen tietovisa](https://ff-quizzes.netlify.app/en/ds/quiz/13) -## Kertaus ja itseopiskelu +## Kertaus & Itsestä oppiminen **Kirjat** * [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) **Verkkoresurssit** -* Virallinen [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) -opas -* [Dokumentaatio Pandas-visualisoinnista](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) +* Virallinen [10 minuuttia Pandasiin](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) -opetus +* [Dokumentaatio Pandas Visualisoinnista](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) **Pythonin oppiminen** -* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) -* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) -oppimispolku [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -sivustolla +* [Opi Pythonia hauskalla tavalla Turtle Graphicsin ja Fraktaalien avulla](https://github.com/shwars/pycourse) +* [Ota ensiaskeleet Pythonissa](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Opintopolku Microsoft Learnissä (http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) ## Tehtävä -[Suorita yksityiskohtaisempi datatutkimus yllä oleville haasteille](assignment.md) +[Suorita tarkempi datatutkimus yllä oleviin haasteisiin](assignment.md) -## Tekijät +## Tekijänoikeudet -Tämän oppitunnin on kirjoittanut ♥️:lla [Dmitry Soshnikov](http://soshnikov.com) +Tämä oppitunti on kirjoitettu ♥️ kirjoittanut [Dmitry Soshnikov](http://soshnikov.com) --- -**Vastuuvapauslauseke**: -Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä. \ No newline at end of file + +**Vastuuvapauslauseke**: +Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista. + \ No newline at end of file diff --git a/translations/no/.co-op-translator.json b/translations/no/.co-op-translator.json index f06e95f2..2d009f9b 100644 --- a/translations/no/.co-op-translator.json +++ b/translations/no/.co-op-translator.json @@ -96,8 +96,8 @@ "language_code": "no" }, "2-Working-With-Data/07-python/README.md": { - "original_hash": "7bfec050f4717dcc2dfd028aca9d21f3", - "translation_date": "2025-09-06T15:47:35+00:00", + "original_hash": "fb29e3e0be486fe8f15d50bdade79eb1", + "translation_date": "2026-07-17T18:25:57+00:00", "source_file": "2-Working-With-Data/07-python/README.md", "language_code": "no" }, diff --git a/translations/no/2-Working-With-Data/07-python/README.md b/translations/no/2-Working-With-Data/07-python/README.md index b487d227..4ef88573 100644 --- a/translations/no/2-Working-With-Data/07-python/README.md +++ b/translations/no/2-Working-With-Data/07-python/README.md @@ -1,62 +1,62 @@ -# Arbeide med Data: Python og Pandas-biblioteket +# Arbeide med data: Python og Pandas-biblioteket | ![ Sketchnote av [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | | :-------------------------------------------------------------------------------------------------------: | -| Arbeide med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ | +| Arbeide med Python - _Sketchnote av [@nitya](https://twitter.com/nitya)_ | -[![Introduksjonsvideo](../../../../translated_images/no/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) +[![Intro Video](../../../../translated_images/no/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y) -Mens databaser tilbyr svært effektive måter å lagre data og hente dem ved hjelp av spørringsspråk, er den mest fleksible måten å behandle data på å skrive ditt eget program for å manipulere data. I mange tilfeller vil en databasespørring være en mer effektiv løsning. Men i noen tilfeller, når mer kompleks databehandling er nødvendig, kan det ikke enkelt gjøres med SQL. -Databehandling kan programmeres i hvilket som helst programmeringsspråk, men det finnes visse språk som er mer tilpasset arbeid med data. Dataforskere foretrekker vanligvis ett av følgende språk: +Selv om databaser tilbyr veldig effektive måter å lagre data på og forespørre dem med spørringsspråk, er den mest fleksible måten å behandle data på å skrive ditt eget program for å manipulere dataene. I mange tilfeller ville en databaseforespørsel være en mer effektiv måte. Men i noen tilfeller når mer kompleks databehandling trengs, kan det ikke gjøres enkelt med SQL. +Databehandling kan programmeres i hvilket som helst programmeringsspråk, men det finnes visse språk som er på et høyere nivå med hensyn til arbeid med data. Dataforskere foretrekker vanligvis ett av følgende språk: -* **[Python](https://www.python.org/)**, et allsidig programmeringsspråk, som ofte anses som et av de beste alternativene for nybegynnere på grunn av sin enkelhet. Python har mange tilleggslibrier som kan hjelpe deg med å løse praktiske problemer, som å hente data fra en ZIP-fil eller konvertere et bilde til gråtoner. I tillegg til dataforskning brukes Python også ofte til webutvikling. -* **[R](https://www.r-project.org/)** er en tradisjonell verktøykasse utviklet med statistisk databehandling i tankene. Det inneholder også et stort bibliotek (CRAN), som gjør det til et godt valg for databehandling. R er imidlertid ikke et allsidig programmeringsspråk og brukes sjelden utenfor dataforskningsområdet. -* **[Julia](https://julialang.org/)** er et annet språk utviklet spesielt for dataforskning. Det er ment å gi bedre ytelse enn Python, noe som gjør det til et flott verktøy for vitenskapelige eksperimenter. +* **[Python](https://www.python.org/)**, et generelt programmeringsspråk, som ofte regnes som ett av de beste valgene for nybegynnere på grunn av sin enkelhet. Python har mange tilleggspakker som kan hjelpe deg med å løse mange praktiske problemer, som å hente ut data fra ZIP-arkiv eller konvertere bilder til gråtoner. I tillegg til data science brukes Python også ofte til webutvikling. +* **[R](https://www.r-project.org/)** er en tradisjonell verktøykasse utviklet med statistisk databehandling i tankene. Det inneholder også et stort bibliotek av pakker (CRAN), noe som gjør det til et godt valg for databehandling. R er imidlertid ikke et generelt programmeringsspråk, og brukes sjelden utenfor data science-området. +* **[Julia](https://julialang.org/)** er et annet språk utviklet spesielt for data science. Det er ment å gi bedre ytelse enn Python, noe som gjør det til et flott verktøy for vitenskapelig eksperimentering. -I denne leksjonen vil vi fokusere på å bruke Python for enkel databehandling. Vi antar grunnleggende kjennskap til språket. Hvis du ønsker en dypere innføring i Python, kan du se på en av følgende ressurser: +I denne leksjonen vil vi fokusere på å bruke Python til enkel databehandling. Vi forutsetter grunnleggende kjennskap til språket. Hvis du ønsker en dypere introduksjon til Python, kan du se på en av følgende ressurser: -* [Lær Python på en morsom måte med Turtle Graphics og Fractals](https://github.com/shwars/pycourse) - GitHub-basert introduksjonskurs i Python-programmering +* [Lær Python på en morsom måte med Turtle Graphics og Fraktaler](https://github.com/shwars/pycourse) - GitHub-basert rask innføringskurs i Python-programmering * [Ta dine første steg med Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) -Data kan komme i mange former. I denne leksjonen vil vi se på tre former for data - **tabulære data**, **tekst** og **bilder**. +Data kan komme i mange former. I denne leksjonen vil vi se på tre former for data – **tabulære data**, **tekst** og **bilder**. -Vi vil fokusere på noen få eksempler på databehandling, i stedet for å gi deg en fullstendig oversikt over alle relaterte biblioteker. Dette vil gi deg en idé om hva som er mulig, og gi deg forståelse for hvor du kan finne løsninger på dine problemer når du trenger dem. +Vi vil fokusere på noen få eksempler på databehandling, i stedet for å gi en full oversikt over alle relaterte biblioteker. Dette vil la deg få hovedideen om hva som er mulig, og gi deg forståelse for hvor du kan finne løsninger på dine problemer når du trenger dem. -> **Det mest nyttige rådet**. Når du trenger å utføre en operasjon på data som du ikke vet hvordan du skal gjøre, prøv å søke etter det på internett. [Stackoverflow](https://stackoverflow.com/) inneholder ofte mange nyttige kodeeksempler i Python for mange typiske oppgaver. +> **Mest nyttige råd**. Når du trenger å utføre en bestemt operasjon på data som du ikke vet hvordan du gjør, prøv å søke etter det på internett. [Stackoverflow](https://stackoverflow.com/) inneholder vanligvis mange nyttige kodeeksempler i Python for mange typiske oppgaver. -## [Quiz før leksjonen](https://ff-quizzes.netlify.app/en/ds/quiz/12) +## [For-forelesningsquiz](https://ff-quizzes.netlify.app/en/ds/quiz/12) -## Tabulære data og Dataframes +## Tabulære Data og Dataframes -Du har allerede møtt tabulære data da vi snakket om relasjonsdatabaser. Når du har mye data, og det er lagret i mange forskjellige koblede tabeller, gir det definitivt mening å bruke SQL for å arbeide med det. Men det finnes mange tilfeller der vi har en tabell med data, og vi trenger å få en **forståelse** eller **innsikt** om disse dataene, som fordeling, korrelasjon mellom verdier, osv. Innen dataforskning er det mange tilfeller der vi må utføre noen transformasjoner av de opprinnelige dataene, etterfulgt av visualisering. Begge disse trinnene kan enkelt gjøres med Python. +Du har allerede møtt tabulære data når vi snakket om relasjonsdatabaser. Når du har mye data, og det er inneholdt i mange forskjellige sammenkoblede tabeller, gir det absolutt mening å bruke SQL for å jobbe med det. Men det finnes mange tilfeller hvor vi har en tabell med data, og vi trenger å få en viss **forståelse** eller **innsikt** om disse dataene, som for eksempel fordeling, korrelasjon mellom verdier, osv. I data science finnes det mange tilfeller hvor vi må utføre noen transformasjoner av originaldataene, etterfulgt av visualisering. Begge disse trinnene kan enkelt utføres med Python. -Det finnes to mest nyttige biblioteker i Python som kan hjelpe deg med å håndtere tabulære data: -* **[Pandas](https://pandas.pydata.org/)** lar deg manipulere såkalte **Dataframes**, som er analoge med relasjonstabeller. Du kan ha navngitte kolonner og utføre forskjellige operasjoner på rader, kolonner og dataframes generelt. -* **[Numpy](https://numpy.org/)** er et bibliotek for å arbeide med **tensorer**, dvs. flerdimensjonale **arrays**. Arrays har verdier av samme underliggende type, og det er enklere enn dataframe, men det tilbyr flere matematiske operasjoner og skaper mindre overhead. +Det finnes to mest brukte biblioteker i Python som kan hjelpe deg med å håndtere tabulære data: +* **[Pandas](https://pandas.pydata.org/)** lar deg manipulere såkalte **Dataframes**, som tilsvarer relasjons-tabeller. Du kan ha navngitte kolonner, og utføre forskjellige operasjoner på rader, kolonner og dataframes generelt. +* **[Numpy](https://numpy.org/)** er et bibliotek for arbeid med **tensorer**, dvs. flerdimensjonale **arrays**. Array har verdier av samme underliggende type, og det er enklere enn dataframe, men tilbyr flere matematiske operasjoner og skaper mindre overhead. Det finnes også et par andre biblioteker du bør kjenne til: -* **[Matplotlib](https://matplotlib.org/)** er et bibliotek som brukes til datavisualisering og graftegning -* **[SciPy](https://www.scipy.org/)** er et bibliotek med noen ekstra vitenskapelige funksjoner. Vi har allerede kommet over dette biblioteket da vi snakket om sannsynlighet og statistikk +* **[Matplotlib](https://matplotlib.org/)** er et bibliotek som brukes til datavisualisering og plotting av grafer +* **[SciPy](https://www.scipy.org/)** er et bibliotek med noen ekstra vitenskapelige funksjoner. Vi har allerede støtt på dette biblioteket når vi snakket om sannsynlighet og statistikk -Her er et stykke kode som du vanligvis vil bruke for å importere disse bibliotekene i begynnelsen av ditt Python-program: +Her er en kodebit som du typisk vil bruke for å importere disse bibliotekene i starten av Python-programmet ditt: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt -from scipy import ... # you need to specify exact sub-packages that you need +from scipy import ... # du må spesifisere nøyaktige underpakker som du trenger ``` Pandas er sentrert rundt noen få grunnleggende konsepter. ### Series -**Series** er en sekvens av verdier, lik en liste eller numpy-array. Den største forskjellen er at series også har en **indeks**, og når vi opererer på series (f.eks. legger dem sammen), tas indeksen med i betraktning. Indeksen kan være så enkel som et heltall radnummer (det er standardindeksen når man oppretter en series fra en liste eller array), eller den kan ha en kompleks struktur, som et datointervall. +**Series** er en sekvens av verdier, lik en liste eller numpy-array. Hovedforskjellen er at en series også har en **indeks**, og når vi utfører operasjoner på serier (f.eks. legger dem sammen), tas indeksen med i betraktningen. Indeksen kan være så enkel som heltallsradnummer (det er indeksen som brukes som standard når en series lages fra liste eller array), eller den kan ha en kompleks struktur, som et dato-interval. -> **Merk**: Det finnes noe innledende Pandas-kode i den medfølgende notatboken [`notebook.ipynb`](notebook.ipynb). Vi skisserer bare noen av eksemplene her, og du er definitivt velkommen til å sjekke ut hele notatboken. +> **Merk**: Det finnes noe innledende Pandas-kode i den medfølgende notatboken [`notebook.ipynb`](notebook.ipynb). Vi skisserer bare noen av eksemplene her, og du er absolutt velkommen til å sjekke ut hele notatboken. -Tenk på et eksempel: vi ønsker å analysere salget fra vår iskrembutikk. La oss generere en series med salgstall (antall solgte varer hver dag) for en tidsperiode: +Tenk på et eksempel: vi ønsker å analysere salget til iskremstedet vårt. La oss generere en series av salgstall (antall solgte enheter per dag) for en viss tidsperiode: ```python start_date = "Jan 1, 2020" @@ -68,45 +68,45 @@ items_sold.plot() ``` ![Tidsserieplott](../../../../translated_images/no/timeseries-1.80de678ab1cf727e.webp) -Nå antar vi at vi hver uke arrangerer en fest for venner, og vi tar med oss 10 ekstra pakker med iskrem til festen. Vi kan lage en annen series, indeksert etter uke, for å demonstrere dette: +Nå antar vi at vi hver uke arrangerer et vorspiel for venner, og vi tar med ytterligere 10 pakker iskrem til vorspielet. Vi kan lage en annen series, indeksert etter uke, for å demonstrere det: ```python additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) ``` -Når vi legger sammen to series, får vi totalt antall: +Når vi legger to serier sammen, får vi totalt antall: ```python total_items = items_sold.add(additional_items,fill_value=0) total_items.plot() ``` ![Tidsserieplott](../../../../translated_images/no/timeseries-2.aae51d575c55181c.webp) -> **Merk** at vi ikke bruker enkel syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi fått mange `NaN` (*Not a Number*) verdier i den resulterende serien. Dette skyldes at det mangler verdier for noen av indeksene i `additional_items`-serien, og å legge til `NaN` til noe resulterer i `NaN`. Derfor må vi spesifisere `fill_value`-parameteren under addisjonen. +> **Merk** at vi ikke bruker enkel syntaks `total_items+additional_items`. Hvis vi gjorde det, ville vi fått mange `NaN` (*Not a Number*) verdier i den resulterende serien. Dette er fordi det mangler verdier for noen av indeks-punktene i `additional_items`-serien, og å legge `NaN` til noe som helst resulterer i `NaN`. Derfor må vi spesifisere `fill_value`-parameteren under addisjon. -Med tidsserier kan vi også **resample** serien med forskjellige tidsintervaller. For eksempel, hvis vi ønsker å beregne gjennomsnittlig salgsvolum månedlig, kan vi bruke følgende kode: +Med tidsserier kan vi også **resample** serien med forskjellige tidsintervaller. For eksempel, anta at vi ønsker å beregne gjennomsnittlig salgsmengde månedlig. Vi kan bruke følgende kode: ```python monthly = total_items.resample("1M").mean() ax = monthly.plot(kind='bar') ``` -![Månedlige tidsserie-gjennomsnitt](../../../../translated_images/no/timeseries-3.f3147cbc8c624881.webp) +![Månedlige Tidsserie-Gjennomsnitt](../../../../translated_images/no/timeseries-3.f3147cbc8c624881.webp) ### DataFrame -En DataFrame er i hovedsak en samling av series med samme indeks. Vi kan kombinere flere series sammen til en DataFrame: +En DataFrame er i hovedsak en samling av serier med samme indeks. Vi kan kombinere flere serier sammen til en DataFrame: ```python a = pd.Series(range(1,10)) b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) df = pd.DataFrame([a,b]) ``` -Dette vil lage en horisontal tabell som denne: +Dette vil lage en horisontal tabell som dette: | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 1 | I | like | to | use | Python | and | Pandas | very | much | -Vi kan også bruke Series som kolonner og spesifisere kolonnenavn ved hjelp av en ordbok: +Vi kan også bruke Series som kolonner, og spesifisere kolonnenavn ved å bruke ordbok: ```python df = pd.DataFrame({ 'A' : a, 'B' : b }) ``` -Dette vil gi oss en tabell som denne: +Dette gir oss en tabell som dette: | | A | B | | --- | --- | ------ | @@ -120,39 +120,39 @@ Dette vil gi oss en tabell som denne: | 7 | 8 | very | | 8 | 9 | much | -**Merk** at vi også kan få denne tabelloppsettet ved å transponere den forrige tabellen, f.eks. ved å skrive +**Merk** at vi også kan få denne tabelloppsettet ved å transponere den forrige tabellen, for eksempel ved å skrive ```python -df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' }) ``` -Her betyr `.T` operasjonen med å transponere DataFrame, dvs. bytte rader og kolonner, og `rename`-operasjonen lar oss gi nytt navn til kolonner for å matche det forrige eksemplet. +Her betyr `.T` operasjonen med å transponere DataFrame, dvs. bytte om rader og kolonner, og `rename` operasjonen lar oss gi nytt navn til kolonner for å matche forrige eksempel. Her er noen av de viktigste operasjonene vi kan utføre på DataFrames: -**Kolonnevalg**. Vi kan velge individuelle kolonner ved å skrive `df['A']` - denne operasjonen returnerer en Series. Vi kan også velge et delsett av kolonner til en annen DataFrame ved å skrive `df[['B','A']]` - dette returnerer en annen DataFrame. +**Kolonneutvalg**. Vi kan velge individuelle kolonner ved å skrive `df['A']` - denne operasjonen returnerer en Series. Vi kan også velge et utvalg av kolonner til en annen DataFrame ved å skrive `df[['B','A']]` - dette returnerer en annen DataFrame. -**Filtrering** av kun visse rader basert på kriterier. For eksempel, for å beholde kun rader med kolonne `A` større enn 5, kan vi skrive `df[df['A']>5]`. +**Filtrere** bare visse rader etter kriterier. For eksempel, for å beholde kun rader med kolonne `A` større enn 5, kan vi skrive `df[df['A']>5]`. -> **Merk**: Måten filtrering fungerer på er som følger. Uttrykket `df['A']<5` returnerer en boolsk series, som indikerer om uttrykket er `True` eller `False` for hvert element i den opprinnelige serien `df['A']`. Når boolsk series brukes som indeks, returnerer det et delsett av rader i DataFrame. Derfor er det ikke mulig å bruke vilkårlige Python boolske uttrykk, for eksempel, å skrive `df[df['A']>5 and df['A']<7]` ville være feil. I stedet bør du bruke spesialoperasjonen `&` på boolske serier, ved å skrive `df[(df['A']>5) & (df['A']<7)]` (*parenteser er viktige her*). +> **Merk**: Måten filtrering fungerer på er som følger. Uttrykket `df['A']<5` returnerer en boolsk serie, som indikerer om uttrykket er `True` eller `False` for hvert element i den opprinnelige serien `df['A']`. Når en boolsk serie brukes som indeks, returnerer den en delmengde av rader i DataFrame. Derfor er det ikke mulig å bruke vilkårlig Python-boolske uttrykk, for eksempel ville `df[df['A']>5 and df['A']<7]` være feil. I stedet bør du bruke spesialoperasjonen `&` på boolske serier, ved å skrive `df[(df['A']>5) & (df['A']<7)]` (*parentesene er viktige her*). -**Opprette nye beregnbare kolonner**. Vi kan enkelt opprette nye beregnbare kolonner for vår DataFrame ved å bruke intuitive uttrykk som dette: +**Opprette nye beregnede kolonner**. Vi kan enkelt lage nye beregnede kolonner i DataFrame ved å bruke intuitive uttrykk som dette: ```python df['DivA'] = df['A']-df['A'].mean() ``` -Dette eksemplet beregner avviket til A fra gjennomsnittsverdien. Det som faktisk skjer her er at vi beregner en series, og deretter tilordner denne serien til venstre side, og oppretter en ny kolonne. Derfor kan vi ikke bruke operasjoner som ikke er kompatible med series, for eksempel, koden nedenfor er feil: +Dette eksempelet beregner avviket til A fra gjennomsnittsverdien sin. Det som faktisk skjer her, er at vi beregner en series, og så tildeler denne serien til venstresiden og lager en annen kolonne. Derfor kan vi ikke bruke operasjoner som ikke er kompatible med serier, for eksempel koden nedenfor er feil: ```python -# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" -df['LenB'] = len(df['B']) # <- Wrong result +# Feil kode -> df['ADescr'] = "Lav" hvis df['A'] < 5 ellers "Høy" +df['LenB'] = len(df['B']) # <- Feil resultat ``` -Det siste eksemplet, selv om det er syntaktisk korrekt, gir oss feil resultat, fordi det tilordner lengden på serien `B` til alle verdier i kolonnen, og ikke lengden på individuelle elementer som vi hadde tenkt. +Det siste eksempelet er syntaktisk korrekt, men gir oss feil resultat, fordi det tildeler lengden til serien `B` til alle verdiene i kolonnen, og ikke lengden til individuelle elementer som vi hadde til hensikt. -Hvis vi trenger å beregne komplekse uttrykk som dette, kan vi bruke `apply`-funksjonen. Det siste eksemplet kan skrives som følger: +Hvis vi trenger å beregne komplekse uttrykk som dette, kan vi bruke `apply` funksjonen. Det siste eksempelet kan skrives som følger: ```python df['LenB'] = df['B'].apply(lambda x : len(x)) -# or +# eller df['LenB'] = df['B'].apply(len) ``` -Etter operasjonene ovenfor, vil vi ende opp med følgende DataFrame: +Etter operasjonene over, vil vi ende opp med følgende DataFrame: | | A | B | DivA | LenB | | --- | --- | ------ | ---- | ---- | @@ -166,16 +166,16 @@ Etter operasjonene ovenfor, vil vi ende opp med følgende DataFrame: | 7 | 8 | very | 3.0 | 4 | | 8 | 9 | much | 4.0 | 4 | -**Velge rader basert på nummer** kan gjøres ved hjelp av `iloc`-konstruksjonen. For eksempel, for å velge de første 5 radene fra DataFrame: +**Velge rader basert på nummer** kan gjøres ved å bruke `iloc`-konstruktet. For eksempel, for å velge de første 5 radene i DataFrame: ```python df.iloc[:5] ``` -**Gruppering** brukes ofte for å få et resultat som ligner på *pivot-tabeller* i Excel. Anta at vi ønsker å beregne gjennomsnittsverdien av kolonnen `A` for hver gitt verdi av `LenB`. Da kan vi gruppere vår DataFrame etter `LenB`, og kalle `mean`: +**Gruppering** brukes ofte for å få et resultat tilsvarende *pivot-tabeller* i Excel. Anta at vi ønsker å beregne gjennomsnittsverdien av kolonne `A` for hver gitt verdi av `LenB`. Da kan vi gruppere DataFrame på `LenB`, og kalle `mean`: ```python df.groupby(by='LenB')[['A','DivA']].mean() ``` -Hvis vi trenger å beregne gjennomsnitt og antall elementer i gruppen, kan vi bruke en mer kompleks `aggregate`-funksjon: +Hvis vi trenger å beregne både gjennomsnitt og antall elementer i gruppen, kan vi bruke mer kompleks `aggregate`-funksjon: ```python df.groupby(by='LenB') \ .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ @@ -191,93 +191,98 @@ Dette gir oss følgende tabell: | 4 | 3 | 6.333333 | | 6 | 2 | 6.000000 | -### Hente Data -Vi har sett hvor enkelt det er å konstruere Series og DataFrames fra Python-objekter. Imidlertid kommer data vanligvis i form av en tekstfil eller en Excel-tabell. Heldigvis tilbyr Pandas oss en enkel måte å laste inn data fra disk. For eksempel, å lese en CSV-fil er så enkelt som dette: +### Hente data + + +Vi har sett hvor lett det er å konstruere Series og DataFrames fra Python-objekter. Data kommer derimot vanligvis i form av en tekstfil eller en Excel-tabell. Heldigvis tilbyr Pandas oss en enkel måte å laste data fra disk på. For eksempel er det å lese en CSV-fil så enkelt som dette: ```python df = pd.read_csv('file.csv') ``` -Vi vil se flere eksempler på hvordan man laster inn data, inkludert å hente det fra eksterne nettsteder, i "Utfordring"-seksjonen. +Vi vil se flere eksempler på datalasting, inkludert henting fra eksterne nettsteder, i "Challenge"-delen + -### Utskrift og Visualisering +### Utskrift og plotting -En Data Scientist må ofte utforske dataene, og derfor er det viktig å kunne visualisere dem. Når en DataFrame er stor, ønsker vi ofte bare å forsikre oss om at vi gjør alt riktig ved å skrive ut de første radene. Dette kan gjøres ved å kalle `df.head()`. Hvis du kjører det fra Jupyter Notebook, vil det skrive ut DataFrame i en fin tabellform. +En dataforsker må ofte utforske data, derfor er det viktig å kunne visualisere det. Når DataFrame er stor, ønsker man ofte bare å forsikre seg om at alt går riktig for seg ved å skrive ut de første radene. Dette kan gjøres ved å kalle `df.head()`. Hvis du kjører det fra Jupyter Notebook, vil det skrive ut DataFrame på en fin tabellform. -Vi har også sett bruken av `plot`-funksjonen for å visualisere noen kolonner. Selv om `plot` er veldig nyttig for mange oppgaver og støtter mange forskjellige grafetyper via `kind=`-parameteren, kan du alltid bruke det rå `matplotlib`-biblioteket for å lage noe mer komplekst. Vi vil dekke datavisualisering i detalj i separate kursleksjoner. +Vi har også sett bruken av `plot`-funksjonen for å visualisere noen kolonner. Mens `plot` er veldig nyttig for mange oppgaver, og støtter mange forskjellige graf-typer via `kind=`-parameteren, kan du alltid bruke rå `matplotlib`-biblioteket for å plotte noe mer komplekst. Vi vil dekke datavisualisering i detalj i egne kursleksjoner. -Denne oversikten dekker de viktigste konseptene i Pandas, men biblioteket er veldig rikt, og det er ingen grenser for hva du kan gjøre med det! La oss nå bruke denne kunnskapen til å løse spesifikke problemer. +Denne oversikten dekker de viktigste konseptene i Pandas, men biblioteket er veldig rikt, og det finnes ingen grenser for hva du kan gjøre med det! La oss nå bruke denne kunnskapen til å løse et spesifikt problem. -## 🚀 Utfordring 1: Analysere COVID-spredning +## 🚀 Challenge 1: Analysering av COVID-spredning -Det første problemet vi skal fokusere på er modellering av epidemisk spredning av COVID-19. For å gjøre dette, vil vi bruke data om antall smittede individer i forskjellige land, levert av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Datasettet er tilgjengelig i [denne GitHub-repositorien](https://github.com/CSSEGISandData/COVID-19). +Det første problemet vi skal fokusere på er modellering av epidemisk spredning av COVID-19. For å gjøre det, vil vi bruke data om antall smittede i forskjellige land, levert av [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) ved [Johns Hopkins University](https://jhu.edu/). Dataset er tilgjengelig i [denne GitHub-repositorien](https://github.com/CSSEGISandData/COVID-19). -Siden vi ønsker å demonstrere hvordan man håndterer data, inviterer vi deg til å åpne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og lese det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten. +Siden vi vil demonstrere hvordan man håndterer data, inviterer vi deg til å åpne [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) og lese den fra topp til bunn. Du kan også kjøre celler og gjøre noen utfordringer som vi har lagt igjen til deg på slutten. ![COVID-spredning](../../../../translated_images/no/covidspread.f3d131c4f1d260ab.webp) -> Hvis du ikke vet hvordan du kjører kode i Jupyter Notebook, ta en titt på [denne artikkelen](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> Hvis du ikke vet hvordan du kjører kode i Jupyter Notebook, kan du se på [denne artikkelen](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -## Arbeide med Ustrukturert Data +## Arbeid med ustrukturert data -Selv om data ofte kommer i tabellform, må vi i noen tilfeller håndtere mindre strukturert data, for eksempel tekst eller bilder. I slike tilfeller, for å bruke databehandlingsteknikker vi har sett ovenfor, må vi på en eller annen måte **ekstrahere** strukturert data. Her er noen eksempler: +Selv om data svært ofte kommer i tabellform, må vi i noen tilfeller håndtere mindre strukturert data, som for eksempel tekst eller bilder. I slike tilfeller, for å kunne bruke databehandlingsteknikker som vi har sett ovenfor, må vi på en eller annen måte **utvinne** strukturert data. Her er noen eksempler: -* Ekstrahere nøkkelord fra tekst og se hvor ofte disse nøkkelordene vises -* Bruke nevrale nettverk for å hente informasjon om objekter på et bilde -* Få informasjon om følelsene til mennesker på videokamera-feed +* Utvinning av nøkkelord fra tekst, og se hvor ofte disse nøkkelordene dukker opp +* Bruk av nevrale nettverk for å hente informasjon om objekter på bilder +* Hente informasjon om følelser til personer på videostrøm -## 🚀 Utfordring 2: Analysere COVID-artikler +## 🚀 Challenge 2: Analysering av COVID-artikler -I denne utfordringen fortsetter vi med temaet COVID-pandemien og fokuserer på behandling av vitenskapelige artikler om emnet. Det finnes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer enn 7000 (på tidspunktet for skriving) artikler om COVID, tilgjengelig med metadata og sammendrag (og for omtrent halvparten av dem er også fulltekst tilgjengelig). +I denne utfordringen fortsetter vi med temaet COVID-pandemien, og fokuserer på behandling av vitenskapelige artikler om emnet. Det finnes [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) med mer enn 7000 (på tidspunktet for skriving) artikler om COVID, tilgjengelig med metadata og sammendrag (og for omtrent halvparten av dem også full tekst). -Et fullstendig eksempel på analyse av dette datasettet ved bruk av [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitive tjeneste er beskrevet [i denne bloggposten](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet versjon av denne analysen. +Et fullstendig eksempel på analyse av dette datasettet ved bruk av [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitive tjeneste er beskrevet [i dette blogginnlegget](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vi vil diskutere en forenklet versjon av denne analysen. -> **NOTE**: Vi gir ikke en kopi av datasettet som en del av denne repositorien. Du må kanskje først laste ned [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv)-filen fra [dette datasettet på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være nødvendig. Du kan også laste ned datasettet uten registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men det vil inkludere alle fulltekster i tillegg til metadatafilen. +> **MERK**: Vi tilbyr ikke en kopi av datasettet som del av dette repoet. Du må først laste ned [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv)-filen fra [dette datasettet på Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrering hos Kaggle kan være nødvendig. Du kan også laste ned datasettet uten registrering [herfra](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), men da inkluderes alle fulltekster i tillegg til metadatafilen. -Åpne [`notebook-papers.ipynb`](notebook-papers.ipynb) og les det fra topp til bunn. Du kan også kjøre cellene og gjøre noen utfordringer som vi har lagt igjen til deg på slutten. +Åpne [`notebook-papers.ipynb`](notebook-papers.ipynb) og les den fra topp til bunn. Du kan også kjøre celler og gjøre noen utfordringer som vi har lagt igjen til deg på slutten. -![Covid Medisinsk Behandling](../../../../translated_images/no/covidtreat.b2ba59f57ca45fbc.webp) +![Covid medisinsk behandling](../../../../translated_images/no/covidtreat.b2ba59f57ca45fbc.webp) -## Behandling av Bildedata +## Behandling av bildedata -Nylig har svært kraftige AI-modeller blitt utviklet som lar oss forstå bilder. Det finnes mange oppgaver som kan løses ved bruk av forhåndstrente nevrale nettverk eller skytjenester. Noen eksempler inkluderer: +Nylig har det blitt utviklet svært kraftige AI-modeller som lar oss forstå bilder. Det finnes mange oppgaver som kan løses ved bruk av forhåndstrente nevrale nettverk eller skytjenester. Noen eksempler inkluderer: -* **Bildeklassifisering**, som kan hjelpe deg med å kategorisere bildet i en av de forhåndsdefinerte klassene. Du kan enkelt trene dine egne bildeklassifiserere ved bruk av tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) -* **Objektdeteksjon** for å oppdage forskjellige objekter i bildet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan oppdage en rekke vanlige objekter, og du kan trene [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)-modellen til å oppdage spesifikke objekter av interesse. +* **Bildeklassifisering**, som kan hjelpe deg å kategorisere bildet i en av forhåndsdefinerte klasser. Du kan enkelt trene dine egne bildekategorisere ved hjelp av tjenester som [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Objektdeteksjon** for å oppdage forskjellige objekter i bildet. Tjenester som [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kan oppdage en rekke vanlige objekter, og du kan trene en [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)-modell for å oppdage noen spesifikke objekter av interesse. * **Ansiktsdeteksjon**, inkludert alder, kjønn og følelsesdeteksjon. Dette kan gjøres via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). -Alle disse skytjenestene kan kalles ved bruk av [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), og kan derfor enkelt integreres i din datautforskningsarbeidsflyt. +Alle disse skytjenestene kan kalles ved bruk av [Python SDKer](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), og kan dermed lett inkorporeres i din datautforskningsarbeidsflyt. -Her er noen eksempler på utforsking av data fra bildedatakilder: -* I bloggposten [Hvordan lære datavitenskap uten koding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) utforsker vi Instagram-bilder, og prøver å forstå hva som får folk til å gi flere likes til et bilde. Vi ekstraherer først så mye informasjon som mulig fra bilder ved bruk av [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), og bruker deretter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) for å bygge en tolkbar modell. -* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruker vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) for å ekstrahere følelser hos mennesker på fotografier fra arrangementer, for å prøve å forstå hva som gjør folk glade. +Her er noen eksempler på utforsking av data fra bildedata-kilder: +* I blogginnlegget [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) utforsker vi Instagram-bilder, og prøver å forstå hva som gjør at folk gir flere likes til et bilde. Vi henter først ut så mye informasjon som mulig fra bildene ved hjelp av [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), og bruker deretter [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) for å bygge en tolkbar modell. +* I [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) bruker vi [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) for å hente ut følelser blant personer på fotografier fra arrangementer, for å forsøke å forstå hva som gjør folk glade. ## Konklusjon -Enten du allerede har strukturert eller ustrukturert data, kan du ved bruk av Python utføre alle trinn relatert til databehandling og forståelse. Det er sannsynligvis den mest fleksible måten å behandle data på, og det er grunnen til at flertallet av dataforskere bruker Python som sitt primære verktøy. Å lære Python i dybden er sannsynligvis en god idé hvis du er seriøs med din datavitenskapsreise! +Enten du allerede har strukturert eller ustrukturert data, kan du med Python utføre alle steg relatert til databehandling og forståelse. Det er sannsynligvis den mest fleksible måten å behandle data på, og det er grunnen til at flertallet av dataforskere bruker Python som sitt primære verktøy. Å lære Python grundig er trolig en god idé hvis du er seriøs i din dataforskning! ## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ds/quiz/13) -## Gjennomgang og Selvstudium +## Gjennomgang og selvstudie **Bøker** * [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) **Nettressurser** -* Offisiell [10 minutter til Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)-veiledning -* [Dokumentasjon om Pandas-visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) +* Offisiell [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial +* [Dokumentasjon om Pandas Visualisering](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) **Lære Python** -* [Lær Python på en morsom måte med Turtle Graphics og Fractals](https://github.com/shwars/pycourse) -* [Ta dine første steg med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Læringssti på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) +* [Lær Python på en morsom måte med Turtle Graphics og Fraktaler](https://github.com/shwars/pycourse) +* [Ta dine første skritt med Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) læringsvei på [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) ## Oppgave [Utfør en mer detaljert datastudie for utfordringene ovenfor](assignment.md) -## Kreditering +## Takk -Denne leksjonen er skrevet med ♥️ av [Dmitry Soshnikov](http://soshnikov.com) +Denne leksjonen er laget med ♥️ av [Dmitry Soshnikov](http://soshnikov.com) --- -**Ansvarsfraskrivelse**: -Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. \ No newline at end of file + +**Ansvarsfraskrivelse**: +Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. + \ No newline at end of file