zajecia 1
This commit is contained in:
commit
f9a78c4675
78
README.md
Normal file
78
README.md
Normal 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/
|
398
zajecia1/1_wprowadzenie_do_python.ipynb
Normal file
398
zajecia1/1_wprowadzenie_do_python.ipynb
Normal 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
2911
zajecia1/2_podstawy.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
@ -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.")
|
||||
|
||||
|
8
zajecia1/zadania/zadanie_0.py
Normal file
8
zajecia1/zadania/zadanie_0.py
Normal 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.")
|
||||
|
||||
|
7
zajecia1/zadania/zadanie_1a.py
Normal file
7
zajecia1/zadania/zadanie_1a.py
Normal 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.
|
||||
"""
|
11
zajecia1/zadania/zadanie_1b.py
Normal file
11
zajecia1/zadania/zadanie_1b.py
Normal 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
|
||||
|
17
zajecia1/zadania/zadanie_1c.py
Normal file
17
zajecia1/zadania/zadanie_1c.py
Normal 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))
|
||||
|
||||
|
14
zajecia1/zadania/zadanie_2a.py
Normal file
14
zajecia1/zadania/zadanie_2a.py
Normal 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']
|
10
zajecia1/zadania/zadanie_2b.py
Normal file
10
zajecia1/zadania/zadanie_2b.py
Normal 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]
|
16
zajecia1/zadania/zadanie_2c.py
Normal file
16
zajecia1/zadania/zadanie_2c.py
Normal 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],
|
||||
]
|
25
zajecia1/zadania/zadanie_3.py
Normal file
25
zajecia1/zadania/zadanie_3.py
Normal 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'
|
||||
}
|
6
zajecia1/zadania/zadanie_4a.py
Normal file
6
zajecia1/zadania/zadanie_4a.py
Normal 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']
|
14
zajecia1/zadania/zadanie_4b.py
Normal file
14
zajecia1/zadania/zadanie_4b.py
Normal 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
|
4
zajecia1/zadania/zadanie_5a.py
Normal file
4
zajecia1/zadania/zadanie_5a.py
Normal file
@ -0,0 +1,4 @@
|
||||
"""
|
||||
Oblicz sumę liczb od 1 do 678.
|
||||
"""
|
||||
|
23
zajecia1/zadania/zadanie_5b.py
Normal file
23
zajecia1/zadania/zadanie_5b.py
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
"""
|
||||
Słownik `oceny` zawiera oceny kilku osób. Kluczami są imiona dzieci, a wartosciami -- ich oceny.
|
||||
Uzupełnij słownik `rozklad`, którego kluczami są 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: []
|
||||
}
|
33
zajecia1/zadania/zadanie_5c.py
Normal file
33
zajecia1/zadania/zadanie_5c.py
Normal 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,
|
||||
}
|
23
zajecia1/zadania/zadanie_5d.py
Normal file
23
zajecia1/zadania/zadanie_5d.py
Normal 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,
|
||||
}
|
11
zajecia1/zadania/zadanie_6a.py
Normal file
11
zajecia1/zadania/zadanie_6a.py
Normal 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
|
15
zajecia1/zadania/zadanie_6b.py
Normal file
15
zajecia1/zadania/zadanie_6b.py
Normal 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 są 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 = []
|
9
zajecia1/zadania/zadanie_7a.py
Normal file
9
zajecia1/zadania/zadanie_7a.py
Normal 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
|
||||
|
||||
"""
|
13
zajecia1/zadania/zadanie_7b.py
Normal file
13
zajecia1/zadania/zadanie_7b.py
Normal 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
|
6
zajecia1/zadania/zadanie_8.py
Normal file
6
zajecia1/zadania/zadanie_8.py
Normal 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`.
|
||||
"""
|
||||
|
19
zajecia1/zadania/zadanie_9a.py
Normal file
19
zajecia1/zadania/zadanie_9a.py
Normal 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,
|
||||
}
|
10
zajecia1/zadania/zadanie_9b.py
Normal file
10
zajecia1/zadania/zadanie_9b.py
Normal 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óż tę wartocść przez 4.
|
||||
* Podstaw za n wartości 100, 1000, 1000000. Do jakiej wartości zbiegają wartości?
|
||||
"""
|
2
zajecia1/zalesienie.txt
Normal file
2
zajecia1/zalesienie.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Brazil,39542
|
||||
Bulgaria,24987
|
19
zajecia1/zen_of_python.txt
Normal file
19
zajecia1/zen_of_python.txt
Normal 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!
|
Loading…
Reference in New Issue
Block a user