Transporto priemonių registravimo analizė Lietuvoje¶

Darbo tikslas¶

Išanalizuoti duomenis apie Lietuvoje registruojamas transporto priemones 2020-2024 metais. Panagrinėti, kaip kas met keitėsi registruojamų transporto priemonių kiekis ir kategorijos.

Hipotezės¶

🚗 Daugiausia transporto priemonių yra registruojama didžiuosiuose miestuose.

🚗 Mažesniuose miestuose vyrauja taršesnės kuro rūšys.

🚗 Lietuvoje vis daugėja transporto priemonių su kuro kategorijomis iš 'žaliųjų' energijos šaltinių.

🚗 Lietuvoje didelį kiekį registruojant sudaro transporto priemonės, turinčios duomenų trūkumą. Tai problema ar sistemos klaida?

Duomenys¶

In [5]:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
In [3]:
transportas=pd.read_csv('transporto_priemones_2022-2024.csv')
kategorijos=pd.read_csv('transporto_kategorijos.csv')
transportas
Out[3]:
Apskritis Savivaldybė Pavadinimas Kiekis Kategorija Metai
0 ŠIAULIŲ AKMENĖS RAJONO Benzinas 180 L1 2023
1 ŠIAULIŲ AKMENĖS RAJONO Benzinas 374 L3 2023
2 ŠIAULIŲ AKMENĖS RAJONO Benzinas 4 L4 2023
3 ŠIAULIŲ AKMENĖS RAJONO Benzinas 5 L5 2023
4 ŠIAULIŲ AKMENĖS RAJONO Benzinas 15 L7 2023
... ... ... ... ... ... ...
14076 UTENOS ZARASŲ RAJONO NENUSTATYTA 2 L4 2021
14077 UTENOS ZARASŲ RAJONO NENUSTATYTA 4 L4 2021
14078 UTENOS ZARASŲ RAJONO NENUSTATYTA 25 M1 2021
14079 UTENOS ZARASŲ RAJONO NENUSTATYTA 99 M1 2021
14080 UTENOS ZARASŲ RAJONO NENUSTATYTA 5 N1 2021

14081 rows × 6 columns

Turime penkių metų duomenis apie registruojamas transporto priemones. Iš viso daugiau nei 14 tūkst. eilučių ir 6 stulpelius.

In [21]:
ilgis_transportas=len(transportas)
ilgis_transportas
Out[21]:
14081
In [22]:
transportas.shape
Out[22]:
(14081, 6)
In [23]:
transportas.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 14081 entries, 0 to 14080
Data columns (total 6 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   Apskritis    14081 non-null  object
 1   Savivaldybė  14081 non-null  object
 2   Pavadinimas  14081 non-null  object
 3   Kiekis       14081 non-null  int64 
 4   Kategorija   14081 non-null  object
 5   Metai        14081 non-null  int64 
dtypes: int64(2), object(4)
memory usage: 660.2+ KB
In [29]:
transportas.describe()
Out[29]:
Kiekis Metai
count 14081.000000 14081.000000
mean 763.579007 2022.128045
std 5051.732516 1.406613
min 1.000000 2020.000000
25% 3.000000 2021.000000
50% 12.000000 2022.000000
75% 118.000000 2023.000000
max 163141.000000 2024.000000

🔎 Galime numatyti kurioje Lietuvos apskrityje yra daugiausiai registruojamų transporto priemonių. Manau nenuostabu, atsižvelgus į gyventojų skaičių.

In [25]:
transportas['Apskritis'].value_counts()
Out[25]:
Apskritis
VILNIAUS        1999
KAUNO           1930
KLAIPĖDOS       1697
ŠIAULIŲ         1659
PANEVĖŽIO       1419
UTENOS          1295
ALYTAUS         1059
MARIJAMPOLĖS    1056
TELŠIŲ           918
TAURAGĖS         860
NENUSTATYTA      189
Name: count, dtype: int64

🔎 Paskaičiuokime tiksliau, kokie transporto priemonių kiekiai vyrauja šiame regione:

In [85]:
transportas.groupby(['Apskritis','Savivaldybė'])['Kiekis'].sum().sort_values(ascending=False)
Out[85]:
Apskritis     Savivaldybė     
VILNIAUS      VILNIAUS MIESTO     1347446
KAUNO         KAUNO MIESTO         696948
KLAIPĖDOS     KRETINGOS RAJONO     447412
TAURAGĖS      JURBARKO RAJONO      374067
KAUNO         KAUNO RAJONO         352161
                                   ...   
PANEVĖŽIO     KUPIŠKIO RAJONO       50713
MARIJAMPOLĖS  KALVARIJOS            49661
TAURAGĖS      PAGĖGIŲ               48433
MARIJAMPOLĖS  KAZLŲ RŪDOS           47239
KAUNO         BIRŠTONO              32584
Name: Kiekis, Length: 61, dtype: int64
In [86]:
transportas[transportas['Apskritis']=='VILNIAUS'].groupby('Savivaldybė')['Kiekis'].sum().sort_values(ascending=False)
Out[86]:
Savivaldybė
VILNIAUS MIESTO      1347446
VILNIAUS RAJONO       293448
UKMERGĖS RAJONO       143016
ELEKTRĖNŲ             113683
TRAKŲ RAJONO          107364
ŠIRVINTŲ RAJONO        99955
ŠALČININKŲ RAJONO      94368
ŠVENČIONIŲ RAJONO      89548
Name: Kiekis, dtype: int64

🔎 Kiekvienoje Vilniaus savivaldybėje užfiksuota visos įmanomos transporto kategorijos.

In [83]:
transportas[transportas['Apskritis']=='VILNIAUS'].groupby(['Apskritis','Savivaldybė'])['Kategorija'].nunique()
Out[83]:
Apskritis  Savivaldybė      
VILNIAUS   ELEKTRĖNŲ            18
           TRAKŲ RAJONO         18
           UKMERGĖS RAJONO      18
           VILNIAUS MIESTO      18
           VILNIAUS RAJONO      18
           ŠALČININKŲ RAJONO    18
           ŠIRVINTŲ RAJONO      18
           ŠVENČIONIŲ RAJONO    18
Name: Kategorija, dtype: int64
In [87]:
kategorijos
Out[87]:
ID KATEGORIJA APRAŠYMAS
0 1 GK Visureigiai, kėbulas pritaikytas vežti kalinius
1 2 L1 dviratė transporto priemonė, variklio darbinis...
2 3 L2 triratė transporto priemonė, variklio darbini...
3 4 L3 dviratė transporto priemonė, variklio darbinis...
4 5 L4 triratė transporto priemonė su nesimetriškai i...
5 6 L5 triratė transporto priemonė su simetriškai išd...
6 7 L6 keturratė transporto priemonė, eksploatacijai ...
7 8 L7 keturratė transporto priemonė, eksploatacijai...
8 9 M1 transporto priemonė keleiviams vežti, <= 8 sėd...
9 10 M2 transporto priemonė keleiviams vežti, > 8 sėdi...
10 11 M3 transporto priemonė keleiviams vežti, > 8 sėdi...
11 12 N1 transporto priemonė kroviniams vežti, (bendro...
12 13 N2 transporto priemonė kroviniams vežti, (bendro...
13 14 N3 transporto priemonė kroviniams vežti, (bendroj...
14 15 O1 priekabos, (bendroji) masė <= 0,75 t (lengva a...
15 16 O2 priekabos, (bendroji) masė > 0,75 t, tačiau <=...
16 17 O3 priekabos,(bendroji) masė > 3,5 t, tačiau <= 1...
17 18 O4 priekabos, (bendroji) masė > 10 t (krovininio ...
In [88]:
transportas[transportas['Apskritis']=='VILNIAUS'].groupby('Kategorija')['Kiekis'].sum().sort_values(ascending=False)
Out[88]:
Kategorija
M1    1744125
O1     117451
N1     106522
N3      92204
O4      78788
L3      75039
O2      22146
L1      19774
N2      14766
M3       5354
L2       4360
M2       3267
L7       2200
L4       1054
L5        664
L6        525
O3        522
GK         67
Name: Kiekis, dtype: int64

🔎 Daugiausia yra registruojama M1 kategorijos (lengvieji automobiliai) transporto priemonės.

In [93]:
transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'].groupby('Pavadinimas')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_8124\2252289292.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'].groupby('Pavadinimas')['Kiekis'].sum().sort_values(ascending=False)
Out[93]:
Pavadinimas
Dyzelinas                              986078
Benzinas                               527780
Benzinas / Elektra                     107143
Benzinas / Dujos                        80030
Elektra                                 18441
Benzinas / Elektra / Dujos               8444
Dyzelinas / Elektra                      8180
NENUSTATYTA                              6493
Benzinas / Etanolis                       712
Benzinas / Gamtinės dujos                 429
Gamtinės dujos                            186
Benzinas / Etanolis / Dujos               114
Dujos                                      55
Dyzelinas / Dujos                          11
Etanolis                                    7
Benzinas/Etanolis/Elektra                   5
Benzinas / Gamtinės dujos / Elektra         5
Etanolis/Elektra                            5
Gamtinės dujos / Dujos                      4
Benzinas/Biometanas                         3
Name: Kiekis, dtype: int64

🔎 Šioje M1 kategorijoje, didžiausią kiekį sudaro dyzeliu varomos transporto priemonės.

📈 Kaip kas met keitėsi M1 kategorijos dyzelinių transporto priemonių kiekiai Vilniaus apskrityje?

In [30]:
transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False).plot(marker='>', color='g')
plt.show()
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\869824325.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False).plot(marker='>', color='g')
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\869824325.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False).plot(marker='>', color='g')
No description has been provided for this image
In [99]:
transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_8124\204170751.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_8124\204170751.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  transportas[transportas['Apskritis']=='VILNIAUS'][transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
Out[99]:
Metai
2024    274741
2023    273095
2022    270007
2021     98550
2020     69685
Name: Kiekis, dtype: int64

🔎 Matome, kad nepaisant taršos problemų, dyzelinių automobilių kiekis Lietuvoje sparčiai auga kasmet.

🔎 Pažiūrėkime visų savivaldybių dyzelinių M1 transporto priemonių augimą kas met.

In [11]:
dyzelinas=transportas[transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
dyzelinas
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\3798099376.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  dyzelinas=transportas[transportas['Kategorija']=='M1'][transportas['Pavadinimas']=='Dyzelinas'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
Out[11]:
Metai
2024    1146313
2023    1130380
2022    1110160
2021    1095457
2020    1065830
Name: Kiekis, dtype: int64
In [33]:
dyzelinas.plot(marker='>', color='g')
plt.show()
No description has been provided for this image

📈 Visose savivaldybėse dyzelinių automobilių tik daugėja. Galima teigti, kad taršos mokesčio dydis Lietuvai rinktis taršias transporto priemones įtakos neturi.

🔎 Sukelkime mūsų duomenis į mySQL duomenų bazę.

In [11]:
from sqlalchemy import create_engine
In [12]:
my_db = create_engine('mysql://root:*******@localhost/new_schema')
In [13]:
transportas.to_sql('transportas', con=my_db, if_exists='replace', index = False)
Out[13]:
14081
In [14]:
kategorijos.to_sql('kategorijos', con=my_db, if_exists='replace', index = False)
Out[14]:
18

Išvados¶

🚗 Daugiausia transporto priemonių yra registruojama didžiuosiuose miestuose. Hipotezė pasitvirtino. Didžiausias registruojamų transporto priemonių kiekis yra Vilniaus miesto savivaldybėje.

🚗 Mažesniuose miestuose vyrauja taršesnės kuro rūšys. Nebūtinai. Galime ataskaitose kad praktiškai visuose savivaldybėse vyrauja taršiausia kuro rūšis - dyzelinas. Žmonės vis dar masiškai įsigyja dyzelinius automobilius, nepaisant taršos aplinkai.

🚗 Lietuvoje vis daugėja transporto priemonių su kuro kategorijomis iš 'žaliųjų' energijos šaltinių. Hipotezė pasitvirtino. Lyginant pastarūjų penkių metų duomenis, matome, kad kuro rūšies - 'elektra' kiekis kas met augo gan ženkliai. Nors vis dar didžiąją dalį sudaro dyzelinės transporto priemonės, po truputį į Lietuvos rinką atkeliauja ir aplinkai draugiškos.

In [38]:
transportas[transportas['Pavadinimas']=='Elektra'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
Out[38]:
Metai
2024    21042
2023    15427
2022    11301
2021     6928
2020     3686
Name: Kiekis, dtype: int64

🚗 Lietuvoje didelį kiekį registruojant sudaro transporto priemonės, turinčios duomenų trūkumą. Tai problema ar sistemos klaida? Palyginus penkių metų duomenis, matome nemažai transporto priemonių kategorijų, kurių kažkuris rodiklis yra 'NENURODYTAS'. Šis kiekis taip pat stabiliai kyla. Šiuo klausimu diskutavome su AB Regitra atstovais ir paprašėme paaiškinti kodėl taip nutinka. Atsakymas gan paprastas. Dauguma transporto priemonių yra importuojamos iš svečių šalių. Visur yra skirtinigi reikalavimai. Jei transporto priemonei toje šalyje nebuvo privaloma nurodyti kuro rūšies ar registracijos vietos, lygiai taip pat šie kriterijai nebus nurodomi ir Lietuvoje, kadangi originaliuose transporto priemonės dokumentuose šios informacijos nėra. Ši situacija nemenkai iškraipo statistinius duomenis.

In [83]:
NENUSTATYTA=transportas[transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
NENUSTATYTA
Out[83]:
Metai
2024    256750
2023    248378
2022    234208
2021    218566
2020    201463
Name: Kiekis, dtype: int64
In [79]:
transportas[transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Kategorija')['Kiekis'].sum().tail(4)
Out[79]:
Kategorija
O1    672175
O2    103788
O3      3380
O4    339553
Name: Kiekis, dtype: int64

🔎 Transporto priemonės, kurių kategorija yra 'O' - priekabos. Jos neįeina į šią statistiką.

In [74]:
O1=transportas[transportas['Kategorija']=='O1'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\373884727.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  O1=transportas[transportas['Kategorija']=='O1'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
In [73]:
O2=transportas[transportas['Kategorija']=='O2'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\2960482159.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  O2=transportas[transportas['Kategorija']=='O2'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
In [72]:
O3=transportas[transportas['Kategorija']=='O3'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\1155589856.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  O3=transportas[transportas['Kategorija']=='O3'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
In [71]:
O4=transportas[transportas['Kategorija']=='O4'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
C:\Users\Dell\AppData\Local\Temp\ipykernel_11588\912244284.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  O4=transportas[transportas['Kategorija']=='O4'][transportas['Pavadinimas']=='NENUSTATYTA'].groupby('Metai')['Kiekis'].sum().sort_values(ascending=False)
In [84]:
PRIEKABOS=O1+O2+O3+O4
PRIEKABOS
Out[84]:
Metai
2024    249341
2023    240360
2022    225836
2021    210411
2020    192948
Name: Kiekis, dtype: int64
In [85]:
NENUSTATYTA_IS_TIKRO=NENUSTATYTA-PRIEKABOS
NENUSTATYTA_IS_TIKRO
Out[85]:
Metai
2024    7409
2023    8018
2022    8372
2021    8155
2020    8515
Name: Kiekis, dtype: int64

🔎 Vis dėl to, realus transporto priemonių su nenustatyta kuro rūšimi skaičius kas met nėra labai didelis ir jis kas met po truputį mažėja. Galima daryti prielaidą, kad Lietuva po truputį kontroliuoja tokių transporto priemonių importą.

Duomenų šaltiniai¶

♠ Transporto priemonių registracijos duomenys: https://www.regitra.lt/lt/paslaugos/duomenu-teikimas/statistika/transporto-priemones-2

♠ Įsakymas dėl kelių transporto priemonių registravimo taisyklių patvirtinimo: https://e-seimas.lrs.lt/portal/legalAct/lt/TAD/TAIS.136396

Pastabos¶

Duomenys apie transporto priemonių registravimą Lietuvoje nagrinėjami remiantis AB Regitra pateiktais atvirais duomenimis. Dėl duomenų trūkumo informacija gali būti netiksli.

Darbą atliko: Raminta Mačikūnienė, 2025