from datetime import datetime
print(f'Päivitetty {datetime.now().date()} / Aki Taanila')
Päivitetty 2023-05-02 / Aki Taanila
Tämä Jypyter-notebook sisältää esimerkkejä dataframen muotoilusta style-ominaisuuden avulla.
import pandas as pd
df = pd.read_excel('http://taanila.fi/data1.xlsx')
df
nro | sukup | ikä | perhe | koulutus | palveluv | palkka | johto | työtov | työymp | palkkat | työteht | työterv | lomaosa | kuntosa | hieroja | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 38 | 1 | 1.0 | 22.0 | 3587 | 3 | 3.0 | 3 | 3 | 3 | NaN | NaN | NaN | NaN |
1 | 2 | 1 | 29 | 2 | 2.0 | 10.0 | 2963 | 1 | 5.0 | 2 | 1 | 3 | NaN | NaN | NaN | NaN |
2 | 3 | 1 | 30 | 1 | 1.0 | 7.0 | 1989 | 3 | 4.0 | 1 | 1 | 3 | 1.0 | NaN | NaN | NaN |
3 | 4 | 1 | 36 | 2 | 1.0 | 14.0 | 2144 | 3 | 3.0 | 3 | 3 | 3 | 1.0 | NaN | NaN | NaN |
4 | 5 | 1 | 24 | 1 | 2.0 | 4.0 | 2183 | 2 | 3.0 | 2 | 1 | 2 | 1.0 | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
77 | 78 | 1 | 22 | 1 | 3.0 | 0.0 | 1598 | 4 | 4.0 | 4 | 3 | 4 | NaN | 1.0 | 1.0 | NaN |
78 | 79 | 1 | 33 | 1 | 1.0 | 2.0 | 1638 | 1 | 3.0 | 2 | 1 | 2 | 1.0 | NaN | NaN | NaN |
79 | 80 | 1 | 27 | 1 | 2.0 | 7.0 | 2612 | 3 | 4.0 | 3 | 3 | 3 | 1.0 | NaN | 1.0 | NaN |
80 | 81 | 1 | 35 | 2 | 2.0 | 16.0 | 2808 | 3 | 4.0 | 3 | 3 | 3 | NaN | NaN | NaN | NaN |
81 | 82 | 2 | 35 | 2 | 3.0 | 15.0 | 2183 | 3 | 4.0 | 4 | 3 | 4 | 1.0 | NaN | NaN | NaN |
82 rows × 16 columns
# Luon listat, joita tarvitsen jatkossa:
koulutus = ['Peruskoulu', '2. aste', 'Korkeakoulu', 'Ylempi korkeakoulu']
sukup = ['Mies', 'Nainen']
tyytyväisyys = ['Erittäin tyytymätön', 'Jokseenkin tyytymätön', 'Ei tyytymätön eikä tyytyväinen',
'Jokseenkin tyytyväinen', 'Erittäin tyytyväinen']
# Frekvenssitaulukko ilman muotoilua:
df1 = pd.crosstab(df['koulutus'], 'f')
df1.index = koulutus
df1.columns.name = ''
df1['%'] = df1/df1.sum()*100
df1
f | % | |
---|---|---|
Peruskoulu | 27 | 33.333333 |
2. aste | 30 | 37.037037 |
Korkeakoulu | 22 | 27.160494 |
Ylempi korkeakoulu | 2 | 2.469136 |
# Ristiintaulukointi ilman muotoilua:
df2 = pd.crosstab(df['koulutus'], df['sukup'], normalize='columns')
df2.index = koulutus
df2.columns = ['Mies', 'Nainen']
df2
Mies | Nainen | |
---|---|---|
Peruskoulu | 0.354839 | 0.263158 |
2. aste | 0.370968 | 0.368421 |
Korkeakoulu | 0.241935 | 0.368421 |
Ylempi korkeakoulu | 0.032258 | 0.000000 |
# Tyytyväisyyksiä eri asiohin ilman muotoilua:
df3 = df['johto'].value_counts(sort=False, normalize=True).to_frame()
df3['työtov'] = df['työtov'].value_counts(sort=False, normalize=True)
df3['työymp'] = df['työymp'].value_counts(sort=False, normalize=True)
df3['palkkat'] = df['palkkat'].value_counts(sort=False, normalize=True)
df3['työteht'] = df['työteht'].value_counts(sort=False, normalize=True)
df3.index = tyytyväisyys
df3.loc['Yhteensä'] = df3.sum()
df3
johto | työtov | työymp | palkkat | työteht | |
---|---|---|---|---|---|
Erittäin tyytymätön | 0.365854 | 0.197531 | 0.365854 | 0.231707 | 0.353659 |
Jokseenkin tyytymätön | 0.085366 | NaN | 0.109756 | 0.402439 | 0.060976 |
Ei tyytymätön eikä tyytyväinen | 0.195122 | 0.037037 | 0.109756 | 0.231707 | 0.182927 |
Jokseenkin tyytyväinen | 0.280488 | 0.432099 | 0.280488 | 0.121951 | 0.304878 |
Erittäin tyytyväinen | 0.073171 | 0.333333 | 0.134146 | 0.012195 | 0.097561 |
Yhteensä | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
Puuttuvien arvojen muotoilu sujuu highlight_null-funktiolla:
df.style.highlight_null(color='lightgreen')
nro | sukup | ikä | perhe | koulutus | palveluv | palkka | johto | työtov | työymp | palkkat | työteht | työterv | lomaosa | kuntosa | hieroja | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 38 | 1 | 1.000000 | 22.000000 | 3587 | 3 | 3.000000 | 3 | 3 | 3 | nan | nan | nan | nan |
1 | 2 | 1 | 29 | 2 | 2.000000 | 10.000000 | 2963 | 1 | 5.000000 | 2 | 1 | 3 | nan | nan | nan | nan |
2 | 3 | 1 | 30 | 1 | 1.000000 | 7.000000 | 1989 | 3 | 4.000000 | 1 | 1 | 3 | 1.000000 | nan | nan | nan |
3 | 4 | 1 | 36 | 2 | 1.000000 | 14.000000 | 2144 | 3 | 3.000000 | 3 | 3 | 3 | 1.000000 | nan | nan | nan |
4 | 5 | 1 | 24 | 1 | 2.000000 | 4.000000 | 2183 | 2 | 3.000000 | 2 | 1 | 2 | 1.000000 | nan | nan | nan |
5 | 6 | 2 | 31 | 2 | 2.000000 | 14.000000 | 1910 | 4 | 4.000000 | 5 | 2 | 4 | 1.000000 | 1.000000 | nan | nan |
6 | 7 | 1 | 49 | 1 | 2.000000 | 16.000000 | 2066 | 3 | 5.000000 | 4 | 2 | 2 | nan | nan | 1.000000 | nan |
7 | 8 | 1 | 55 | 1 | 1.000000 | 0.000000 | 2066 | 3 | 5.000000 | 3 | 1 | 3 | 1.000000 | nan | nan | nan |
8 | 9 | 1 | 40 | 2 | 1.000000 | 23.000000 | 2768 | 2 | 4.000000 | 4 | 2 | 4 | nan | 1.000000 | nan | nan |
9 | 10 | 1 | 33 | 1 | 1.000000 | 16.000000 | 2106 | 3 | 2.000000 | 1 | 1 | 1 | 1.000000 | nan | nan | nan |
10 | 11 | 1 | 39 | 2 | 1.000000 | 22.000000 | 2651 | 3 | 5.000000 | 3 | 1 | 3 | nan | nan | nan | nan |
11 | 12 | 1 | 40 | 2 | 3.000000 | 21.000000 | 2846 | 3 | 5.000000 | 3 | 1 | 2 | nan | 1.000000 | nan | 1.000000 |
12 | 13 | 1 | 35 | 2 | 3.000000 | 15.000000 | 2808 | 3 | 5.000000 | 3 | 1 | 4 | nan | 1.000000 | nan | nan |
13 | 14 | 1 | 58 | 2 | 3.000000 | 21.000000 | 3587 | 4 | 5.000000 | 4 | 1 | 3 | nan | nan | nan | nan |
14 | 15 | 1 | 53 | 2 | 3.000000 | 12.000000 | 3393 | 4 | 4.000000 | 4 | 4 | 4 | nan | 1.000000 | nan | nan |
15 | 16 | 2 | 42 | 2 | 3.000000 | 23.000000 | 2691 | 3 | 3.000000 | 3 | 3 | 3 | 1.000000 | nan | nan | 1.000000 |
16 | 17 | 1 | 26 | 1 | 4.000000 | 2.000000 | 5225 | 5 | 5.000000 | 5 | 4 | 5 | nan | nan | 1.000000 | nan |
17 | 18 | 2 | 38 | 2 | 3.000000 | 17.000000 | 2729 | 4 | 3.000000 | 4 | 2 | 1 | nan | nan | nan | nan |
18 | 19 | 1 | 42 | 1 | 3.000000 | 20.000000 | 2925 | 2 | 3.000000 | 4 | 1 | 4 | 1.000000 | nan | nan | 1.000000 |
19 | 20 | 2 | 40 | 2 | 2.000000 | 13.000000 | 2457 | 3 | 3.000000 | 4 | 3 | 2 | 1.000000 | nan | nan | 1.000000 |
20 | 21 | 2 | 40 | 2 | 3.000000 | 20.000000 | 2691 | 2 | 4.000000 | 5 | 3 | 4 | nan | nan | nan | nan |
21 | 22 | 1 | 47 | 2 | 3.000000 | 17.000000 | 4874 | 2 | 4.000000 | 3 | 2 | 4 | nan | 1.000000 | nan | nan |
22 | 23 | 1 | 44 | 2 | 1.000000 | 27.000000 | 3510 | 4 | 4.000000 | 4 | 4 | 4 | nan | 1.000000 | nan | nan |
23 | 24 | 1 | 36 | 1 | 3.000000 | 7.000000 | 4446 | 3 | 4.000000 | 3 | 4 | 5 | nan | nan | nan | nan |
24 | 25 | 1 | 43 | 2 | 3.000000 | 1.000000 | 2925 | 4 | 4.000000 | 4 | 4 | 4 | nan | 1.000000 | nan | nan |
25 | 26 | 1 | 26 | 1 | 2.000000 | 3.000000 | 1521 | 2 | 4.000000 | 2 | 1 | 3 | 1.000000 | nan | 1.000000 | 1.000000 |
26 | 27 | 1 | 26 | 1 | 2.000000 | 2.000000 | 1989 | 2 | 4.000000 | 2 | 2 | 3 | 1.000000 | nan | nan | 1.000000 |
27 | 28 | 2 | 56 | 1 | 1.000000 | 15.000000 | 2223 | 3 | 4.000000 | 3 | 2 | 4 | 1.000000 | nan | nan | 1.000000 |
28 | 29 | 1 | 47 | 2 | 2.000000 | 23.000000 | 2808 | 2 | 4.000000 | 3 | 1 | 4 | 1.000000 | nan | nan | nan |
29 | 30 | 1 | 21 | 1 | nan | nan | 1949 | 4 | 4.000000 | 3 | 3 | 2 | 1.000000 | nan | nan | nan |
30 | 31 | 1 | 21 | 1 | 3.000000 | 1.000000 | 2340 | 4 | 5.000000 | 3 | 4 | 2 | 1.000000 | nan | 1.000000 | 1.000000 |
31 | 32 | 1 | 45 | 2 | 1.000000 | 24.000000 | 2925 | 4 | 4.000000 | 4 | 3 | 4 | nan | 1.000000 | nan | nan |
32 | 33 | 1 | 59 | 2 | 3.000000 | 15.000000 | 6278 | 4 | 4.000000 | 5 | 4 | 4 | nan | 1.000000 | nan | nan |
33 | 34 | 1 | 37 | 2 | 1.000000 | 14.000000 | 2183 | 1 | 5.000000 | 1 | 1 | 2 | 1.000000 | nan | nan | 1.000000 |
34 | 35 | 1 | 28 | 2 | 2.000000 | 5.000000 | 1989 | 3 | 4.000000 | 3 | 3 | 3 | 1.000000 | nan | 1.000000 | 1.000000 |
35 | 36 | 1 | 31 | 2 | 3.000000 | 0.000000 | 1559 | 2 | 4.000000 | 3 | 1 | 3 | 1.000000 | nan | nan | nan |
36 | 37 | 2 | 56 | 2 | 2.000000 | 17.000000 | 2729 | 5 | 5.000000 | 5 | 5 | 5 | nan | nan | nan | 1.000000 |
37 | 38 | 1 | 50 | 2 | 1.000000 | 1.000000 | 2027 | 5 | 5.000000 | 4 | 1 | 4 | 1.000000 | 1.000000 | nan | nan |
38 | 39 | 1 | 30 | 1 | 2.000000 | 10.000000 | 2300 | 3 | 5.000000 | 3 | 3 | 4 | nan | nan | nan | nan |
39 | 40 | 1 | 32 | 1 | 1.000000 | 3.000000 | 2106 | 1 | 5.000000 | 4 | 1 | 3 | 1.000000 | nan | nan | nan |
40 | 41 | 1 | 33 | 2 | 3.000000 | 9.000000 | 2846 | 3 | 3.000000 | 4 | 2 | 3 | 1.000000 | nan | nan | nan |
41 | 42 | 1 | 29 | 1 | 2.000000 | 6.000000 | 2534 | 3 | 4.000000 | 3 | 1 | 2 | 1.000000 | nan | nan | nan |
42 | 43 | 2 | 40 | 2 | 3.000000 | 12.000000 | 2144 | 4 | 4.000000 | 4 | 4 | 4 | nan | 1.000000 | nan | nan |
43 | 44 | 1 | 30 | 1 | 2.000000 | 7.000000 | 2223 | 2 | 3.000000 | 4 | 1 | 3 | 1.000000 | nan | nan | 1.000000 |
44 | 45 | 1 | 55 | 2 | 1.000000 | 35.000000 | 2651 | 4 | 5.000000 | 4 | 2 | 4 | 1.000000 | nan | nan | 1.000000 |
45 | 46 | 2 | 51 | 2 | 1.000000 | 28.000000 | 1989 | 3 | 3.000000 | 2 | 2 | 3 | 1.000000 | nan | nan | 1.000000 |
46 | 47 | 2 | 22 | 1 | 3.000000 | 21.000000 | 1872 | 3 | 3.000000 | 4 | 1 | 3 | nan | nan | 1.000000 | nan |
47 | 48 | 1 | 34 | 2 | 1.000000 | 18.000000 | 2183 | 4 | 5.000000 | 4 | 1 | 3 | nan | nan | nan | nan |
48 | 49 | 1 | 27 | 2 | 2.000000 | 7.000000 | 2729 | 4 | 4.000000 | 3 | 3 | 5 | nan | nan | 1.000000 | nan |
49 | 50 | 1 | 29 | 1 | 3.000000 | 7.000000 | 2340 | 3 | 4.000000 | 3 | 2 | 3 | 1.000000 | nan | nan | nan |
50 | 51 | 2 | 39 | 2 | 2.000000 | 10.000000 | 2106 | 4 | 5.000000 | 5 | 4 | 5 | nan | 1.000000 | nan | nan |
51 | 52 | 1 | 41 | 2 | 1.000000 | 18.000000 | 2261 | 5 | 5.000000 | 5 | 2 | 5 | nan | 1.000000 | nan | nan |
52 | 53 | 1 | 44 | 2 | 1.000000 | 3.000000 | 1989 | 1 | 2.000000 | 2 | 1 | 1 | 1.000000 | nan | nan | nan |
53 | 54 | 1 | 25 | 1 | 2.000000 | 1.000000 | 1559 | 2 | 4.000000 | 3 | 1 | 2 | 1.000000 | nan | nan | nan |
54 | 55 | 2 | 45 | 2 | 1.000000 | 17.000000 | 2417 | 3 | 5.000000 | 4 | 3 | 3 | nan | nan | nan | 1.000000 |
55 | 56 | 2 | 31 | 2 | 1.000000 | 6.000000 | 1949 | 4 | 4.000000 | 4 | 3 | 3 | 1.000000 | nan | nan | 1.000000 |
56 | 57 | 1 | 61 | 2 | 2.000000 | 36.000000 | 3119 | 2 | nan | 2 | 1 | 5 | 1.000000 | nan | nan | 1.000000 |
57 | 58 | 1 | 38 | 2 | 2.000000 | nan | 2574 | 2 | 3.000000 | 1 | 1 | 2 | 1.000000 | nan | nan | 1.000000 |
58 | 59 | 1 | 20 | 1 | 2.000000 | 1.000000 | 2261 | 3 | 4.000000 | 3 | 2 | 3 | nan | nan | nan | nan |
59 | 60 | 1 | 31 | 1 | 1.000000 | 10.000000 | 2144 | 4 | 4.000000 | 3 | 1 | 3 | 1.000000 | nan | nan | nan |
60 | 61 | 1 | 44 | 1 | 1.000000 | 19.000000 | 2183 | 2 | 2.000000 | 1 | 1 | 2 | 1.000000 | nan | nan | nan |
61 | 62 | 1 | 40 | 2 | 1.000000 | 0.000000 | 1872 | 2 | 3.000000 | 1 | 2 | 3 | 1.000000 | nan | nan | nan |
62 | 63 | 2 | 51 | 2 | 2.000000 | 10.000000 | 1872 | 4 | 3.000000 | 2 | 2 | 3 | 1.000000 | nan | nan | nan |
63 | 64 | 2 | 44 | 1 | 2.000000 | 1.000000 | 1715 | 4 | 4.000000 | 3 | 2 | 3 | 1.000000 | nan | nan | 1.000000 |
64 | 65 | 2 | 35 | 2 | 2.000000 | 17.000000 | 2691 | 4 | 4.000000 | 5 | 2 | 4 | 1.000000 | nan | nan | 1.000000 |
65 | 66 | 2 | 37 | 2 | 1.000000 | 16.000000 | 2027 | 5 | 5.000000 | 5 | 4 | 5 | 1.000000 | 1.000000 | nan | nan |
66 | 67 | 1 | 37 | 2 | 4.000000 | 8.000000 | 5069 | 3 | 4.000000 | 3 | 2 | 2 | 1.000000 | 1.000000 | nan | 1.000000 |
67 | 68 | 1 | 33 | 2 | 3.000000 | 7.000000 | 2417 | 2 | 4.000000 | 3 | 1 | 4 | nan | nan | nan | nan |
68 | 69 | 1 | 28 | 2 | 2.000000 | 1.000000 | 3510 | 4 | 5.000000 | 3 | 1 | 4 | nan | nan | nan | nan |
69 | 70 | 1 | 52 | 2 | 2.000000 | 22.000000 | 3119 | 3 | 4.000000 | 3 | 2 | 2 | 1.000000 | 1.000000 | nan | 1.000000 |
70 | 71 | 1 | 34 | 2 | 2.000000 | 1.000000 | 2495 | 3 | 5.000000 | 5 | 3 | 4 | nan | 1.000000 | nan | nan |
71 | 72 | 1 | 46 | 2 | 2.000000 | 23.000000 | 3470 | 3 | 5.000000 | 5 | 3 | 4 | nan | 1.000000 | nan | nan |
72 | 73 | 2 | 40 | 2 | 3.000000 | 2.000000 | 2027 | 5 | 3.000000 | 4 | 3 | 4 | 1.000000 | nan | nan | nan |
73 | 74 | 1 | 45 | 2 | 1.000000 | 20.000000 | 2846 | 3 | 5.000000 | 1 | 1 | 3 | 1.000000 | nan | nan | nan |
74 | 75 | 1 | 40 | 1 | 1.000000 | 1.000000 | 1949 | 1 | 5.000000 | 1 | 1 | 1 | 1.000000 | nan | nan | nan |
75 | 76 | 1 | 37 | 1 | 2.000000 | 15.000000 | 1598 | 1 | 5.000000 | 1 | 1 | 1 | 1.000000 | nan | nan | nan |
76 | 77 | 1 | 39 | 1 | 2.000000 | 22.000000 | 2183 | 4 | 5.000000 | 3 | 1 | 2 | nan | nan | nan | nan |
77 | 78 | 1 | 22 | 1 | 3.000000 | 0.000000 | 1598 | 4 | 4.000000 | 4 | 3 | 4 | nan | 1.000000 | 1.000000 | nan |
78 | 79 | 1 | 33 | 1 | 1.000000 | 2.000000 | 1638 | 1 | 3.000000 | 2 | 1 | 2 | 1.000000 | nan | nan | nan |
79 | 80 | 1 | 27 | 1 | 2.000000 | 7.000000 | 2612 | 3 | 4.000000 | 3 | 3 | 3 | 1.000000 | nan | 1.000000 | nan |
80 | 81 | 1 | 35 | 2 | 2.000000 | 16.000000 | 2808 | 3 | 4.000000 | 3 | 3 | 3 | nan | nan | nan | nan |
81 | 82 | 2 | 35 | 2 | 3.000000 | 15.000000 | 2183 | 3 | 4.000000 | 4 | 3 | 4 | 1.000000 | nan | nan | nan |
Seuraavassa näytän nan-arvon sijasta väliviivan - käyttämällä na_rep-parametria. Samalla esitän arvot ilman desimaaleja '{:.0f}'.
df.style.format('{:.0f}', na_rep='-').highlight_null(color='lightgreen')
nro | sukup | ikä | perhe | koulutus | palveluv | palkka | johto | työtov | työymp | palkkat | työteht | työterv | lomaosa | kuntosa | hieroja | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 38 | 1 | 1 | 22 | 3587 | 3 | 3 | 3 | 3 | 3 | - | - | - | - |
1 | 2 | 1 | 29 | 2 | 2 | 10 | 2963 | 1 | 5 | 2 | 1 | 3 | - | - | - | - |
2 | 3 | 1 | 30 | 1 | 1 | 7 | 1989 | 3 | 4 | 1 | 1 | 3 | 1 | - | - | - |
3 | 4 | 1 | 36 | 2 | 1 | 14 | 2144 | 3 | 3 | 3 | 3 | 3 | 1 | - | - | - |
4 | 5 | 1 | 24 | 1 | 2 | 4 | 2183 | 2 | 3 | 2 | 1 | 2 | 1 | - | - | - |
5 | 6 | 2 | 31 | 2 | 2 | 14 | 1910 | 4 | 4 | 5 | 2 | 4 | 1 | 1 | - | - |
6 | 7 | 1 | 49 | 1 | 2 | 16 | 2066 | 3 | 5 | 4 | 2 | 2 | - | - | 1 | - |
7 | 8 | 1 | 55 | 1 | 1 | 0 | 2066 | 3 | 5 | 3 | 1 | 3 | 1 | - | - | - |
8 | 9 | 1 | 40 | 2 | 1 | 23 | 2768 | 2 | 4 | 4 | 2 | 4 | - | 1 | - | - |
9 | 10 | 1 | 33 | 1 | 1 | 16 | 2106 | 3 | 2 | 1 | 1 | 1 | 1 | - | - | - |
10 | 11 | 1 | 39 | 2 | 1 | 22 | 2651 | 3 | 5 | 3 | 1 | 3 | - | - | - | - |
11 | 12 | 1 | 40 | 2 | 3 | 21 | 2846 | 3 | 5 | 3 | 1 | 2 | - | 1 | - | 1 |
12 | 13 | 1 | 35 | 2 | 3 | 15 | 2808 | 3 | 5 | 3 | 1 | 4 | - | 1 | - | - |
13 | 14 | 1 | 58 | 2 | 3 | 21 | 3587 | 4 | 5 | 4 | 1 | 3 | - | - | - | - |
14 | 15 | 1 | 53 | 2 | 3 | 12 | 3393 | 4 | 4 | 4 | 4 | 4 | - | 1 | - | - |
15 | 16 | 2 | 42 | 2 | 3 | 23 | 2691 | 3 | 3 | 3 | 3 | 3 | 1 | - | - | 1 |
16 | 17 | 1 | 26 | 1 | 4 | 2 | 5225 | 5 | 5 | 5 | 4 | 5 | - | - | 1 | - |
17 | 18 | 2 | 38 | 2 | 3 | 17 | 2729 | 4 | 3 | 4 | 2 | 1 | - | - | - | - |
18 | 19 | 1 | 42 | 1 | 3 | 20 | 2925 | 2 | 3 | 4 | 1 | 4 | 1 | - | - | 1 |
19 | 20 | 2 | 40 | 2 | 2 | 13 | 2457 | 3 | 3 | 4 | 3 | 2 | 1 | - | - | 1 |
20 | 21 | 2 | 40 | 2 | 3 | 20 | 2691 | 2 | 4 | 5 | 3 | 4 | - | - | - | - |
21 | 22 | 1 | 47 | 2 | 3 | 17 | 4874 | 2 | 4 | 3 | 2 | 4 | - | 1 | - | - |
22 | 23 | 1 | 44 | 2 | 1 | 27 | 3510 | 4 | 4 | 4 | 4 | 4 | - | 1 | - | - |
23 | 24 | 1 | 36 | 1 | 3 | 7 | 4446 | 3 | 4 | 3 | 4 | 5 | - | - | - | - |
24 | 25 | 1 | 43 | 2 | 3 | 1 | 2925 | 4 | 4 | 4 | 4 | 4 | - | 1 | - | - |
25 | 26 | 1 | 26 | 1 | 2 | 3 | 1521 | 2 | 4 | 2 | 1 | 3 | 1 | - | 1 | 1 |
26 | 27 | 1 | 26 | 1 | 2 | 2 | 1989 | 2 | 4 | 2 | 2 | 3 | 1 | - | - | 1 |
27 | 28 | 2 | 56 | 1 | 1 | 15 | 2223 | 3 | 4 | 3 | 2 | 4 | 1 | - | - | 1 |
28 | 29 | 1 | 47 | 2 | 2 | 23 | 2808 | 2 | 4 | 3 | 1 | 4 | 1 | - | - | - |
29 | 30 | 1 | 21 | 1 | - | - | 1949 | 4 | 4 | 3 | 3 | 2 | 1 | - | - | - |
30 | 31 | 1 | 21 | 1 | 3 | 1 | 2340 | 4 | 5 | 3 | 4 | 2 | 1 | - | 1 | 1 |
31 | 32 | 1 | 45 | 2 | 1 | 24 | 2925 | 4 | 4 | 4 | 3 | 4 | - | 1 | - | - |
32 | 33 | 1 | 59 | 2 | 3 | 15 | 6278 | 4 | 4 | 5 | 4 | 4 | - | 1 | - | - |
33 | 34 | 1 | 37 | 2 | 1 | 14 | 2183 | 1 | 5 | 1 | 1 | 2 | 1 | - | - | 1 |
34 | 35 | 1 | 28 | 2 | 2 | 5 | 1989 | 3 | 4 | 3 | 3 | 3 | 1 | - | 1 | 1 |
35 | 36 | 1 | 31 | 2 | 3 | 0 | 1559 | 2 | 4 | 3 | 1 | 3 | 1 | - | - | - |
36 | 37 | 2 | 56 | 2 | 2 | 17 | 2729 | 5 | 5 | 5 | 5 | 5 | - | - | - | 1 |
37 | 38 | 1 | 50 | 2 | 1 | 1 | 2027 | 5 | 5 | 4 | 1 | 4 | 1 | 1 | - | - |
38 | 39 | 1 | 30 | 1 | 2 | 10 | 2300 | 3 | 5 | 3 | 3 | 4 | - | - | - | - |
39 | 40 | 1 | 32 | 1 | 1 | 3 | 2106 | 1 | 5 | 4 | 1 | 3 | 1 | - | - | - |
40 | 41 | 1 | 33 | 2 | 3 | 9 | 2846 | 3 | 3 | 4 | 2 | 3 | 1 | - | - | - |
41 | 42 | 1 | 29 | 1 | 2 | 6 | 2534 | 3 | 4 | 3 | 1 | 2 | 1 | - | - | - |
42 | 43 | 2 | 40 | 2 | 3 | 12 | 2144 | 4 | 4 | 4 | 4 | 4 | - | 1 | - | - |
43 | 44 | 1 | 30 | 1 | 2 | 7 | 2223 | 2 | 3 | 4 | 1 | 3 | 1 | - | - | 1 |
44 | 45 | 1 | 55 | 2 | 1 | 35 | 2651 | 4 | 5 | 4 | 2 | 4 | 1 | - | - | 1 |
45 | 46 | 2 | 51 | 2 | 1 | 28 | 1989 | 3 | 3 | 2 | 2 | 3 | 1 | - | - | 1 |
46 | 47 | 2 | 22 | 1 | 3 | 21 | 1872 | 3 | 3 | 4 | 1 | 3 | - | - | 1 | - |
47 | 48 | 1 | 34 | 2 | 1 | 18 | 2183 | 4 | 5 | 4 | 1 | 3 | - | - | - | - |
48 | 49 | 1 | 27 | 2 | 2 | 7 | 2729 | 4 | 4 | 3 | 3 | 5 | - | - | 1 | - |
49 | 50 | 1 | 29 | 1 | 3 | 7 | 2340 | 3 | 4 | 3 | 2 | 3 | 1 | - | - | - |
50 | 51 | 2 | 39 | 2 | 2 | 10 | 2106 | 4 | 5 | 5 | 4 | 5 | - | 1 | - | - |
51 | 52 | 1 | 41 | 2 | 1 | 18 | 2261 | 5 | 5 | 5 | 2 | 5 | - | 1 | - | - |
52 | 53 | 1 | 44 | 2 | 1 | 3 | 1989 | 1 | 2 | 2 | 1 | 1 | 1 | - | - | - |
53 | 54 | 1 | 25 | 1 | 2 | 1 | 1559 | 2 | 4 | 3 | 1 | 2 | 1 | - | - | - |
54 | 55 | 2 | 45 | 2 | 1 | 17 | 2417 | 3 | 5 | 4 | 3 | 3 | - | - | - | 1 |
55 | 56 | 2 | 31 | 2 | 1 | 6 | 1949 | 4 | 4 | 4 | 3 | 3 | 1 | - | - | 1 |
56 | 57 | 1 | 61 | 2 | 2 | 36 | 3119 | 2 | - | 2 | 1 | 5 | 1 | - | - | 1 |
57 | 58 | 1 | 38 | 2 | 2 | - | 2574 | 2 | 3 | 1 | 1 | 2 | 1 | - | - | 1 |
58 | 59 | 1 | 20 | 1 | 2 | 1 | 2261 | 3 | 4 | 3 | 2 | 3 | - | - | - | - |
59 | 60 | 1 | 31 | 1 | 1 | 10 | 2144 | 4 | 4 | 3 | 1 | 3 | 1 | - | - | - |
60 | 61 | 1 | 44 | 1 | 1 | 19 | 2183 | 2 | 2 | 1 | 1 | 2 | 1 | - | - | - |
61 | 62 | 1 | 40 | 2 | 1 | 0 | 1872 | 2 | 3 | 1 | 2 | 3 | 1 | - | - | - |
62 | 63 | 2 | 51 | 2 | 2 | 10 | 1872 | 4 | 3 | 2 | 2 | 3 | 1 | - | - | - |
63 | 64 | 2 | 44 | 1 | 2 | 1 | 1715 | 4 | 4 | 3 | 2 | 3 | 1 | - | - | 1 |
64 | 65 | 2 | 35 | 2 | 2 | 17 | 2691 | 4 | 4 | 5 | 2 | 4 | 1 | - | - | 1 |
65 | 66 | 2 | 37 | 2 | 1 | 16 | 2027 | 5 | 5 | 5 | 4 | 5 | 1 | 1 | - | - |
66 | 67 | 1 | 37 | 2 | 4 | 8 | 5069 | 3 | 4 | 3 | 2 | 2 | 1 | 1 | - | 1 |
67 | 68 | 1 | 33 | 2 | 3 | 7 | 2417 | 2 | 4 | 3 | 1 | 4 | - | - | - | - |
68 | 69 | 1 | 28 | 2 | 2 | 1 | 3510 | 4 | 5 | 3 | 1 | 4 | - | - | - | - |
69 | 70 | 1 | 52 | 2 | 2 | 22 | 3119 | 3 | 4 | 3 | 2 | 2 | 1 | 1 | - | 1 |
70 | 71 | 1 | 34 | 2 | 2 | 1 | 2495 | 3 | 5 | 5 | 3 | 4 | - | 1 | - | - |
71 | 72 | 1 | 46 | 2 | 2 | 23 | 3470 | 3 | 5 | 5 | 3 | 4 | - | 1 | - | - |
72 | 73 | 2 | 40 | 2 | 3 | 2 | 2027 | 5 | 3 | 4 | 3 | 4 | 1 | - | - | - |
73 | 74 | 1 | 45 | 2 | 1 | 20 | 2846 | 3 | 5 | 1 | 1 | 3 | 1 | - | - | - |
74 | 75 | 1 | 40 | 1 | 1 | 1 | 1949 | 1 | 5 | 1 | 1 | 1 | 1 | - | - | - |
75 | 76 | 1 | 37 | 1 | 2 | 15 | 1598 | 1 | 5 | 1 | 1 | 1 | 1 | - | - | - |
76 | 77 | 1 | 39 | 1 | 2 | 22 | 2183 | 4 | 5 | 3 | 1 | 2 | - | - | - | - |
77 | 78 | 1 | 22 | 1 | 3 | 0 | 1598 | 4 | 4 | 4 | 3 | 4 | - | 1 | 1 | - |
78 | 79 | 1 | 33 | 1 | 1 | 2 | 1638 | 1 | 3 | 2 | 1 | 2 | 1 | - | - | - |
79 | 80 | 1 | 27 | 1 | 2 | 7 | 2612 | 3 | 4 | 3 | 3 | 3 | 1 | - | 1 | - |
80 | 81 | 1 | 35 | 2 | 2 | 16 | 2808 | 3 | 4 | 3 | 3 | 3 | - | - | - | - |
81 | 82 | 2 | 35 | 2 | 3 | 15 | 2183 | 3 | 4 | 4 | 3 | 4 | 1 | - | - | - |
Värien nimiä ja koodeja löydät esimerkiksi seuraavista lähteistä:
https://matplotlib.org/3.1.0/gallery/color/named_colors.html
Maksimi- ja minimiarvojen korostus onnistuu highlight_max ja highlight_min funktioilla. Seuraavassa muotoilen %-sarakkeen luvut yhteen desimaalin ja lisään perään välilyönnin ja %-merkin '{:.1f} %'.
df1.style.format({'%':'{:.1f} %'})\
.highlight_max(color='lightgreen')\
.highlight_min(color='violet')
f | % | |
---|---|---|
Peruskoulu | 27 | 33.3 % |
2. aste | 30 | 37.0 % |
Korkeakoulu | 22 | 27.2 % |
Ylempi korkeakoulu | 2 | 2.5 % |
Jos en määritä väriä, niin oletus on keltainen.
(df2*100).style.format('{:.1f} %').highlight_max()
Mies | Nainen | |
---|---|---|
Peruskoulu | 35.5 % | 26.3 % |
2. aste | 37.1 % | 36.8 % |
Korkeakoulu | 24.2 % | 36.8 % |
Ylempi korkeakoulu | 3.2 % | 0.0 % |
Jos en halua kohdistaa menetelmää koko dataframeen, niin käytän subset-parametria. Esimerkiksi seuraavassa rajaan highlight_max muotoilun riveille alkaen 'Erittäin tyytymätön' ja päättyen 'Erittäin tyytyväinen'. Näin 'Yhteensä'-rivi jää muotoilun ulkopuolelle.
(df3*100).style.format('{:.1f} %', na_rep = '-')\
.highlight_max(color='lightgreen',
subset=pd.IndexSlice['Erittäin tyytymätön':'Erittäin tyytyväinen', :])
johto | työtov | työymp | palkkat | työteht | |
---|---|---|---|---|---|
Erittäin tyytymätön | 36.6 % | 19.8 % | 36.6 % | 23.2 % | 35.4 % |
Jokseenkin tyytymätön | 8.5 % | - | 11.0 % | 40.2 % | 6.1 % |
Ei tyytymätön eikä tyytyväinen | 19.5 % | 3.7 % | 11.0 % | 23.2 % | 18.3 % |
Jokseenkin tyytyväinen | 28.0 % | 43.2 % | 28.0 % | 12.2 % | 30.5 % |
Erittäin tyytyväinen | 7.3 % | 33.3 % | 13.4 % | 1.2 % | 9.8 % |
Yhteensä | 100.0 % | 100.0 % | 100.0 % | 100.0 % | 100.0 % |
Edellä värjäsin sarakkeiden suurimmat. Rivien suurimmat saan lisäämälle axis=1 -parametrin.
(df3*100).style.format('{:.1f} %', na_rep='-')\
.highlight_max(color='gold',
subset=pd.IndexSlice['Erittäin tyytymätön':'Erittäin tyytyväinen', :],
axis=1)
johto | työtov | työymp | palkkat | työteht | |
---|---|---|---|---|---|
Erittäin tyytymätön | 36.6 % | 19.8 % | 36.6 % | 23.2 % | 35.4 % |
Jokseenkin tyytymätön | 8.5 % | - | 11.0 % | 40.2 % | 6.1 % |
Ei tyytymätön eikä tyytyväinen | 19.5 % | 3.7 % | 11.0 % | 23.2 % | 18.3 % |
Jokseenkin tyytyväinen | 28.0 % | 43.2 % | 28.0 % | 12.2 % | 30.5 % |
Erittäin tyytyväinen | 7.3 % | 33.3 % | 13.4 % | 1.2 % | 9.8 % |
Yhteensä | 100.0 % | 100.0 % | 100.0 % | 100.0 % | 100.0 % |
Jos haluan muotoilla tietyt solut, niin muotoiluun käytän set_properties-funktiota, jonka avulla pääsen käyttämään CSS-tyyliohjeita (CSS eli Cascading Style Sheets on html-sivujen muotoiluun käytettävä tyyliohjeiden kokoelma). Tyyliohjeet annan sanakirjana (dictionary) 'ominaisuus':'arvo' pareina.
df1.style.format({'%':'{:.1f} %'})\
.set_properties(**{'background-color':'navy', 'color' : 'white'},
subset = pd.IndexSlice['Korkeakoulu', '%'])
f | % | |
---|---|---|
Peruskoulu | 27 | 33.3 % |
2. aste | 30 | 37.0 % |
Korkeakoulu | 22 | 27.2 % |
Ylempi korkeakoulu | 2 | 2.5 % |
(df2*100).style.format('{:.1f} %')\
.set_properties(**{'background-color':'navy', 'color':'white'},
subset = pd.IndexSlice['Peruskoulu':'2. aste', 'Mies'])\
.set_properties(**{'background-color':'maroon', 'color':'white'},
subset = pd.IndexSlice['2. aste':'Korkeakoulu', 'Nainen'])
Mies | Nainen | |
---|---|---|
Peruskoulu | 35.5 % | 26.3 % |
2. aste | 37.1 % | 36.8 % |
Korkeakoulu | 24.2 % | 36.8 % |
Ylempi korkeakoulu | 3.2 % | 0.0 % |
Värikartoista voit lukea lisää:
https://matplotlib.org/3.3.3/tutorials/colors/colormaps.html
Voin käyttää värikarttaa ehdolliseen muotoiluun background_gradientfunktion avulla.
df1.style.format({'%':'{:.1f} %'}).background_gradient(cmap='Greens')
f | % | |
---|---|---|
Peruskoulu | 27 | 33.3 % |
2. aste | 30 | 37.0 % |
Korkeakoulu | 22 | 27.2 % |
Ylempi korkeakoulu | 2 | 2.5 % |
(df2*100).style.format('{:.1f} %').background_gradient(cmap='autumn')
Mies | Nainen | |
---|---|---|
Peruskoulu | 35.5 % | 26.3 % |
2. aste | 37.1 % | 36.8 % |
Korkeakoulu | 24.2 % | 36.8 % |
Ylempi korkeakoulu | 3.2 % | 0.0 % |
(df3*100).style.format('{:.1f} %', na_rep='-').background_gradient(cmap='Blues')
johto | työtov | työymp | palkkat | työteht | |
---|---|---|---|---|---|
Erittäin tyytymätön | 36.6 % | 19.8 % | 36.6 % | 23.2 % | 35.4 % |
Jokseenkin tyytymätön | 8.5 % | - | 11.0 % | 40.2 % | 6.1 % |
Ei tyytymätön eikä tyytyväinen | 19.5 % | 3.7 % | 11.0 % | 23.2 % | 18.3 % |
Jokseenkin tyytyväinen | 28.0 % | 43.2 % | 28.0 % | 12.2 % | 30.5 % |
Erittäin tyytyväinen | 7.3 % | 33.3 % | 13.4 % | 1.2 % | 9.8 % |
Yhteensä | 100.0 % | 100.0 % | 100.0 % | 100.0 % | 100.0 % |
Voin piirtää solujen lukuarvoja kuvaavat pylväät bar-funktiolla.
(df3*100).style.format('{:.1f} %', na_rep='-')\
.bar(subset=pd.IndexSlice['Erittäin tyytymätön':'Erittäin tyytyväinen', :],
color='aquamarine',
align='zero')
johto | työtov | työymp | palkkat | työteht | |
---|---|---|---|---|---|
Erittäin tyytymätön | 36.6 % | 19.8 % | 36.6 % | 23.2 % | 35.4 % |
Jokseenkin tyytymätön | 8.5 % | - | 11.0 % | 40.2 % | 6.1 % |
Ei tyytymätön eikä tyytyväinen | 19.5 % | 3.7 % | 11.0 % | 23.2 % | 18.3 % |
Jokseenkin tyytyväinen | 28.0 % | 43.2 % | 28.0 % | 12.2 % | 30.5 % |
Erittäin tyytyväinen | 7.3 % | 33.3 % | 13.4 % | 1.2 % | 9.8 % |
Yhteensä | 100.0 % | 100.0 % | 100.0 % | 100.0 % | 100.0 % |
Data-analytiikka Pythonilla https://tilastoapu.wordpress.com/python/