mirror of
https://github.com/koodiklinikka/palkkakysely.git
synced 2026-01-26 11:23:59 +00:00
Merge pull request #14 from koodiklinikka/2023-improve
Improvements for 2023
This commit is contained in:
Binary file not shown.
@@ -894,4 +894,6 @@ Timestamp Oletko palkansaaja vai laskuttaja? Oletko siirtynyt palkansaajasta las
|
||||
23/09/2023 20:49:29 Palkansaaja En 31-35 Mies 5 DI 7 Nokia Oulu Tuotetalossa, jonka core-bisnes on softa 100 10 Backend developer 3981 55000 Ei
|
||||
24/09/2023 18:28:39 Palkansaaja En 41-45 Mies 13 Yliopisto 0 Turku Konsulttitalossa 100 0 Full stack developer 8000 100000 Kyllä
|
||||
24/09/2023 18:50:12 Palkansaaja En 41-45 Mies 15 FM 5 Turku Konsulttitalossa 30 0 PM/backend developer+ DevOps guy 4000 50000 Ei
|
||||
24/09/2023 21:13:40 Laskuttaja En 31-35 Mies 12 Insinööri 0 7 Fullstack web ja mobiili 99 150000 Käytän välitysfirmoja Suomesta
|
||||
24/09/2023 21:13:40 Laskuttaja En 31-35 Mies 12 Insinööri 0 7 Fullstack web ja mobiili 99 150000 Käytän välitysfirmoja Suomesta
|
||||
24/09/2023 22:31:59 Palkansaaja En 41-45 25 2 Tampere Tuotetalossa, jonka core-bisnes on softa 60 30 Software architect, full-stack 4500 60000 Kyllä
|
||||
24/09/2023 23:45:24 Palkansaaja En 36-40 Mies 20 Luonnontieteiden kandidaatti 70 PK-Seutu (Helsinki, Espoo, Vantaa) Konsulttitalossa 100 40 CxO 8500 102000 Palkka Ei
|
||||
|
Can't render this file because it contains an unexpected character in line 360 and column 453.
|
Binary file not shown.
@@ -1,6 +1,5 @@
|
||||
from __future__ import annotations
|
||||
|
||||
MISTA_ASIAKKAAT_COL = "Mistä asiakkaat ovat?"
|
||||
IKA_COL = "Ikä"
|
||||
KAUPUNKI_COL = "Kaupunki"
|
||||
KIKY_COL = "Onko palkkasi nykyroolissasi mielestäsi kilpailukykyinen?"
|
||||
@@ -8,23 +7,27 @@ KIKY_OTHER_COL = (
|
||||
"Onko palkkasi nykyroolissasi mielestäsi kilpailukykyinen? (muut vastaukset)"
|
||||
)
|
||||
KKPALKKA_COL = "Kuukausipalkka"
|
||||
KK_TULOT_COL = "Kk-tulot (laskennallinen)"
|
||||
KK_TULOT_NORM_COL = "Kk-tulot (laskennallinen, normalisoitu)"
|
||||
LAHITYO_COL = "Kuinka suuren osan ajasta teet lähityönä toimistolla?"
|
||||
LANG_COL = "Vastauskieli"
|
||||
MILLAISESSA_COL = "Millaisessa yrityksessä työskentelet?"
|
||||
MISTA_ASIAKKAAT_COL = "Mistä asiakkaat ovat?"
|
||||
PALAUTE_COL = "Palaute"
|
||||
PALKANSAAJA_VAI_LASKUTTAJA_COL = "Palkansaaja vai laskuttaja"
|
||||
PALVELUT_COL = "Palvelut"
|
||||
ROOLI_COL = "Rooli"
|
||||
ROOLI_NORM_COL = "Rooli (normalisoitu)"
|
||||
SIIRTYNYT_COL = (
|
||||
"Oletko siirtynyt palkansaajasta laskuttajaksi tai päinvastoin 1.10.2022 jälkeen?"
|
||||
)
|
||||
SUKUPUOLI_COL = "Sukupuoli"
|
||||
TUNTILASKUTUS_ALV0_COL = "Tuntilaskutus (ALV 0%, euroina)"
|
||||
TYOAIKA_COL = "Työaika"
|
||||
TYOKOKEMUS_COL = "Työkokemus alalta (vuosina)"
|
||||
TYOPAIKKA_COL = "Työpaikka"
|
||||
VUOSILASKUTUS_ALV0_COL = "Vuosilaskutus (ALV 0%, euroina)"
|
||||
VUOSITULOT_COL = "Vuositulot"
|
||||
MILLAISESSA_COL = "Millaisessa yrityksessä työskentelet?"
|
||||
LAHITYO_COL = "Kuinka suuren osan ajasta teet lähityönä toimistolla?"
|
||||
LANG_COL = "Vastauskieli"
|
||||
KK_TULOT_COL = "Kk-tulot (laskennallinen)"
|
||||
KK_TULOT_NORM_COL = "Kk-tulot (laskennallinen, normalisoitu)"
|
||||
ROOLI_NORM_COL = "Rooli (normalisoitu)"
|
||||
|
||||
COLUMN_MAP_2023 = {
|
||||
"Timestamp": "Timestamp",
|
||||
@@ -37,8 +40,8 @@ COLUMN_MAP_2023 = {
|
||||
"Tulojen muutos viime vuodesta (%)": "Tulojen muutos viime vuodesta (%)",
|
||||
"Montako vuotta olet tehnyt laskuttavaa työtä alalla?": "Montako vuotta olet tehnyt laskuttavaa työtä alalla?",
|
||||
"Mitä palveluja tarjoat?": PALVELUT_COL,
|
||||
"Tuntilaskutus (ALV 0%, euroina)": "Tuntilaskutus (ALV 0%, euroina)",
|
||||
"Vuosilaskutus (ALV 0%, euroina)": "Vuosilaskutus (ALV 0%, euroina)",
|
||||
"Tuntilaskutus (ALV 0%, euroina)": TUNTILASKUTUS_ALV0_COL,
|
||||
"Vuosilaskutus (ALV 0%, euroina)": VUOSILASKUTUS_ALV0_COL,
|
||||
"Hankitko asiakkaasi itse suoraan vai käytätkö välitysfirmojen palveluita?": "Hankitko asiakkaasi itse suoraan vai käytätkö välitysfirmojen palveluita?",
|
||||
"Mistä asiakkaat ovat?": MISTA_ASIAKKAAT_COL,
|
||||
"Työpaikka": "Työpaikka",
|
||||
@@ -52,7 +55,7 @@ COLUMN_MAP_2023 = {
|
||||
"Vapaa kuvaus kokonaiskompensaatiomallista": "Vapaa kuvaus kokonaiskompensaatiomallista",
|
||||
"Onko palkkasi nykyroolissasi mielestäsi kilpailukykyinen?": KIKY_COL,
|
||||
"Vapaa sana": "Vapaa sana",
|
||||
"Palautetta kyselystä ja ideoita ensi vuoden kyselyyn": "Palautetta kyselystä ja ideoita ensi vuoden kyselyyn",
|
||||
"Palautetta kyselystä ja ideoita ensi vuoden kyselyyn": PALAUTE_COL,
|
||||
}
|
||||
|
||||
COLUMN_MAP_2023_EN_TO_FI = {
|
||||
@@ -178,3 +181,8 @@ OTHER_GENDER_VALUES = {
|
||||
"muu/ei",
|
||||
"non-binary, afab",
|
||||
}
|
||||
|
||||
TIMESTAMPS_TO_DROP = {
|
||||
# See "SUBMITTED TWICE, SORRY!!" in English data:
|
||||
"2023-09-08 13:24:46.740",
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ from pulkka.column_maps import (
|
||||
OTHER_GENDER_VALUES,
|
||||
TYOKOKEMUS_COL,
|
||||
ROOLI_NORM_COL,
|
||||
PALAUTE_COL,
|
||||
TIMESTAMPS_TO_DROP,
|
||||
)
|
||||
|
||||
|
||||
@@ -139,6 +141,9 @@ def read_data() -> pd.DataFrame:
|
||||
# Drop bogus data
|
||||
df = df.drop(df[df[SUKUPUOLI_COL] == "taisteluhelikopteri"].index)
|
||||
|
||||
# Drop rows by timestamps known to be duplicate
|
||||
df = df.drop(df[df["Timestamp"].isin(TIMESTAMPS_TO_DROP)].index)
|
||||
|
||||
df[SUKUPUOLI_COL] = df[SUKUPUOLI_COL].apply(map_sukupuoli).astype("category")
|
||||
df[IKA_COL] = df[IKA_COL].astype("category")
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import jinja2
|
||||
import numpy
|
||||
import pandas
|
||||
|
||||
from pulkka import column_maps
|
||||
from pulkka.config import OUT_DIR, YEAR
|
||||
from pulkka.data_ingest import read_data
|
||||
|
||||
@@ -62,10 +63,12 @@ def main():
|
||||
env = jinja2.Environment(
|
||||
autoescape=True,
|
||||
loader=jinja2.FileSystemLoader(TEMPLATE_DIR),
|
||||
undefined=jinja2.StrictUndefined,
|
||||
)
|
||||
env.globals.update(
|
||||
{
|
||||
"date": datetime.datetime.utcnow(),
|
||||
"cm": column_maps,
|
||||
"pd": pandas,
|
||||
"np": numpy,
|
||||
"df": df,
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{% extends "_base.html" %}
|
||||
{% macro tunnusluvut_points(df, col_name, title) %}
|
||||
{% with num_kk = df[pd.to_numeric(df[col_name], errors='coerce').notnull()][col_name] %}
|
||||
<li title="n = {{ num_kk.count() }}">{{ title }}, keskiarvo = {{ num_kk.mean()|round(0) }} €</li>
|
||||
<li title="n = {{ num_kk.count() }}">{{ title }}, mediaani = {{ num_kk.median()|round(0) }} €</li>
|
||||
{% endwith %}
|
||||
{% endmacro %}
|
||||
{% block body %}
|
||||
<header>
|
||||
<a href="https://koodiklinikka.fi">
|
||||
@@ -6,17 +12,29 @@
|
||||
</a>
|
||||
</header>
|
||||
<h1>Koodiklinikan palkkakysely, {{ year }}</h1>
|
||||
<h2>Tunnusluvut</h2>
|
||||
<ul>
|
||||
<li><i>n</i> = {{ df|length }}</li>
|
||||
{% with num_kk = df[pd.to_numeric(df['Kuukausipalkka'], errors='coerce').notnull()]['Kuukausipalkka'] %}
|
||||
<li>Keskimääräinen kuukausipalkka = {{ num_kk.mean()|round(0) }} €</li>
|
||||
<li>Mediaanikuukausipalkka = {{ num_kk.median()|round(0) }} €</li>
|
||||
{% endwith %}
|
||||
{% with num_v = df[pd.to_numeric(df['Vuositulot'], errors='coerce').notnull()]['Vuositulot'] %}
|
||||
<li>Keskimääräiset vuositulot = {{ num_v.mean()|round(0) }} €</li>
|
||||
<li>Mediaanivuositulot = {{ num_v.median()|round(0) }} €</li>
|
||||
{% endwith %}
|
||||
<li><i>n</i> palkansaajia = {{ df[df[cm.PALKANSAAJA_VAI_LASKUTTAJA_COL] == "Palkansaaja"]|length }}</li>
|
||||
<li><i>n</i> laskuttajia = {{ df[df[cm.PALKANSAAJA_VAI_LASKUTTAJA_COL] == "Laskuttaja"]|length }}</li>
|
||||
</ul>
|
||||
<h2>Palkansaajien tunnusluvut</h2>
|
||||
<ul>
|
||||
{% for col_name, title in [
|
||||
(cm.KKPALKKA_COL, 'kuukausipalkka'),
|
||||
(cm.VUOSITULOT_COL, 'vuositulot'),
|
||||
(cm.KK_TULOT_NORM_COL, 'laskennallinen norm. kuukausipalkka'),
|
||||
] %}
|
||||
{{ tunnusluvut_points(df, col_name, title) }}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h2>Laskuttajien tunnusluvut</h2>
|
||||
<ul>
|
||||
{% for col_name, title in [
|
||||
(cm.TUNTILASKUTUS_ALV0_COL, 'tuntilaskutus (ALV 0%)'),
|
||||
(cm.VUOSILASKUTUS_ALV0_COL, 'vuosilaskutus (ALV 0%)'),
|
||||
] %}
|
||||
{{ tunnusluvut_points(df, col_name, title) }}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h2>Työkalut</h2>
|
||||
<ul>
|
||||
@@ -25,7 +43,8 @@
|
||||
<li><a href="/palkkakysely/analysaattori/?url=/palkkakysely/{{ year }}/data.json">Pivot-työkalu</a></li>
|
||||
</ul>
|
||||
<h2>Data</h2>
|
||||
Tämä data on käsitelty <a href="https://github.com/koodiklinikka/palkkakysely/tree/master/pulkka">normalisointiskripteillä</a>.
|
||||
Tämä data on käsitelty
|
||||
<a href="https://github.com/koodiklinikka/palkkakysely/tree/master/pulkka">normalisointiskripteillä</a>.
|
||||
<ul>
|
||||
<li><a href="data.csv">Lähdedata (CSV)</a></li>
|
||||
<li><a href="data.html">Lähdedata (HTML)</a></li>
|
||||
@@ -42,11 +61,12 @@
|
||||
</ul>
|
||||
<h2>Viittaaminen ja lisenssi</h2>
|
||||
<p>
|
||||
Viittaathan dataa käyttäessäsi tähän sivustoon: <a href="{{ site_url }}">{{ site_url }}</a>.
|
||||
Viittaathan dataa käyttäessäsi tähän sivustoon: <a href="{{ site_url }}">{{ site_url }}</a>.
|
||||
</p>
|
||||
<p>
|
||||
Datan lisenssi on <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International</a> (CC BY 4.0).<br>
|
||||
Mankelointityökalujen lisenssi on <a href="https://opensource.org/licenses/MIT">MIT</a>.
|
||||
Datan lisenssi on <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0
|
||||
International</a> (CC BY 4.0).<br>
|
||||
Mankelointityökalujen lisenssi on <a href="https://opensource.org/licenses/MIT">MIT</a>.
|
||||
</p>
|
||||
{% endblock %}
|
||||
{% block footer %}
|
||||
|
||||
Reference in New Issue
Block a user