import sympy
import pandas as pd
sympy.init_session()
IPython console for SymPy 1.8 (Python 3.9.6-64-bit) (ground types: python) These commands were executed: >>> from __future__ import division >>> from sympy import * >>> x, y, z, t = symbols('x y z t') >>> k, m, n = symbols('k m n', integer=True) >>> f, g, h = symbols('f g h', cls=Function) >>> init_printing() Documentation can be found at https://docs.sympy.org/1.8/
%matplotlib inline
Jupyter tapo de facto standartu dirbant su duomenimis.
Tačiau Jupyter yra labai populiarus ir akademijoje, dėl galimybės tekstą paversti interaktyvia programavimo aplinka.
Jupyter galėtu būti naudojamas mokant šiuos dalykus matematiką, programavimą ir duomenų raštingumą.
Mokant matematikos, Jupyter aplinka gali būti naudojama kaip paprastas skaičiuotuvas, pavyzdžiui:
2 + 2
Tačiau galima atlikti ir sudėtingesnius skaičiavimus, pavyzdžiui:
solve(x**2 - 2, x)
limit(sin(x)/x, x, 0)
Taip pat galima atvaizduoti matematinių funkcijų grafikus.
plot(sin(x));
Jupyter yra suderinamas su daugeliu programavimo kalbų, tačiau dažniausiai naudojamas su Python. Python yra viena populiariausių programavimo kalbų, įvairiuose reitinguose patenkainti į populiariausių programavimo kalbų trejetųką, tačiau taip pat Python yra viena iš populiariausių programavimų, tarp žmonių, kurie pradeda mokytis programavimo.
Lyginant Python su C++, Python yra paprastesnė ir lengviau išmokstama programavimo kalba, tuo tarpu C++ yra viena sudėtingesnių programavimo kalbu, todėl mokant programavimo su C++ galima nesunkiai atmušti norą mokytis programavimo visai.
Mokantis programavimo su Python padeda ir tai, kad Python yra interpretuojama programavimo kalba, tai reiškia, kad nereikalingas programos kompiliavimo žingsnis.
Kaip pavyzdį pateikiu 2017 metų brandos egzamino užduotį.
Vincas turi tekstinį failą su piešinio duomenimis. Piešinys sudarytas iš langelių. Šių langelių spalvas nusako trys sveikieji skaičiai nuo 0 iki 255 (RGB komponentės).
Vincui reikia paversti pradinius dešimtainius skaičius į šešioliktainį kodą ir rezultatą įrašyti į tekstinį failą. Pavyzdžiui, geltonos spalvos langelio, kurio RGB komponentės yra 255, 221 ir 0, spalvos šešioliktainis kodas bus FFDD00
(dešimtainis skaičius 255 atitinka šešioliktainį FF
, 221 atitinka DD
ir 0 atitinka 00
).
Dešimtainis skaičius (nuo 0 iki 255) konvertuojamas į šešioliktainį skaičių taip: šešioliktainio skaičiaus pirmasis skaitmuo yra sveikoji dalis, dešimtainį skaičių dalijant iš 16, o antrasis šešioliktainio skaičiaus skaitmuo yra dešimtainio skaičiaus dalybos iš 16 liekana. Šešioliktainiai skaitmenys nuo 10 iki 15 koduojami atitinkamai raidėmis nuo A
iki F
. Jei pirmasis skaitmuo gaunamas nulis, jis irgi yra rašomas.
Parašykite programą, kuri spalvų dešimtaines RGB komponentes įrašytų į naują failą šešioliktainiais kodais.
Duomenys pateikiami tekstiniame faile U1.txt
.
Duomenų faile įrašyta:
pirmoje eilutėje – piešinio ilgis $a (1 \leq a \leq 10000)$ ir plotis $b (1\leq b \leq 10000)$;
kitose $a * b$ eilutėse, einant per piešinio langelius iš kairės į dešinę ir iš viršaus į apačią, – po 3 skaičius, nusakančius langelio RGB komponentes.
Rezultatus įrašykite tekstiniame faile U1rez.txt
.
Rezultatų failą sudaro a
eilučių ir b
stulpelių (atskirtų kabliataškiais). Spalvų kodai įrašomi tokia pačia tvarka kaip ir pradiniame faile.
Kiekvienoje eilutėje turi būti b
spalvų šešioliktainių kodų (sujungiami trys šešioliktainiai dviženkliai skaičiai be tarpų), atskirtų kabliataškiais ;
(po paskutinio kodo kabliataškis nededamas).
Šaltinis: http://nec.lt/failai/6996_IT-VBE-1_2017-GALUTINE.pdf
def format_color(f):
color = map(int, next(f).split())
color = map('{:02X}'.format, color)
return ''.join(color)
with open('U1.txt') as f:
h, w = map(int, next(f).split())
for _ in range(h):
line = [format_color(f) for _ in range(w)]
print(*line, sep=';')
008000;FF0000;FFFFFF FFFF00;FF0000;FFFF00
Praktiškai visose srityse susijusiose su duomenų mokslu Python programavimo kalba yra naudojama dažniausiai.
Todėl apjungus Python programavimo pamokas, su matematikos pamokomis, kuriose taip pat naudojamas Python, galima nesunkiai pereiti prie duomenų mokslo.
Mokant duomenų raštingumo, pirmiausiai reikia duomenų. Šiuo metu Lietuvoje vyksta aktyvus visuotinis duomenų atvėrimas, todėl Atvirų duomenų portale galima rasti įdomių ir realaus pasaulio duomenų rinkinių.
Kaip pavyzdį galime panagrinėti COVID-19 duomenis.
df = pd.read_csv('https://get.data.gov.lt/datasets/gov/lsd/covid-19/svieslenciu_statistika/SvieslenciuStatistika/:format/csv')
df.groupby('date').agg(atvejai=('incidence', sum), mirtys=('daily_deaths_all', sum)).cumsum().plot(figsize=(16, 10), grid=True);