zajecia 1

This commit is contained in:
kubapok 2024-11-17 12:18:54 +01:00
commit f9a78c4675
27 changed files with 3710 additions and 0 deletions

78
README.md Normal file
View File

@ -0,0 +1,78 @@
# Analiza i wizualizacja danych w Pythonie
Materiały do zajęć Analiza i wizualizacja danych w Pythonie prowadzone na Wydziale Matematyki i Informatyki UAM w ramach studiów podyplomowych Przetwarzanie danych - Big Data. Kurs 2024/2025
## Informacja o przedmiocie
Prowadzący:
- dr inż. Jakub Pokrywka. Kontakt przez komunikator MS TEAMS lub mailowy (jakub.pokrywka@amu.edu.pl).
- mgr Anna Kaluba
## Materiały do przedmiotu
Program jest cześciowo wzorowany na https://github.com/tomekd/python . Spora cześć zadań się pokrywa, ale nie wszystkie.
Do nauki można wykorzystać wiele tutoriali internetowych python (w wersji python3). Pomocne mogą byc w szczególności:
* [https://docs.python.org/3/](Dokumentacja pythona)
* Learning Python, 5th Edition by Lutz, Mark
* [datacamp.com](https://datacamp.com): Portal DataCamp zawiera wiele interaktywych kursów nt. poszczególnych elementów języka Python (również dla języka R.).
* [Python3: From None to Machine Learning](https://python.astrotech.io/)
* [Real Python](https://realpython.com/)
* [Dive in Python](https://diveintopython3.net/): Klasyczny kurs programowania w Pythonie.
* [Filmy na Youtubie](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6): seria filmów od Microsoftu nt. podstaw programowania w Pythonie.
* [Automate the boring stuff with python](https://automatetheboringstuff.com/)
## Ogólny Plan zajęć
- Zajęcia 1 - Wprowadzenie do python 1/2
- Zajęcia 2 - Wprowadzenie do python 2/2
- Zajęcia 3 - pandas
- Zajęcia 4 - numpy
- Zajęcia 5 - scikit-learn
- Zajęcia 6 - przetwarzanie tekstu w python
- Zajęcia 7 - przetwarzanie obrazów w python
- Zajęcia 8 - zajęcia z analizy wizualizacji danych
- Zajęcia 9 - zajęcia z analizy wizualizacji danych
- Zajęcia 10 - zajęcia z analizy wizualizacji danych
- Zajęcia 11 - Zaliczenie
## Zaliczenie przedmiotu
### Forma
- Projekt wykonujemy w grupach (1-3) osoby
- Kod źródłowy powinien być umieszczony na git wraz z plikiem `environment.yml` przeznaczonym do instalacji środowiska dla conda
- Prezentacja całego projektu powinna trwać 12 minut przy pomocy powerpoint lub jupyter notebook
- Zachęcam do stworzenia bardziej rozbudowanego projektu bazującego na Państwa zainteresowaniach
- Proszę uwzględnić, że dodatkowo należy będzie pokazać repozytorium kodu
### Zadania
- Należy wybrać interesujący zbiór danych (akceptacja grup oraz zbioru danych przez prowadzącego na drugich lub trzecich zajęciach). Np. dane tabularyczne (conajmniej 15 kolumn jeżeli jedna tabelka, może być również kilka tabelek), moga być również dane tekstowe lub obrazkowe.
- zaprezentować analizę tego zbioru danych (tabelki, wykresy, wnioski) w max 12 minut- zaliczenie na ocenę
- Należy wytrenować prosty model uczenia maszynowego (lub użyć gotowego modelu) i zaprezentować jego wyniki na zbiorze testowym. Jakość modelu nie będzie oceniana, ale powinien radzić sobie lepiej niż bardzo prosty model (klasa większościowa dla klasyfikacji lub średnia dla regresji)- zaliczenie na ocenę 4
### Skala ocen
3 - kod i environment.yml w repozytorium, omówienie zbioru, ogólna analiza, statystki opisowe (wskaźniki + tabelki), conajmniej 3 różne wizualizacje (np. barplot, scatterplot, violinplot- powinny być poprawne wzgledem danej zmiennej)
4 - to co na 4 oraz conajmniej 5 różnych wizualizacje (np. barplot, scatterplot, violinplot, heatmapa, w tym choć jeden bardziej zaawansowany), model uczenia maszynowego w sklearn
5 - to co na 5 oraz conajmniej 2 zaawansowane wykresy/raporty w quarto
Termin oddania zadań do będzie jeszcze podany.
## Dodatkowe materiały
### jupyter notebook
- https://noteable.io/blog/jupyter-notebook-shortcuts-boost-productivity/
### bash
- https://www.earthdatascience.org/courses/intro-to-earth-data-science/open-reproducible-science/bash/
- https://www.educative.io/blog/bash-shell-command-cheat-sheet
### git
- https://git.wmi.amu.edu.pl/
- https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/
- https://git-scm.com/docs/gittutorial
- https://git-scm.com/book/en/v2
### pycharm tutorial:
- https://www.jetbrains.com/guide/python/tutorials/getting-started-pycharm/

View File

@ -0,0 +1,398 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Python- charakterystyka\n",
"\n",
"- język skryptowy ogólnego zastosowania\n",
"- wysokopoziomowy\n",
"- otwartoźródłowy\n",
"- działa na platformach Linux, MacOS, Windows\n",
"- obiektowy, ale wspiera też inne paradygmaty (np. funkcyjny)\n",
"- język dynamicznie typowany (x = 5 zamiast int x = 5)\n",
"- zarządzanie pamięcia poprzez garbage collector\n",
"- wcięcia (tabulacje lub spacje) zamiast nawiasów\n",
"- język interpretowany (zatem nie wymaga kompilacji)\n",
"- Obecnie używa się python w wersji 3, która nie jest kompatybilna z wersją 2. Python 2 nie jest dalej rozwijany\n",
"- Główną zaletą pythona jest czytelność kodu, co wynika z założenia że kod cześciej się czyta niż pisze. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zastosowania python\n",
"- najbardziej popularny język do analizy i wizualizacji danych obok R\n",
"- najbardziej popularny język do uczenia maszynowego, w szczególności sieci neuronowych. Posiada biblioteki TensorFlow (wraz z wbudowanym Keras), Pytorch, Jax\n",
"- inne zastosowania naukowe\n",
"- tworzenie stron internetowych (Django) oraz mikroserwisów (Flask, FastApi, Bottle, Django)\n",
"- skrypty, automayzacja, administracja serwerów"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Uruchamianie python\n",
"\n",
"- uruchamianie skryptu *.py wprost z wiersza poleceń\n",
"- uruchamianie python w trybie interaktywnym przez interpreterze python lub ipython\n",
"- uruchamianie skryptu + tryb interaktywny\n",
"- jupyter notebook, google colab\n",
"- IDE (np Pycharm, Microsoft Visual Studio)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Menadżery pakietów\n",
"- pip\n",
"- virtualenv\n",
"- conda"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/anaconda3/anaconda3/bin/python\n"
]
}
],
"source": [
"!which python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### virtualenv"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install virtualenv # instalacja"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!virtualenv myenv # tworzenie środowiska o nazwie myenv"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!source myenv/bin/activate # uruchamianie środowiska na linux"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!myenv\\Scripts\\activate # uruchamianie środowiska na linux na windows"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!which python"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!which pip"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!deactivate deaktywowanie środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install requests # instalacja pakietów za pomocą python"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!rm -rf myenv # usuwanie środowiska"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/bin/bash: line 1: virtualenv: command not found\n"
]
}
],
"source": [
"!virtualenv --help"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/bin/bash: line 1: virtualenv: command not found\n"
]
}
],
"source": [
"!virtualenv --version"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### zadanie virtualenv\n",
"Proszę stworzyć środowisko o nazwie myscikitlearnenv, spróbować zaimportować sklearn:\n",
"\n",
"import sklearn # powinno się nie udać\n",
"\n",
"Następnie zainstalować w nim scikit-learn i ponownie spróbować zaimportować sklearn (tym razem powinno się udać)\n",
"\n",
"Następnie deaktywować środowisko i usunąć je."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## conda (anaconda, miniconda, miniforge)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# najpierw - instalacja anconda"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"! tail -n30 ~/.bashrc # conda uruchamia się w ~/.bashrc"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda create --name myenv # tworzenie nowego środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda create --name myenv python=3.9 # tworzenie nowego środowiska dla python w wersji 3.9"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda activate myenv # aktywowanie środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!which python"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda deactivate # deaktywowanie środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda env list # wylistowanie dostępnych środowisk"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda install requests # instalacja pakietu za pomocą conda"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda install nodejs # instalacja nodejs (coś zupełnie poza środowiskiem pythona)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install requests # instalacja pakietu za pomocą pip\n",
"!pip install scikit-learn # instalacja pakietu za pomocą pip"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda env export > environment.yml # eksport środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda env create -f environment.yml # import środowiska"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda list # wylistowanie zainstalowanych pakietów"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda --help"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!conda --version"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!conda remove --name nazwa_srodowiska --all # usuwanie środowiska- albo wystarczy wprost usunąć pliki środowiska\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### zadanie conda\n",
"1. Proszę zrobić te same kroki jak w poprzednim zadaniu\n",
"2. Proszę zrobić to co w punkcie 1. tylko, że przed usunięciem środowiska zapisać je do environment.yml, a po usunięciu odtworzyć"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

2911
zajecia1/2_podstawy.ipynb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
"""
Uruchom ten skrypt i sprawdź czy skrypt uruchomił się poprawnie.
"""
print("Ten napis powinien wyświetlić się w konsoli na dole.")

View File

@ -0,0 +1,8 @@
"""
Uruchom ten skrypt i sprawdź czy skrypt uruchomił się poprawnie.
"""
print("Ten napis powinien wyświetlić się w konsoli na dole.")

View File

@ -0,0 +1,7 @@
"""
* stwórz zmienną o nazwie `pi` i o wartości 3.14.
* stwórz zmienną o nazwie `promien` i o wartości 12.
* oblicz pole koła i przypisz wynik do zmniennej `pole`. P = pi * r ** 2
* wyświetl wynik na ekran.
"""

View File

@ -0,0 +1,11 @@
"""
Zamień typ zmiennych `a`, `b` i `c` na typy liczbowe (int lub float) i oblicz ich sumę.
Wynik zapisz do zmiennej `wynik` i wyświetl go na ekranie
"""
# zmienne do zadania
a = "12"
b = "35.5"
c = True

View File

@ -0,0 +1,17 @@
"""
* Stwórz 2 zmiennie: firstname i surname, które będą zawierać Twoje imię i nazwisko.
* Połącz te zmiennie w takim sposób, żeby było rozdzielone spacją i zapisz wynik do zmiennej fullname.
* Wykorzystaj f-string i wyświetl na ekran zawartość zmiennej fullname, w taki sposób, żeby zawartość zmiennej była poprzedzona słowami "Nazywam się ".
* Wyświetl sumaryczną długość zmiennych firstname i surname.
"""
firstname = "Jakub"
surname = "Pokrywka"
print(f"Nazywam się {firstname} {surname}.")
print(firstname.lower())
print("Nazywam się %s %s" % (firstname, surname))

View File

@ -0,0 +1,14 @@
"""
Poniżej znajduje się lista `websites`.
* Pod jakim indeksem znajduje się wartość 'pinterest.com'?
* Zamień wartość piątego elementu na 'yahoo.com'.
* Dodaj na koniec listy nowy element: 'bing.com'
* Korzytając z indeksowania stwórz podlistę składającą się z elementów 'facebook.com', 'twitter.com'. Wynik przypisz do zmniennej `social_networks`.
* Rozszerz listę `websites` o elementy z listy `polish_websites`.
* Ile elementów liczy teraz lista `websites`?
"""
websites = ['google.com', 'facebook.com', 'twitter.com', 'pinterest.com', 'python.org']
polish_websites = ['onet.pl', 'interia.pl', 'wp.pl']

View File

@ -0,0 +1,10 @@
"""
Korzystając z listy numbers:
* wyświetl na ekranie drugi element.
* zlicz ile elementów listy ma wartosc 7 (użyj metody `count`).
* ile elementów zawiera lista?
* jak sprawdzisz jaka jest największa wartosc zawarta w liscie?
"""
numbers = [1, 8, 6, 6, 6, 7, 2, 0, 3, 0, 2, 3, 7, 0, 7, 2, 0, 3, 9, 4]

View File

@ -0,0 +1,16 @@
"""
Lista iris_setosa zawiera informacje o 4 egzemplarzach kosacieca szczecinkowego.
Pierwszy indeks to długość kwiata.
Drugi indeks to szerokość kwiata.
Trzeci indeks to długość liścia.
Czwarty indeks to szerokość liścia.
* Oblicz średnią szerokość kwiata.
* Dodaj do listy dane o nowym egzemplarzu: (5.4, 3.9, 1.7, 0.4)
"""
iris_setosa = [
[5.1, 3.5, 1.4, 0.2],
[4.9, 3, 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
]

View File

@ -0,0 +1,25 @@
"""
Korzystając ze poniższego słownika, który zawiera informacje z WikiData nt. Adama Mickiewiecza wykonaj następujące zadania:
* Wyświetl miejsce urodzenia (place of birth) A. Mickiewicza.
* Oblicz ile lat żył A. Mickiewicz.
* Dodaj nowy klucz `place of death` o wartości `Istanbul`.
* Zamień wartość klucza `place of birth` na `Zaosie`.
* Dodaj nowy klucz `spouse`, a którego wartością niech będzie słownik `cecylia_data`.
* Wyświetl liczbę elementów listy, która znajduje się pod kluczem `occupation`.
* Wyświetl nazwiko żony A. Mickiewicza.
"""
data = {
'name': 'Adam',
'surname': 'Mickiewicz',
'native language': 'polish',
'year of birth': 1798,
'place of birth': 'Zavosse',
'year of death': 1855,
'occupation': ['poet', 'professor', 'playwright']
}
cecylia_data = {
'name': 'Cecylia',
'surname': 'Szymanowska'
}

View File

@ -0,0 +1,6 @@
"""
Sprawdź czy tekst 'aAaAaA' znajduje się w tablicy passwords.
W zależności czy znajduje się czy też nie, wyświetl na ekranie odpowiedni komunikat.
"""
passwords = ['aaAaa', 'aAAAaa', 'aaaaaaA', 'aaaAAAAA', 'aaAAAaa', 'aAaAaA', 'aAaAaAA']

View File

@ -0,0 +1,14 @@
"""
Niech x oznacza liczbę uzyskanych punktów. Standardowa skala ocen jest następująca:
* x >= 90 -- 5.0
* 90 > x >= 80 -- 4.5
* 80 > x >= 70 -- 4.0
* 70 > x >= 60 -- 3.5
* 60 > x >= 50 -- 3.0
* x < 50 -- 2.0
Zmienna `points` zawiera liczbę uzyskanych punktów przez studenta.
Napisz instrukcję warunką, która wyświetli ocenę studenta w zależności od liczby punktów.
"""
points = 85

View File

@ -0,0 +1,4 @@
"""
Oblicz sumę liczb od 1 do 678.
"""

View File

@ -0,0 +1,23 @@
"""
Słownik `oceny` zawiera oceny kilku osób. Kluczami imiona dzieci, a wartosciami -- ich oceny.
Uzupełnij słownik `rozklad`, którego kluczami oceny, a wartosciami -- listy...
"""
oceny = {
'Albert': 4.5,
'Beata': 5,
'Cecylia': 4,
'Dariusz': 4,
'Eliza': 3,
'Feliks': 5,
'Grzegorz': 4.5,
'Izabela': 4.5
}
rozklad = {
5: [],
4.5: [],
4: [],
3: []
}

View File

@ -0,0 +1,33 @@
"""
Poniżej znajdują się 2 słowniki z danymi o liczbie przejazdów rowerami miejskimi w Montrealu w 2018 z podziałem na miesiące (od kwietnia do listopada).
Pierwszy słownik zawiera informacje o przejazdach wykonanych przez posiadaczy abonamentu, a drugi przez ludzi, którzy
nie mają wykupionego abonamentu. Dane pochodzą ze strony https://montreal.bixi.com/en/open-data.
a) Stwórz trzeci słownik `all_rides`, w którym zliczysz łączną liczbę przejazdów w każdym z podanych miesięcy.
b) Oblicz sumę zarejestrowanych przejazdów od kwietnia do listopada.
c) Wyswietl jaki procent wszystkich przejazdów odbyło się w sierpniu (August).
"""
members = {
'April': 211819,
'May': 682758,
'June': 737011,
'July': 779511,
'August': 673790,
'September': 673790,
'October': 444177,
'November': 136791,
}
occasionals = {
'April': 32058,
'May': 147898,
'June': 171494,
'July': 194316,
'August': 206809,
'September': 140492,
'October': 53596,
'November': 10516,
}

View File

@ -0,0 +1,23 @@
"""
Poniższy słownik zawiera dane z kilku wybranych krajów nt. liczby drzew na kilometr kwadratowy.
a) Wypisz na ekran nazwy tych krajów, dla których współczynnik ten jest większy niż 20000.
b) Wypisz na ekran nazwy tych krajów, dla których współczynnik ten jest większy niż 10000, ale mniejszy niż 20000.
"""
tree_per_sqkm = {
"Brazil": 39542,
"Bulgaria": 24987,
"Canada": 36388,
"Denmark": 6129,
"Finland": 90652,
"France": 24436,
"Greece": 24323,
"India": 11109,
"Japan": 49894,
"Russia": 41396,
"Saudi Arabia": 1,
"Syria": 534,
"United States": 23513,
"Taiwan": 69593,
"Turkey": 11126,
}

View File

@ -0,0 +1,11 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Napisz kod, który zwraci tzw. "Big 'NO!'" (zob. http://tvtropes.org/pmwiki/pmwiki.php/Main/BigNo)
dla zadanej liczby tj. napis typu "NOOOOOOOOOOOOO!", gdzie liczba 'O' ma być
równa wartości zmniennej `number_of_o`. Jeśli argument jest mniejszy niż 5, ma być zwracany napis "It's not a Big 'No!'".
Wyświetl ten napis na ekran.
"""
number_of_o = 6

View File

@ -0,0 +1,15 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
* Podziel zmienną `text` na słowa, korzystając z metody split.
* Dodaj do listy `oov`, wszystkie słowa (bez powtórzeń), które nie zawarte w liście `vocab`.
"""
text = "this is a string , which i will use for string testing"
vocab = [',', 'this', 'is', 'a', 'which', 'for', 'will', 'i']
oov = []

View File

@ -0,0 +1,9 @@
"""
1. Napisz rekurencyjną funkcję, która zwróci n-ty wyraz ciągu Fibonacciego.
2. Napisz funkcję, która obliczy n-ty wyroz ciągu Fibonacciego nie korzystając z rekurencji.
Np. możesz wykorzystać listę do obliczania kolejnych wartości ciągu.
Ciąg Fibonacciego:
a[0] = 1, a[1] = 1, a[n] = a[n-1] + a[n-2] dla n>=2
"""

View File

@ -0,0 +1,13 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Napisz funkcję sum_div35(n), która zwraca sumę wszystkich liczb podzielnych
przez 3 lub 5 mniejszych niż n.
"""
def sum_div35(n):
pass
input = 100
# dla n =100 poprawna odpowiedź to 2318

View File

@ -0,0 +1,6 @@
"""
Otwórz plik `zen_of_python.txt` i zlicz liczbę linii i słów w tym pliku.
Następnie przerób kod na funkcję, która jako argument będzie przyjmować ściężkę do pliku i będzie zwracać
słownik z dwoma kluczami: `liczba_linii` i `liczba_slow`.
"""

View File

@ -0,0 +1,19 @@
"""
Zadania: Zaimportuj bibliotekę statistics, która zawiera funckje do obliczenia podstawych wielkości statystycznych (średnia, mediana, moda):
statistics.mean -- obliczenie średniej
statistics.median -- obliczenie mediany
statistics.variance -- obliczenie wariancji
statistics.stdev -- obliczenie odchylenia standardowego Oblicz te wielkości dla wartości z poniższego słownika.
Każda z tych funkcji przyjmuje jeden argument: listę wartości.
"""
members = {
'April': 211819,
'May': 682758,
'June': 737011,
'July': 779511,
'August': 673790,
'September': 673790,
'October': 444177,
'November': 136791,
}

View File

@ -0,0 +1,10 @@
"""
Biblioteka random posiada funkcję random, która zwraca losową licznę z przedziału [0, 1) (nie przyjmuje żadnych argumentów).
Biblioteka math posiada funkcję hypot, która oblicza odległość punktu od środka układu współrzędnych (punktu [0, 0]) i przyjmuje dwa argumenty: współrzędne punktu.
* Zaimportuj biblioteki random i math
* korzystając z funkcji random wylosuj dwie liczby i przypisz wyniki do zmniennych x i y.
* Korzystając z funkcji hypot oblicz odległość punktu o współrzednych (x,y).
* Dodaj pętlę, która będzie wykonywać te czynności n = 10 razy i będzie zliczać ile razy obliczona odległość jest mniejsza od 1.
* Oblicz stosunek liczby punktów, dla których odległość wynosiła mniej niż 1 do całkowitej liczby punktów. Pomnóż wartocść przez 4.
* Podstaw za n wartości 100, 1000, 1000000. Do jakiej wartości zbiegają wartości?
"""

2
zajecia1/zalesienie.txt Normal file
View File

@ -0,0 +1,2 @@
Brazil,39542
Bulgaria,24987

View File

@ -0,0 +1,19 @@
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!