Vyrų ir moterų pajamų skirtumai Lietuvoje¶
Darbą atliko: Greta Vasiliauskė, 2024 07 22
Hipotezės¶
H1: Vyrų pajamos Lietuvoje yra didesnės nei moterų.
H2: Moterų pajamoms įtaką daro vaikų auginimas.
H3: Mieste gyvenančių Lietuvos piliečių pajamos yra aukštesnės lyginant su kaimo vietovių gyventojais.
Darbo tikslas¶
Išanalizuoti ir nustatyti vyrų ir moterų pajamų skirtumą Lietuvoje, išskiriant samdomo darbo pajamas ir gaunamas pašalpas.
Duomenys¶
In [1]:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import sqlalchemy
import mysql.connector
In [6]:
from IPython.display import Image, display
image_path = "python_paveikslelis.jpg"
display(Image(filename=image_path))
In [2]:
pip install mysql-connector-python
Requirement already satisfied: mysql-connector-python in c:\users\kazgr\anaconda3\lib\site-packages (9.0.0) Note: you may need to restart the kernel to use updated packages.
In [3]:
mydb = mysql.connector.connect(
host="localhost",
user='root',
password='****'
)
In [4]:
cursor = mydb.cursor()
cursor.execute('USE projektas')
cursor.execute('SELECT * FROM gyventoju_uzimtumas')
In [5]:
result = cursor.fetchall()
In [6]:
columns = [desc[0] for desc in cursor.description]
In [82]:
df2 = pd.DataFrame(result, columns=columns)
In [8]:
cursor.close()
mydb.close()
In [84]:
print(df2.head())
_id lytis amzius seimine_padetis \ 0 29d3fba0-9bda-446b-afed-8aa0cf9b6a21 Moteris 65 - 69 Vedes/istekejusi 1 0928b3f8-b743-405a-89c9-336f38af66fc Moteris 65 - 69 Vedes/istekejusi 2 2f21bc92-2ead-420d-a2f1-15bf1ddb5976 Moteris 65 - 69 Vedes/istekejusi 3 c96075e3-dc27-40ca-abf8-6b1dc31e2b37 Moteris 65 - 69 Vedes/istekejusi 4 54d75dcd-6336-49d6-a66f-2d820d8d8194 Moteris 65 - 69 Vedes/istekejusi pilietybe gimimo_salis ekonominio_aktyvumo_statusas_tiriamaja_savaite \ 0 LT LT Neaktyvus 1 LT LT Neaktyvus 2 LT LT Neaktyvus 3 LT LT Neaktyvus 4 LT LT Neaktyvus uzimtumo_statusas profesija auksciausias_sekmingai_igytas_issilavinimas \ 0 Netaikoma Netaikoma Vidutinis (ISCED Auksciausias (ISCED 5,6),4) 1 Netaikoma Netaikoma Vidutinis (ISCED Auksciausias (ISCED 5,6),4) 2 Netaikoma Netaikoma Vidutinis (ISCED Auksciausias (ISCED 5,6),4) 3 Netaikoma Netaikoma Vidutinis (ISCED Auksciausias (ISCED 5,6),4) 4 Netaikoma Netaikoma Vidutinis (ISCED Auksciausias (ISCED 5,6),4) auksciausio_igyto_issilavinimo_mokymo/studiju_programa Data 0 Netaikoma9 2018 1 Netaikoma9 2018 2 Netaikoma9 2018 3 Netaikoma9 2018 4 Netaikoma9 2018
In [10]:
Asmens_pajamos = pd.read_csv('Asmens_pajamos.csv')
Pašalpos = pd.read_csv('Gyventoju_pasalpos.csv', encoding='ISO-8859-1', sep=',')
Duomenų analizė¶
Kas uždirba daugiau?¶
In [11]:
Asmens_pajamos
Out[11]:
id | asmens_id | amžius | lytis | santuokinė_padėtis | sąjunga_asmenų_susitarimu | aukščiausio_išsilavinimo_įgijimo_metai | aukščiausias_įgytas_išsilavinimas_(ISCED lygis) | dabartinio_ar_paskutinio_pagrindinio_darbo_sutarties_tipas | metinės_samdomojo_darbo_pajamos | ... | metinė_piniginė_nauda_gauta_naudojantis_darbdavio_automobiliu_asmeniniams_tikslams | metinės_savarankiško_darbo_pajamos | metinės_savarankiško_darbo_pajamos,_atskaičius_mokesčius | metinės_socialinės_išmokos_bedarbiams | metinės_socialinės_išmokos_bedarbiams_atskaičius_mokesčius | apskritys | sluoksniai | Miestas ar kaimas | asmens_amžius_kai jis_pradėjo_dirbti_nuolatinį_darbą | metai | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 234e17ad-4c3e-42db-9011-0ccfca10627b | 1000040001 | 19 | Vyras | Nevedęs/ netekėjusi | Ne | Microsoft.OleDb.Date | Profesinio mokymo programos kartu su vidurini... | Nuolatinis darbas/neterminuota darbo sutartis | 6367.75 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Vilniaus apskritis | Vilnius | Miestas | 18.0 | Microsoft.OleDb.Date |
1 | c59f760b-ef73-4ca0-b3b4-7359798d8b80 | 1000040002 | 46 | Moteris | Vedęs/ ištekėjusi | Taip, teisiniu pagrindu | Microsoft.OleDb.Date | Vidurinis ugdymas | Nuolatinis darbas/neterminuota darbo sutartis | 8138.60 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Vilniaus apskritis | Vilnius | Miestas | 19.0 | Microsoft.OleDb.Date |
2 | 3c6c9079-81ca-4b9d-a6cc-93c5ec235cd9 | 1000040003 | 44 | Vyras | Vedęs/ ištekėjusi | Taip, teisiniu pagrindu | Microsoft.OleDb.Date | Profesinio mokymo programos turint vidurinį i... | Nuolatinis darbas/neterminuota darbo sutartis | 8905.36 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Vilniaus apskritis | Vilnius | Miestas | 20.0 | Microsoft.OleDb.Date |
3 | 2e8d97e7-df6f-4bcd-900b-30ff9c52636c | 1000040004 | 25 | Vyras | Nevedęs/ netekėjusi | Ne | Microsoft.OleDb.Date | Vidurinio ugdymo programos | Nuolatinis darbas/neterminuota darbo sutartis | 15764.32 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Vilniaus apskritis | Vilnius | Miestas | 19.0 | Microsoft.OleDb.Date |
4 | 455e3699-d32c-4426-936a-15ad2e610d1e | 1000050001 | 47 | Moteris | Nevedęs/ netekėjusi | Ne | Microsoft.OleDb.Date | Bakalauro studijos | Nuolatinis darbas/neterminuota darbo sutartis | 13920.03 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Vilniaus apskritis | Vilnius | Miestas | 22.0 | Microsoft.OleDb.Date |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
117620 | 377f6ecb-c61a-4d40-b434-28ee522c3b80 | 40590301 | 78 | Vyras | Išsituokęs (-usi) | Ne | Microsoft.OleDb.Date | 5 | Nuolatinis darbas/neterminuota darbo sutartis | 0.00 | ... | 0.0 | 1115.68 | 1115.68 | 0.0 | 0.0 | Utenos apskritis | Kaimai | Kaimas | NaN | Microsoft.OleDb.Date |
117621 | b9c13568-4ff3-40fe-9b5f-f89519fa357d | 40590401 | 79 | Vyras | Vedęs/ ištekėjusi | Taip, teisiniu pagrindu | NaN | Ikimokyklinis ugdymas | Nuolatinis darbas/neterminuota darbo sutartis | 0.00 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Telšių apskritis | Kaimai | Kaimas | NaN | Microsoft.OleDb.Date |
117622 | 0b49dff9-24f7-40b6-bf17-25d53d41f8d4 | 40590402 | 77 | Moteris | Vedęs/ ištekėjusi | Taip, teisiniu pagrindu | NaN | Ikimokyklinis ugdymas | Nuolatinis darbas/neterminuota darbo sutartis | 0.00 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Telšių apskritis | Kaimai | Kaimas | NaN | Microsoft.OleDb.Date |
117623 | 0070cf9f-aff0-4c5e-9c88-111d9ed0ec7c | 40590501 | 82 | Vyras | Vedęs/ ištekėjusi | Taip, be teisinio pagrindo | Microsoft.OleDb.Date | 1 | Nuolatinis darbas/neterminuota darbo sutartis | 0.00 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Panevėžio apskritis | Kaimai | Kaimas | NaN | Microsoft.OleDb.Date |
117624 | fc44af03-978c-4e8d-8b28-42cdc1f43d9e | 40590502 | 83 | Moteris | Vedęs/ ištekėjusi | Taip, be teisinio pagrindo | Microsoft.OleDb.Date | 1 | Nuolatinis darbas/neterminuota darbo sutartis | 0.00 | ... | 0.0 | 0.00 | 0.00 | 0.0 | 0.0 | Panevėžio apskritis | Kaimai | Kaimas | NaN | Microsoft.OleDb.Date |
117625 rows × 22 columns
In [ ]:
# Duomenų tipai ir tikrinimas
In [12]:
Asmens_pajamos['metinės_samdomojo_darbo_pajamos'] = pd.to_numeric(Asmens_pajamos['metinės_samdomojo_darbo_pajamos'], errors='coerce')
Asmens_pajamos['metinės_socialinės_išmokos_bedarbiams'] = pd.to_numeric(Asmens_pajamos['metinės_socialinės_išmokos_bedarbiams'], errors='coerce')
In [ ]:
# Vidutinės metinės samdomo darbo pajamas pagal lytį:
In [13]:
pajamos_lytis = Asmens_pajamos.groupby('lytis')['metinės_samdomojo_darbo_pajamos'].mean()
In [ ]:
# Kas uždirba daugiau: vyrai ar moterys? Kiek vidutiniškai uždirba?
In [14]:
print("Vidutinės metinės samdomo darbo pajamos pagal lytį:")
print(pajamos_lytis)
Vidutinės metinės samdomo darbo pajamos pagal lytį: lytis Moteris 6410.711138 Vyras 8167.276526 Name: metinės_samdomojo_darbo_pajamos, dtype: float64
In [15]:
lytis_daugiau_uzdirba = pajamos_lytis.idxmax()
daugiau_uzdirba_suma = pajamos_lytis.max()
In [16]:
print(f"\nDaugiau uždirba: {lytis_daugiau_uzdirba}, Uždirba: {daugiau_uzdirba_suma:.2f}")
Daugiau uždirba: Vyras, Uždirba: 8167.28
In [ ]:
# Grafikas
In [17]:
plt.figure(figsize=(10, 5))
sns.barplot(x=pajamos_lytis.index, y=pajamos_lytis.values)
plt.title('Vidutinės metinės pajamos pagal lytį')
plt.ylabel('Vidutinės pajamos')
plt.xlabel('Lytis')
plt.show()
In [ ]:
# Vidutinės pajamos mieste ir kaime
In [18]:
pajamos_miestas_kaimas = Asmens_pajamos.groupby('Miestas ar kaimas')['metinės_samdomojo_darbo_pajamos'].mean()
In [19]:
print("\nVidutinės metinės samdomo darbo pajamos mieste ir kaime:")
print(pajamos_miestas_kaimas)
Vidutinės metinės samdomo darbo pajamos mieste ir kaime: Miestas ar kaimas Kaimas 4840.659146 Miestas 8437.091754 Name: metinės_samdomojo_darbo_pajamos, dtype: float64
In [ ]:
# Vidutinės pajamos pagal apskritį ir lytį
In [20]:
Asmens_pajamos['metinės_samdomojo_darbo_pajamos'] = pd.to_numeric(Asmens_pajamos['metinės_samdomojo_darbo_pajamos'], errors='coerce')
In [21]:
print(Asmens_pajamos['metinės_samdomojo_darbo_pajamos'].isna().sum())
13862
In [22]:
Asmens_pajamos = Asmens_pajamos.dropna(subset=['metinės_samdomojo_darbo_pajamos'])
In [ ]:
# Pajamų suma apskrityse
In [23]:
pajamų_suma_apskrityse = {}
for index, row in Asmens_pajamos.iterrows():
apskritis = row['apskritys']
suma = row['metinės_samdomojo_darbo_pajamos']
if apskritis in pajamų_suma_apskrityse:
pajamų_suma_apskrityse[apskritis] += suma
else:
pajamų_suma_apskrityse[apskritis] = suma
In [24]:
pajamų_suma_apskrityse
Out[24]:
{'Vilniaus apskritis': 226580896.61000064, 'Kauno apskritis': 164834795.87000096, 'Marijampolės apskritis': 29681769.020000037, 'Klaipėdos apskritis': 87666180.59999992, 'Šiaulių apskritis': 67178961.16999985, 'Panevėžio apskritis': 55709504.66999996, 'Tauragės apskritis': 19270088.960000005, 'Telšių apskritis': 28601542.029999986, 'Utenos apskritis': 36948514.67999999, 'Alytaus apskritis': 30790857.710000012}
In [25]:
pajamos_apskritys_lytis = Asmens_pajamos.groupby(['apskritys', 'lytis'])['metinės_samdomojo_darbo_pajamos'].mean().reset_index()
In [26]:
pajamos_apskritys_lytis
Out[26]:
apskritys | lytis | metinės_samdomojo_darbo_pajamos | |
---|---|---|---|
0 | Alytaus apskritis | Moteris | 5216.929701 |
1 | Alytaus apskritis | Vyras | 6677.456584 |
2 | Kauno apskritis | Moteris | 6900.510649 |
3 | Kauno apskritis | Vyras | 8905.380399 |
4 | Klaipėdos apskritis | Moteris | 6229.987657 |
5 | Klaipėdos apskritis | Vyras | 9289.479223 |
6 | Marijampolės apskritis | Moteris | 4863.249847 |
7 | Marijampolės apskritis | Vyras | 5953.691692 |
8 | Panevėžio apskritis | Moteris | 5722.959421 |
9 | Panevėžio apskritis | Vyras | 6675.936841 |
10 | Tauragės apskritis | Moteris | 4342.728168 |
11 | Tauragės apskritis | Vyras | 5239.837542 |
12 | Telšių apskritis | Moteris | 4975.918287 |
13 | Telšių apskritis | Vyras | 6372.349108 |
14 | Utenos apskritis | Moteris | 5627.151655 |
15 | Utenos apskritis | Vyras | 7081.998820 |
16 | Vilniaus apskritis | Moteris | 7945.934017 |
17 | Vilniaus apskritis | Vyras | 9801.707128 |
18 | Šiaulių apskritis | Moteris | 5638.216146 |
19 | Šiaulių apskritis | Vyras | 7431.896681 |
In [ ]:
# Vidutinės socialinės išmokos bedarbiams pagal apskritis ir lytį
In [27]:
ismokos_lytis = Asmens_pajamos.groupby(['lytis'])['metinės_socialinės_išmokos_bedarbiams'].mean().reset_index()
In [28]:
ismokos_lytis
Out[28]:
lytis | metinės_socialinės_išmokos_bedarbiams | |
---|---|---|
0 | Moteris | 75.081575 |
1 | Vyras | 93.418497 |
In [ ]:
# Vidutinės pajamos pagal santuokinę padėtį
In [29]:
pajamos_santuokine_padetis_lytis = Asmens_pajamos.groupby(['santuokinė_padėtis', 'lytis'])['metinės_samdomojo_darbo_pajamos'].mean().reset_index()
In [30]:
print("\nVidutinės metinės samdomo darbo pajamos pagal santuokinę padėtį ir lytį:")
pajamos_santuokine_padetis_lytis
Vidutinės metinės samdomo darbo pajamos pagal santuokinę padėtį ir lytį:
Out[30]:
santuokinė_padėtis | lytis | metinės_samdomojo_darbo_pajamos | |
---|---|---|---|
0 | Išsituokęs (-usi) | Moteris | 7826.211619 |
1 | Išsituokęs (-usi) | Vyras | 6165.008271 |
2 | Našlys (-ė) | Moteris | 1751.376825 |
3 | Našlys (-ė) | Vyras | 1710.310387 |
4 | Nevedęs/ netekėjusi | Moteris | 4880.879661 |
5 | Nevedęs/ netekėjusi | Vyras | 4892.161218 |
6 | Sutuoktinis (-ė) gyvena atskirai | Moteris | 7621.372027 |
7 | Sutuoktinis (-ė) gyvena atskirai | Vyras | 8253.500838 |
8 | Vedęs/ ištekėjusi | Moteris | 8119.348226 |
9 | Vedęs/ ištekėjusi | Vyras | 9999.730794 |
In [ ]:
# Maksimalios pajamos pagal lytį
In [31]:
lytis = Asmens_pajamos['lytis'].values
pajamos = Asmens_pajamos['metinės_samdomojo_darbo_pajamos'].values
In [32]:
unikalios_lytys = np.unique(lytis)
In [33]:
maksimalios_pajamos_pagal_lyti = {}
for lytis_reiksme in unikalios_lytys:
pajamos_lytyje = pajamos[lytis == lytis_reiksme]
maks = np.max(pajamos_lytyje)
maksimalios_pajamos_pagal_lyti[lytis_reiksme] = maks
In [34]:
maksimalios_pajamos_df = pd.DataFrame(list(maksimalios_pajamos_pagal_lyti.items()), columns=['Lytis', 'Maksimalios Pajamos'])
In [35]:
maksimalios_pajamos_df
Out[35]:
Lytis | Maksimalios Pajamos | |
---|---|---|
0 | Moteris | 253868.60 |
1 | Vyras | 213446.79 |
Kokias pašalpas gauna Lietuvos piliečiai?¶
In [36]:
Pašalpos.head()
Out[36]:
pasalpos_rusis | pasalpos_porusis | lytis | amzius | atveju_skaicius | gaveju_skaicius | apmokamu_dienu_skaicius | pasalpu_skaicius | priskirta_suma_eur | data | amzius_nuo | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Ligos ismoka | Nelaimingi atsitikimai buityje | Vyras | 20-25 m. | 1 | 0 | 3 | 0 | 15.39 | 2009 | 20.0 |
1 | Ligos ismoka | Nelaimingi atsitikimai buityje | Moteris | 30-35 m. | 1 | 0 | 3 | 0 | 15.39 | 2012 | 30.0 |
2 | Ligos ismoka | Nelaimingi atsitikimai buityje | Vyras | 15-20 m. | 1 | 0 | 3 | 0 | 15.39 | 2012 | 15.0 |
3 | Ligos ismoka | Nelaimingi atsitikimai buityje | Vyras | 70-75 m. | 1 | 0 | 3 | 0 | 15.39 | 2012 | 70.0 |
4 | Ligos ismoka | Nelaimingi atsitikimai buityje | Vyras | 65-70 m. | 1 | 0 | 3 | 0 | 15.39 | 2012 | 65.0 |
In [ ]:
# Skaičių formatas
In [37]:
pd.options.display.float_format = '{:,.2f}'.format
In [ ]:
# Pašalpos - pagrindinė informacija
In [38]:
lentelė = Pašalpos[['lytis', 'amzius', 'pasalpos_rusis', 'pasalpos_porusis']]
In [39]:
lentelė.head()
Out[39]:
lytis | amzius | pasalpos_rusis | pasalpos_porusis | |
---|---|---|---|---|
0 | Vyras | 20-25 m. | Ligos ismoka | Nelaimingi atsitikimai buityje |
1 | Moteris | 30-35 m. | Ligos ismoka | Nelaimingi atsitikimai buityje |
2 | Vyras | 15-20 m. | Ligos ismoka | Nelaimingi atsitikimai buityje |
3 | Vyras | 70-75 m. | Ligos ismoka | Nelaimingi atsitikimai buityje |
4 | Vyras | 65-70 m. | Ligos ismoka | Nelaimingi atsitikimai buityje |
In [ ]:
# Priskirta pašalpos suma pagal lytį:
In [40]:
pašalpos_lytis = Pašalpos.groupby('lytis')['priskirta_suma_eur'].sum().reset_index()
In [41]:
print("Priskirta pašalpos suma pagal lytį:")
print(pašalpos_lytis)
Priskirta pašalpos suma pagal lytį: lytis priskirta_suma_eur 0 Moteris 5,734,241,445.78 1 Vyras 2,699,419,465.39
In [44]:
daugiau_pašalpų_lytis = pašalpos_lytis.loc[pašalpos_lytis['priskirta_suma_eur'].idxmax(), 'lytis']
daugiau_pašalpų_suma = pašalpos_lytis['priskirta_suma_eur'].max()
In [45]:
print(f"\nDaugiau pašalpų gauna lytis: {daugiau_pašalpų_lytis} su suma: {daugiau_pašalpų_suma:,.2f} EUR")
Daugiau pašalpų gauna lytis: Moteris su suma: 5,734,241,445.78 EUR
In [ ]:
# Priskirta pašalpos suma pagal pašalpos rūšį ir lytį:
In [46]:
pašalpos_lytis_rūšis = Pašalpos.groupby(['pasalpos_rusis', 'lytis'])['priskirta_suma_eur'].sum().reset_index()
In [47]:
pašalpos_lytis_rūšis
Out[47]:
pasalpos_rusis | lytis | priskirta_suma_eur | |
---|---|---|---|
0 | Ligos ismoka | Moteris | 1,904,762,118.46 |
1 | Ligos ismoka | Vyras | 1,825,745,029.75 |
2 | Motinystes ismoka | Moteris | 1,001,616,593.03 |
3 | Motinystes ismoka | Vyras | 12,427.90 |
4 | Profesines reabilitacijos ismoka | Moteris | 16,001.71 |
5 | Profesines reabilitacijos ismoka | Vyras | 14,904.62 |
6 | Tëvystes ismoka | Vyras | 190,078,096.19 |
7 | Vaiko prieziuros ismoka | Moteris | 2,827,846,732.58 |
8 | Vaiko prieziuros ismoka | Vyras | 683,569,006.93 |
In [48]:
dažniausia_pašalpos_rūšis_moterims = pašalpos_lytis_rūšis[pašalpos_lytis_rūšis['lytis'] == 'Moteris']
In [49]:
dažniausia_pašalpos_rūšis_moterims = dažniausia_pašalpos_rūšis_moterims.loc[dažniausia_pašalpos_rūšis_moterims['priskirta_suma_eur'].idxmax()]
In [50]:
dažniausia_pašalpos_rūšis_vyrams = pašalpos_lytis_rūšis[pašalpos_lytis_rūšis['lytis'] == 'Vyras']
In [51]:
dažniausia_pašalpos_rūšis_vyrams = dažniausia_pašalpos_rūšis_vyrams.loc[dažniausia_pašalpos_rūšis_vyrams['priskirta_suma_eur'].idxmax()]
In [52]:
print(f"Dažniausia pašalpos rūšis tarp moterų: {dažniausia_pašalpos_rūšis_moterims['pasalpos_rusis']} su suma: {dažniausia_pašalpos_rūšis_moterims['priskirta_suma_eur']:,.2f} EUR")
Dažniausia pašalpos rūšis tarp moterų: Vaiko prieziuros ismoka su suma: 2,827,846,732.58 EUR
In [53]:
print(f"Dažniausia pašalpos rūšis tarp vyrų: {dažniausia_pašalpos_rūšis_vyrams['pasalpos_rusis']} su suma: {dažniausia_pašalpos_rūšis_vyrams['priskirta_suma_eur']:,.2f} EUR")
Dažniausia pašalpos rūšis tarp vyrų: Ligos ismoka su suma: 1,825,745,029.75 EUR
In [ ]:
# Vidutinės pašalpos suma pagal lytį
In [55]:
pašalpos_lytis = Pašalpos.groupby('lytis')['priskirta_suma_eur'].sum()
In [56]:
plt.figure(figsize=(10, 5))
sns.barplot(x=pašalpos_lytis.index, y=pašalpos_lytis.values)
plt.title('Priskirta pašalpos suma pagal lytį')
plt.ylabel('Pasalpos suma')
plt.xlabel('lytis')
plt.show()
In [ ]:
# Analizė, skirta išsiaiškinti, ar žmogus gauna aukštas, ar žemas pajamas, remiantis jų amžiumi ir metinėmis samdomo darbo pajamomis.
In [57]:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
In [58]:
data = {
'amžius': np.random.randint(18, 70, size=1000),
'metinės_samdomojo_darbo_pajamos': np.random.uniform(5000, 60000, size=1000)
}
df = pd.DataFrame(data)
In [59]:
df['pajamų_klasė'] = df['metinės_samdomojo_darbo_pajamos'].apply(lambda x: 1 if x > 25000 else 0)
In [60]:
X = df[['amžius', 'metinės_samdomojo_darbo_pajamos']]
y = df['pajamų_klasė']
In [61]:
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
In [62]:
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
In [63]:
model = LogisticRegression()
model.fit(X_train, y_train)
Out[63]:
LogisticRegression()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LogisticRegression()
In [64]:
y_pred = model.predict(X_test)
In [65]:
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
Confusion Matrix: [[112 3] [ 0 185]]
In [66]:
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
Classification Report: precision recall f1-score support 0 1.00 0.97 0.99 115 1 0.98 1.00 0.99 185 accuracy 0.99 300 macro avg 0.99 0.99 0.99 300 weighted avg 0.99 0.99 0.99 300
In [67]:
xx, yy = np.meshgrid(np.linspace(X_scaled[:, 0].min() - 1, X_scaled[:, 0].max() + 1, 500),
np.linspace(X_scaled[:, 1].min() - 1, X_scaled[:, 1].max() + 1, 500))
In [68]:
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
In [69]:
plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.3, cmap=plt.cm.coolwarm)
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=y, edgecolor='k', cmap=plt.cm.coolwarm)
plt.xlabel('Amžius (normalizuotas)')
plt.ylabel('Metinės samdomojo darbo pajamos (normalizuotos)')
plt.title('Sprendimo ribos ir duomenų taškai')
plt.show()
Gyventojų užimtumas¶
In [ ]:
# Užimtumo statusas pagal lytį
In [85]:
grouped = df2.groupby(['lytis', 'uzimtumo_statusas']).size().unstack(fill_value=0)
In [86]:
total_by_gender = grouped.sum(axis=1)
In [87]:
percentage_by_status = (grouped.div(total_by_gender, axis=0) * 100).round(2)
In [88]:
print("Grupavimas pagal lytį ir užimtumo statusą:\n", grouped)
Grupavimas pagal lytį ir užimtumo statusą: uzimtumo_statusas Kitas Netaikoma Samdomasis darbuotojas lytis Moteris 15318 169802 136638 Vyras 19724 138261 111943
In [89]:
print("\nProcentinė dalis pagal užimtumo statusą:\n", percentage_by_status)
Procentinė dalis pagal užimtumo statusą: uzimtumo_statusas Kitas Netaikoma Samdomasis darbuotojas lytis Moteris 4.76 52.77 42.47 Vyras 7.31 51.22 41.47
In [ ]:
# Ekonominio aktyvumo statusas pagal lytį
In [91]:
grouped = df2.groupby(['lytis', 'ekonominio_aktyvumo_statusas_tiriamaja_savaite']).size().unstack(fill_value=0)
In [92]:
total_by_gender = grouped.sum(axis=1)
In [93]:
percentage_by_status = (grouped.div(total_by_gender, axis=0) * 100).round(2)
In [94]:
print("Grupavimas pagal lytį ir ekonominio aktyvumo statusą:\n", grouped)
Grupavimas pagal lytį ir ekonominio aktyvumo statusą: ekonominio_aktyvumo_statusas_tiriamaja_savaite Bedarbis Neaktyvus \ lytis Moteris 13999 117198 Vyras 14865 83070 ekonominio_aktyvumo_statusas_tiriamaja_savaite Netaikoma (jaunesniems kaip 15 metu asmenims) \ lytis Moteris 38605 Vyras 40326 ekonominio_aktyvumo_statusas_tiriamaja_savaite Uzimtasis lytis Moteris 151956 Vyras 131667
In [95]:
print("\nProcentinė dalis pagal ekonominio aktyvumo statusą:\n", percentage_by_status)
Procentinė dalis pagal ekonominio aktyvumo statusą: ekonominio_aktyvumo_statusas_tiriamaja_savaite Bedarbis Neaktyvus \ lytis Moteris 4.35 36.42 Vyras 5.51 30.77 ekonominio_aktyvumo_statusas_tiriamaja_savaite Netaikoma (jaunesniems kaip 15 metu asmenims) \ lytis Moteris 12.00 Vyras 14.94 ekonominio_aktyvumo_statusas_tiriamaja_savaite Uzimtasis lytis Moteris 47.23 Vyras 48.78
In [ ]:
# Įgytas išsilavinimas
In [96]:
columns = [desc[0] for desc in cursor.description]
In [97]:
df = pd.DataFrame(result, columns=columns)
In [98]:
cursor.close()
mydb.close()
In [99]:
grouped = df.groupby(['lytis', 'auksciausias_sekmingai_igytas_issilavinimas']).size().unstack(fill_value=0)
In [100]:
total_by_gender = grouped.sum(axis=1)
In [101]:
percentage_by_education = (grouped.div(total_by_gender, axis=0) * 100).round(2)
In [102]:
print("Įgytas išsilavinimas:\n", grouped)
Įgytas išsilavinimas: auksciausias_sekmingai_igytas_issilavinimas Auksciausias (ISCED 5,6) \ lytis Moteris 92210 Vyras 52515 auksciausias_sekmingai_igytas_issilavinimas Netaikoma \ lytis Moteris 38605 Vyras 40326 auksciausias_sekmingai_igytas_issilavinimas Vidutinis (ISCED Auksciausias (ISCED 5,6),4) \ lytis Moteris 142622 Vyras 135477 auksciausias_sekmingai_igytas_issilavinimas zemesnis (ISCED 0,Vidutinis (ISCED Auksciausias (ISCED 5,6),4)) lytis Moteris 48321 Vyras 41610
In [103]:
print("\nProcentinė dalis pagal įgytą išsilavinimą:\n", percentage_by_education)
Procentinė dalis pagal įgytą išsilavinimą: auksciausias_sekmingai_igytas_issilavinimas Auksciausias (ISCED 5,6) \ lytis Moteris 28.66 Vyras 19.46 auksciausias_sekmingai_igytas_issilavinimas Netaikoma \ lytis Moteris 12.00 Vyras 14.94 auksciausias_sekmingai_igytas_issilavinimas Vidutinis (ISCED Auksciausias (ISCED 5,6),4) \ lytis Moteris 44.33 Vyras 50.19 auksciausias_sekmingai_igytas_issilavinimas zemesnis (ISCED 0,Vidutinis (ISCED Auksciausias (ISCED 5,6),4)) lytis Moteris 15.02 Vyras 15.42
In [104]:
highest_education = 'Auksciausias (ISCED 5,6)'
In [105]:
highest_education_counts = grouped[highest_education]
In [106]:
most_common_gender = highest_education_counts.idxmax()
In [107]:
print(f'Aukščiausią išsilavinimą dažniau įgyja: {most_common_gender}')
Aukščiausią išsilavinimą dažniau įgyja: Moteris
Išvados¶
- Nagrinejant pajamas, gautas iš samdomo darbo, matome, jog vyrų pajamos Lietuvoje yra didesnės nei moterų. Nepaisant to, kad moterys dažniau įgyja aukščiausią išsilavinimą.
- Analizuojant pagal santuokinę padėtį, matome, jog nesusituokusių moterų ir vyrų pajamos skiriasi neženkliai, tačiau lyginant vedusius vyrus ir ištekėjusias moteris - gaunamų pajamų skirtumas ženkliai padidėja. Tačiau daugiau pašalpų gauna moterys, dažniausia pašalpos rūšis: vaiko priežiūros išmoka.
- Miesto gyventojų pajamos didesnės nei kaimo gyventojų. Vidutinės metinės samdomo darbo pajamos mieste ir kaime:
Kaimas 5425.902538 Miestas 9301.656639