Zadanie 1

Zadanie: Definujte premennú \(x=2\). Vypočítajte výrazy \(\sqrt[3]{x^8}\), \(logx{_x}{8}\), \(ln((10^3x/2))\) a zaokrúhlite ich na 3 desatinné miesta.

Riešenie:

import numpy as np

# Definícia premennej
x = 2

# Výpočet výrazov
expresion1 = x ** (8 / 3)
expresion2 = np.log10(x ** 8)
expresion3 = np.log(2 * 10 ** (3 * x))

# Zaokrúhlenie na 3 desatinné miesta
results = [round(val, 3) for val in [expresion1, expresion2, expresion3]]
print("Výsledky výrazov:", results)
## Výsledky výrazov: [6.35, 2.408, 14.509]

Zadanie 2

Zadanie: Vyriešte sústavu rovníc

   2x + 3y = 0
    −x + y = 1

Riešenie:

import numpy as np

# Koeficienty rovníc v maticovom tvare
A = np.array([[2, 3], [-1, 1]])
b = np.array([0, 1])

# Riešenie sústavy rovníc
solution = np.linalg.solve(A, b)
print("Riešenie sústavy rovníc (x, y):", solution)
## Riešenie sústavy rovníc (x, y): [-0.6  0.4]

Zadanie 3

Zadanie: Pomocou operácií s vektormi vypočítajte súčet prvých 20 členov postupnosti.Zobrazte ju v grafe.

Riešenie:

import numpy as np
import matplotlib.pyplot as plt

# Vytvoření sekvence čísel od 1 do 20
n = np.arange(1, 21)
postupnost = (2 * n) ** (1 / n)

# Součet postupnosti
suma_postupnosti = np.sum(postupnost)
print("Suma prvních 20 čísel postupnosti:", suma_postupnosti)
## Suma prvních 20 čísel postupnosti: 28.738978115697392
# Grafické zobrazení postupnosti
plt.plot(n, postupnost, marker='o')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Graf postupnosti')
plt.grid(True)
plt.show()

Zadanie 4

Zadanie: Načítajte súbor údajov mtcars z balíka datasets a uložte ho do premennej s názvom dat.

Riešenie:

import pandas as pd
import statsmodels.api as sm

# Načítanie dát(V python mame balik statsmodels s takym istym dataset mtcars)
dat = sm.datasets.get_rdataset("mtcars").data

Zadanie 5

Zadanie: Zobrazte štruktúru objektu dat a prvých 5 riadkov. Zoznámte sa s významom jednotlivých stĺpcov.

Riešenie:

# Zobrazenie štruktúry dát
print(dat.info())
## <class 'pandas.core.frame.DataFrame'>
## Index: 32 entries, Mazda RX4 to Volvo 142E
## Data columns (total 11 columns):
##  #   Column  Non-Null Count  Dtype  
## ---  ------  --------------  -----  
##  0   mpg     32 non-null     float64
##  1   cyl     32 non-null     int64  
##  2   disp    32 non-null     float64
##  3   hp      32 non-null     int64  
##  4   drat    32 non-null     float64
##  5   wt      32 non-null     float64
##  6   qsec    32 non-null     float64
##  7   vs      32 non-null     int64  
##  8   am      32 non-null     int64  
##  9   gear    32 non-null     int64  
##  10  carb    32 non-null     int64  
## dtypes: float64(5), int64(6)
## memory usage: 3.0+ KB
## None
# Zobrazenie prvých 5 riadkov
print(dat.head())
##                     mpg  cyl   disp   hp  drat  ...   qsec  vs  am  gear  carb
## rownames                                        ...                           
## Mazda RX4          21.0    6  160.0  110  3.90  ...  16.46   0   1     4     4
## Mazda RX4 Wag      21.0    6  160.0  110  3.90  ...  17.02   0   1     4     4
## Datsun 710         22.8    4  108.0   93  3.85  ...  18.61   1   1     4     1
## Hornet 4 Drive     21.4    6  258.0  110  3.08  ...  19.44   1   0     3     1
## Hornet Sportabout  18.7    8  360.0  175  3.15  ...  17.02   0   0     3     2
## 
## [5 rows x 11 columns]

Zadanie 6

Zadanie: Preveďte premennú mpg na jednotky km/l a uložte ako novú premennú kml do toho istého objektu.

Riešenie:

dat['kml'] = dat['mpg'] * 1.60934 / 3.78541
print(dat.head())
##                     mpg  cyl   disp   hp  drat  ...  vs  am  gear  carb       kml
## rownames                                        ...                              
## Mazda RX4          21.0    6  160.0  110  3.90  ...   0   1     4     4  8.928000
## Mazda RX4 Wag      21.0    6  160.0  110  3.90  ...   0   1     4     4  8.928000
## Datsun 710         22.8    4  108.0   93  3.85  ...   1   1     4     1  9.693257
## Hornet 4 Drive     21.4    6  258.0  110  3.08  ...   1   0     3     1  9.098057
## Hornet Sportabout  18.7    8  360.0  175  3.15  ...   0   0     3     2  7.950171
## 
## [5 rows x 12 columns]

Zadanie 7

Zadanie: Vytvorte logický vektor aut indikujúci, či ide o auto s automatickou prevodovkou a pomocou neho vypočítajte priemerný dojazd (v km na 1l paliva) automobilov zvlášť s automatickou a zvlášť s manuálnou prevodovkou.

Riešenie:

# Výpočet priemerov pre automatické a manuálne prevodovky
average_kml_auto = dat[dat['am'] == 1]['kml'].mean()
average_kml_manual = dat[dat['am'] == 0]['kml'].mean()

print(f"Average km/l for automatic cars: {average_kml_auto:.2f}")
## Average km/l for automatic cars: 10.37
print(f"Average km/l for manual cars: {average_kml_manual:.2f}")
## Average km/l for manual cars: 7.29

Zadanie 8

Zadanie: Zobrazte tabuľku všetkých áut s piatimi rýchlostnými stupňami a hmotnosťou do 3000 libier, ktorá obsahuje iba údaje o počte valcov, zdvihovom objeme a výkone motora.

Riešenie:

filtered_cars = dat[(dat['gear'] == 5) & (dat['wt'] < 3)][['cyl', 'disp', 'hp']]
print(filtered_cars)
##                cyl   disp   hp
## rownames                      
## Porsche 914-2    4  120.3   91
## Lotus Europa     4   95.1  113
## Ferrari Dino     6  145.0  175

Zadanie 9

Zadanie: Vytvorte funkciu na prevod jednotiek, ktorá bude mať 3 argumenty (s názvom)[s hodnotami]: prevádzanú hodnotu (x), imperiálnu jednotku (impunit)[míľa, galón, palec, libra], smer prevodu do SI (toSI)[TRUE,FALSE], pričom zodpovedajúcimi jednotkami v metrickej sústave SI budú km, l, dm, kg. (Využite pri tom funkciu switch a automatickú konverziu módu vektora toSI z logického na numerický.)

Riešenie:

# Funkcia na konverziu:
def convert_units(x, impunit, toSI=True):
    conversions = {
        'mila': 1.60934,
        'galon': 3.78541,
        'palec': 0.0254,
        'libra': 0.453592
    }
    factor = conversions.get(impunit, None)
    if factor is None:
        raise ValueError("Unknown imperial unit.")
    
    return x * factor if toSI else x / factor

# Príklad použitia
print(convert_units(10, 'mila'))  
## 16.0934
print(convert_units(10, 'mila', False))  
## 6.213727366498068

Zadanie 10

Zadanie: Pomocou for cyklu skonvertujte hodnoty zdvihového objemu valcov z kubických palcov na litre. Pomocou funkcie sapply preveďte hmotnosť vozidiel na tony. Zachovajte pri tom pôvodné názvy premenných a použite funkciu na prevod jednotiek z predošlej úlohy (ak ste ju úspešne urobili).

Riešenie:

# Konverzia zdvihového objemu z kubických palcov na litre
dat['disp'] = dat['disp'].apply(lambda x: convert_units(x, 'palec', toSI=True)**3)

# Konverzia hmotnosti z libier na tony
dat['wt'] = dat['wt'].apply(lambda x: convert_units(x * 2000, 'libra', toSI=True) / 1000)

print(dat[['disp', 'wt']])
##                             disp        wt
## rownames                                  
## Mazda RX4              67.121414  2.376822
## Mazda RX4 Wag          67.121414  2.608154
## Datsun 710             20.642981  2.104667
## Hornet 4 Drive        281.423440  2.916597
## Hornet Sportabout     764.554858  3.120713
## Valiant               186.658901  3.138857
## Duster 360            764.554858  3.238647
## Merc 240D              51.735838  2.893917
## Merc 230               45.741364  2.857630
## Merc 280               77.147737  3.120713
## Merc 280C              77.147737  3.120713
## Merc 450SE            343.782635  3.692239
## Merc 450SL            343.782635  3.383796
## Merc 450SLC           343.782635  3.429156
## Cadillac Fleetwood   1723.166114  4.762716
## Lincoln Continental  1595.051262  4.920566
## Chrysler Imperial    1395.915660  4.848898
## Fiat 128                7.987766  1.995805
## Honda Civic             7.108677  1.465102
## Toyota Corolla          5.889928  1.664683
## Toyota Corona          28.387698  2.236209
## Dodge Challenger      526.965896  3.193288
## AMC Javelin           460.385780  3.116177
## Camaro Z28            702.595369  3.483587
## Pontiac Firebird     1048.772096  3.488122
## Fiat X1-9               8.079462  1.755401
## Porsche 914-2          28.529754  1.941374
## Lotus Europa           14.094274  1.372569
## Ford Pantera L        708.634838  2.875773
## Ferrari Dino           49.958013  2.512900
## Maserati Bora         446.890000  3.238647
## Volvo 142E             29.030683  2.521972

Zadanie 11

Zadanie: Nastavte pracovný adresár a načítajte tabuľku údajov zo súboru mtcars.txt (uloženého v pracovnom adresári) do objektu typu data.frame. Dbajte pri tom na správne nastavenie parametrov importu ako počet riadkov neštrukturovaného popisu, prítomnosť názvu stĺpcov, oddelovací znak desatinných miest, znak oddelujúci stĺpce tabuľky a znak chýbajúcich hodnôt (NA). Porovnajte načítaný data frame s pôvodným dat.

Riešenie:

import os
import pandas as pd

# Nastavenie cesty k pracovnému adresáru, kde je uložený súbor mtcars.txt
os.chdir('D:\\ImportantStuff\\MPM\\Analyza dat\\10\\')

# Načítanie súboru mtcars.txt
mtcars = pd.read_csv(
    'mtcars.txt',
    delimiter=' ',   
    decimal=',',     
    skiprows=2,      
    na_values='?',  
    comment='"',     
    engine='python'   
)

# Výpis informácií o oboch data frames
print("Pôvodné dáta:")
## Pôvodné dáta:
dat.drop('kml', axis=1, inplace=True)
print(dat.info())
## <class 'pandas.core.frame.DataFrame'>
## Index: 32 entries, Mazda RX4 to Volvo 142E
## Data columns (total 11 columns):
##  #   Column  Non-Null Count  Dtype  
## ---  ------  --------------  -----  
##  0   mpg     32 non-null     float64
##  1   cyl     32 non-null     int64  
##  2   disp    32 non-null     float64
##  3   hp      32 non-null     int64  
##  4   drat    32 non-null     float64
##  5   wt      32 non-null     float64
##  6   qsec    32 non-null     float64
##  7   vs      32 non-null     int64  
##  8   am      32 non-null     int64  
##  9   gear    32 non-null     int64  
##  10  carb    32 non-null     int64  
## dtypes: float64(5), int64(6)
## memory usage: 4.0+ KB
## None
print("\nNačítané dáta:")
## 
## Načítané dáta:
print(mtcars.info())
## <class 'pandas.core.frame.DataFrame'>
## Index: 32 entries, Mazda RX4 to Volvo 142E
## Data columns (total 11 columns):
##  #   Column  Non-Null Count  Dtype  
## ---  ------  --------------  -----  
##  0   mpg     32 non-null     float64
##  1   cyl     32 non-null     int64  
##  2   disp    32 non-null     float64
##  3   hp      32 non-null     int64  
##  4   drat    32 non-null     float64
##  5   wt      32 non-null     float64
##  6   qsec    32 non-null     float64
##  7   vs      30 non-null     float64
##  8   am      32 non-null     int64  
##  9   gear    32 non-null     int64  
##  10  carb    32 non-null     int64  
## dtypes: float64(6), int64(5)
## memory usage: 3.0+ KB
## None
# Porovnanie štruktúr
if dat.shape == mtcars.shape and all(dat.dtypes == mtcars.dtypes):
    print("Štruktúra a typy dát sú zhodné.")
else:
    print("Existujú rozdiely v štruktúre alebo typoch dát.")
## Existujú rozdiely v štruktúre alebo typoch dát.