In [1]:
import pandas as pd
import numpy as np
In [2]:
MANDATY_SEJM = 460
In [3]:
path = '../dane/robocze/'
In [4]:
def_okr = pd.read_csv(path + 'def_okr_2015.csv', sep=';', index_col=0)
wyn_okr = pd.read_csv(path + 'kom_okr_2015.csv', sep=';', index_col=0)
wyn_okr.columns = wyn_okr.columns.astype('int')
wyn_okr.columns.name = 'Nr listy'
stat_okr = pd.read_csv(path + 'stat_okr_2015.csv', sep=';', index_col=0)
In [5]:
gl_man_global = stat_okr["Głosy ważne"].sum() / MANDATY_SEJM
In [6]:
gl_man_global
Out[6]:
33044.93695652174
In [7]:
wagi_glosow_2015 = pd.concat([def_okr, stat_okr["Głosy ważne"]], axis=1)
wagi_glosow_2015["Głosów na mandat"] = (wagi_glosow_2015["Głosy ważne"] / wagi_glosow_2015["Liczba mandatów"]).round().astype('int')
wagi_glosow_2015["Siła głosu 2015"] = gl_man_global / (wagi_glosow_2015["Głosy ważne"] / wagi_glosow_2015["Liczba mandatów"])
In [8]:
wagi_glosow_2015
Out[8]:
Okręg | Liczba mandatów | Głosy ważne | Głosów na mandat | Siła głosu 2015 | |
---|---|---|---|---|---|
Nr okręgu | |||||
1 | Legnica | 12 | 356779 | 29732 | 1.111442 |
2 | Wałbrzych | 8 | 234095 | 29262 | 1.129283 |
3 | Wrocław | 14 | 523371 | 37384 | 0.883941 |
4 | Bydgoszcz | 12 | 374277 | 31190 | 1.059481 |
5 | Toruń | 13 | 362510 | 27885 | 1.185027 |
6 | Lublin | 15 | 487720 | 32515 | 1.016309 |
7 | Chełm | 12 | 339686 | 28307 | 1.167370 |
8 | Zielona Góra | 12 | 346218 | 28852 | 1.145346 |
9 | Łódź | 10 | 359064 | 35906 | 0.920308 |
10 | Piotrków Trybunalski | 9 | 285721 | 31747 | 1.040891 |
11 | Sieradz | 12 | 369745 | 30812 | 1.072467 |
12 | Kraków I (południe) | 8 | 271577 | 33947 | 0.973424 |
13 | Kraków II (północ) | 14 | 542768 | 38769 | 0.852351 |
14 | Nowy Sącz | 10 | 310461 | 31046 | 1.064383 |
15 | Tarnów | 9 | 291641 | 32405 | 1.019762 |
16 | Płock | 10 | 300202 | 30020 | 1.100757 |
17 | Radom | 9 | 275342 | 30594 | 1.080127 |
18 | Siedlce | 12 | 375240 | 31270 | 1.056762 |
19 | Warszawa I (miasto) | 20 | 1095215 | 54761 | 0.603442 |
20 | Warszawa II (okręg) | 12 | 490616 | 40885 | 0.808248 |
21 | Opole | 12 | 338248 | 28187 | 1.172333 |
22 | Krosno | 11 | 326865 | 29715 | 1.112062 |
23 | Rzeszów | 15 | 507257 | 33817 | 0.977166 |
24 | Białystok | 14 | 435368 | 31098 | 1.062616 |
25 | Gdańsk | 12 | 427131 | 35594 | 0.928379 |
26 | Gdynia | 14 | 466708 | 33336 | 0.991260 |
27 | Bielsko-Biała | 9 | 337288 | 37476 | 0.881752 |
28 | Częstochowa | 7 | 236634 | 33805 | 0.977520 |
29 | Gliwice | 9 | 293667 | 32630 | 1.012727 |
30 | Rybnik | 9 | 289963 | 32218 | 1.025663 |
31 | Katowice | 12 | 411190 | 34266 | 0.964370 |
32 | Sosnowiec | 9 | 284643 | 31627 | 1.044833 |
33 | Kielce | 16 | 468690 | 29293 | 1.128078 |
34 | Elbląg | 8 | 200362 | 25045 | 1.319409 |
35 | Olsztyn | 10 | 266166 | 26617 | 1.241516 |
36 | Kalisz | 12 | 363184 | 30265 | 1.091841 |
37 | Konin | 9 | 277384 | 30820 | 1.072176 |
38 | Piła | 9 | 270273 | 30030 | 1.100385 |
39 | Poznań | 10 | 409886 | 40989 | 0.806198 |
40 | Koszalin | 8 | 217017 | 27127 | 1.218151 |
41 | Szczecin | 12 | 380499 | 31708 | 1.042156 |
In [9]:
def_okr = pd.read_csv(path + 'def_okr_2019.csv', sep=';', index_col=0)
wyn_okr = pd.read_csv(path + 'kom_okr_2019.csv', sep=';', index_col=0)
wyn_okr.columns = wyn_okr.columns.astype('int')
wyn_okr.columns.name = 'Nr listy'
stat_okr = pd.read_csv(path + 'stat_okr_2019.csv', sep=';', index_col=0)
stat_okr.rename(columns={"Liczba głosów ważnych oddanych łącznie na wszystkie listy kandydatów": "Głosy ważne"}, inplace=True)
In [10]:
stat_okr
Out[10]:
Nazwa | Komisja otrzymała kart do głosowania | Liczba wyborców uprawnionych do głosowania | Nie wykorzystano kart do głosowania | Liczba wyborców, którym wydano karty do głosowania | Liczba wyborców głosujących przez pełnomocnika | Liczba wyborców głosujących na podstawie zaświadczenia o prawie do głosowania | Liczba wyborców, którym wysłano pakiety wyborcze | Liczba otrzymanych kopert zwrotnych | Liczba kopert zwrotnych, w których nie było oświadczenia o osobistym i tajnym oddaniu głosu | ... | Liczba kopert na kartę do głosowania wrzuconych do urny | Liczba kart wyjętych z urny | W tym liczba kart wyjętych z kopert na kartę do głosowania | Liczba kart nieważnych | Liczba kart ważnych | Liczba głosów nieważnych | W tym z powodu postawienia znaku „X” obok nazwiska dwóch lub większej liczby kandydatów z różnych list | W tym z powodu niepostawienia znaku „X” obok nazwiska żadnego kandydata | W tym z powodu postawienia znaku „X” wyłącznie obok nazwiska kandydata na liście, której rejestracja została unieważniona | Głosy ważne | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Numer okręgu | |||||||||||||||||||||
1 | Okręg Wyborczy Nr 1 | 697907 | 757942 | 259666 | 438239 | 490 | 5597 | 37 | 35 | 6 | ... | 28 | 438194 | 28 | 84 | 438110 | 5674 | 3655 | 2019 | 0 | 432436 |
2 | Okręg Wyborczy Nr 2 | 470923 | 514042 | 183904 | 287009 | 417 | 4854 | 44 | 42 | 2 | ... | 39 | 287015 | 39 | 37 | 286978 | 3976 | 2688 | 1288 | 0 | 283002 |
3 | Okręg Wyborczy Nr 3 | 895625 | 1001757 | 235423 | 660182 | 630 | 8921 | 82 | 80 | 2 | ... | 78 | 660117 | 78 | 90 | 660027 | 5572 | 3230 | 2342 | 0 | 654455 |
4 | Okręg Wyborczy Nr 4 | 712403 | 778558 | 245980 | 466427 | 480 | 3538 | 77 | 75 | 6 | ... | 69 | 466407 | 69 | 13 | 466394 | 6412 | 4389 | 2023 | 0 | 459982 |
5 | Okręg Wyborczy Nr 5 | 742540 | 813079 | 284127 | 458383 | 575 | 5302 | 64 | 64 | 0 | ... | 64 | 458408 | 64 | 63 | 458345 | 6015 | 3914 | 2101 | 0 | 452330 |
6 | Okręg Wyborczy Nr 6 | 862523 | 938157 | 291363 | 571149 | 952 | 4939 | 69 | 69 | 4 | ... | 64 | 571138 | 64 | 34 | 571104 | 5507 | 3176 | 2331 | 0 | 565597 |
7 | Okręg Wyborczy Nr 7 | 690813 | 747526 | 284118 | 406690 | 782 | 3251 | 28 | 27 | 2 | ... | 25 | 406678 | 25 | 18 | 406660 | 5342 | 3530 | 1812 | 0 | 401318 |
8 | Okręg Wyborczy Nr 8 | 713950 | 776935 | 269383 | 444548 | 465 | 3003 | 51 | 51 | 3 | ... | 48 | 444492 | 48 | 64 | 444428 | 6511 | 4369 | 2142 | 0 | 437917 |
9 | Okręg Wyborczy Nr 9 | 566005 | 612800 | 147178 | 418814 | 414 | 2941 | 83 | 81 | 2 | ... | 78 | 418745 | 78 | 106 | 418639 | 3099 | 1632 | 1467 | 0 | 415540 |
10 | Okręg Wyborczy Nr 10 | 521078 | 567583 | 170181 | 350868 | 399 | 1725 | 21 | 20 | 0 | ... | 20 | 350848 | 20 | 16 | 350832 | 4506 | 2973 | 1533 | 0 | 346326 |
11 | Okręg Wyborczy Nr 11 | 701279 | 765170 | 234986 | 466274 | 531 | 2206 | 22 | 20 | 0 | ... | 20 | 466190 | 20 | 35 | 466155 | 5916 | 3738 | 2178 | 0 | 460239 |
12 | Okręg Wyborczy Nr 12 | 465480 | 508888 | 145551 | 319925 | 402 | 1780 | 26 | 26 | 1 | ... | 25 | 319928 | 25 | 23 | 319905 | 3691 | 2335 | 1356 | 0 | 316214 |
13 | Okręg Wyborczy Nr 13 | 862812 | 953716 | 208617 | 654148 | 733 | 9912 | 133 | 129 | 2 | ... | 127 | 654130 | 127 | 152 | 653978 | 4691 | 2379 | 2312 | 0 | 649287 |
14 | Okręg Wyborczy Nr 14 | 576255 | 621580 | 201521 | 374708 | 465 | 10724 | 45 | 45 | 2 | ... | 42 | 374703 | 42 | 3 | 374700 | 4501 | 2801 | 1700 | 0 | 370199 |
15 | Okręg Wyborczy Nr 15 | 533024 | 580610 | 181794 | 351124 | 445 | 1909 | 31 | 31 | 0 | ... | 31 | 351098 | 31 | 23 | 351075 | 3987 | 2481 | 1506 | 0 | 347088 |
16 | Okręg Wyborczy Nr 16 | 594543 | 651882 | 218513 | 376018 | 516 | 1885 | 23 | 21 | 0 | ... | 21 | 376000 | 21 | 3 | 375997 | 5436 | 3388 | 2048 | 0 | 370561 |
17 | Okręg Wyborczy Nr 17 | 511886 | 556858 | 173078 | 338801 | 442 | 1728 | 28 | 26 | 1 | ... | 25 | 338782 | 25 | 15 | 338767 | 3758 | 2152 | 1606 | 0 | 335009 |
18 | Okręg Wyborczy Nr 18 | 684696 | 752277 | 225904 | 458770 | 599 | 2582 | 25 | 24 | 1 | ... | 23 | 458762 | 23 | 10 | 458752 | 5846 | 3347 | 2499 | 0 | 452906 |
19 | Okręg Wyborczy Nr 19 | 1670076 | 1742400 | 279264 | 1390641 | 1164 | 38061 | 194 | 184 | 21 | ... | 164 | 1389970 | 164 | 447 | 1389523 | 7606 | 3476 | 4130 | 0 | 1381917 |
20 | Okręg Wyborczy Nr 20 | 774331 | 856128 | 170104 | 604224 | 507 | 5330 | 96 | 95 | 2 | ... | 92 | 604128 | 92 | 68 | 604060 | 5333 | 2964 | 2369 | 0 | 598727 |
21 | Okręg Wyborczy Nr 21 | 719838 | 779536 | 307303 | 412525 | 468 | 2414 | 29 | 29 | 0 | ... | 29 | 412469 | 29 | 17 | 412452 | 6013 | 4104 | 1909 | 0 | 406439 |
22 | Okręg Wyborczy Nr 22 | 648912 | 701642 | 253336 | 395573 | 766 | 6939 | 31 | 31 | 2 | ... | 29 | 395556 | 29 | 7 | 395549 | 4968 | 3298 | 1670 | 0 | 390581 |
23 | Okręg Wyborczy Nr 23 | 907022 | 988338 | 312711 | 594307 | 850 | 4375 | 41 | 40 | 1 | ... | 39 | 594277 | 38 | 19 | 594258 | 5472 | 3172 | 2300 | 0 | 588786 |
24 | Okręg Wyborczy Nr 24 | 848752 | 922518 | 323189 | 525568 | 895 | 3680 | 62 | 62 | 2 | ... | 58 | 525560 | 58 | 17 | 525543 | 4965 | 2770 | 2195 | 0 | 520578 |
25 | Okręg Wyborczy Nr 25 | 753982 | 831651 | 219856 | 534255 | 500 | 8501 | 99 | 99 | 4 | ... | 94 | 534071 | 94 | 46 | 534025 | 5196 | 3218 | 1978 | 0 | 528829 |
26 | Okręg Wyborczy Nr 26 | 872627 | 935164 | 285392 | 587272 | 525 | 7362 | 100 | 99 | 13 | ... | 84 | 587233 | 84 | 43 | 587190 | 6468 | 3692 | 2776 | 0 | 580722 |
27 | Okręg Wyborczy Nr 27 | 569412 | 605360 | 176394 | 393014 | 503 | 4575 | 38 | 38 | 5 | ... | 33 | 392959 | 33 | 12 | 392947 | 3691 | 2085 | 1606 | 0 | 389256 |
28 | Okręg Wyborczy Nr 28 | 431901 | 470075 | 144067 | 287824 | 330 | 1864 | 42 | 40 | 0 | ... | 40 | 287791 | 40 | 14 | 287777 | 3260 | 2141 | 1119 | 0 | 284517 |
29 | Okręg Wyborczy Nr 29 | 534418 | 581805 | 190114 | 344301 | 334 | 1759 | 30 | 29 | 1 | ... | 28 | 344292 | 28 | 8 | 344284 | 3637 | 2074 | 1563 | 0 | 340647 |
30 | Okręg Wyborczy Nr 30 | 524127 | 558077 | 186917 | 337185 | 353 | 1107 | 27 | 27 | 1 | ... | 26 | 337148 | 26 | 18 | 337130 | 3294 | 1901 | 1393 | 0 | 333836 |
31 | Okręg Wyborczy Nr 31 | 677792 | 740858 | 203558 | 474223 | 482 | 2886 | 52 | 51 | 2 | ... | 47 | 474144 | 47 | 21 | 474123 | 4490 | 2516 | 1974 | 0 | 469633 |
32 | Okręg Wyborczy Nr 32 | 491534 | 537371 | 153020 | 338510 | 355 | 1516 | 42 | 41 | 2 | ... | 37 | 338481 | 37 | 7 | 338474 | 3043 | 1874 | 1169 | 0 | 335431 |
33 | Okręg Wyborczy Nr 33 | 927566 | 998797 | 351202 | 576353 | 899 | 4587 | 33 | 32 | 0 | ... | 31 | 576308 | 31 | 32 | 576276 | 6385 | 4016 | 2369 | 0 | 569891 |
34 | Okręg Wyborczy Nr 34 | 447186 | 484489 | 191809 | 255374 | 264 | 1772 | 20 | 20 | 2 | ... | 16 | 255370 | 16 | 11 | 255359 | 4540 | 3263 | 1277 | 0 | 250819 |
35 | Okręg Wyborczy Nr 35 | 569496 | 619669 | 232809 | 336643 | 393 | 3804 | 33 | 32 | 4 | ... | 27 | 336647 | 27 | 12 | 336635 | 4951 | 3096 | 1855 | 0 | 331684 |
36 | Okręg Wyborczy Nr 36 | 720895 | 782102 | 254203 | 466690 | 388 | 1897 | 56 | 56 | 2 | ... | 52 | 466669 | 52 | 8 | 466661 | 7509 | 5005 | 2504 | 0 | 459152 |
37 | Okręg Wyborczy Nr 37 | 556500 | 606633 | 198030 | 358457 | 312 | 1504 | 33 | 31 | 2 | ... | 29 | 358437 | 29 | 21 | 358416 | 5375 | 3773 | 1602 | 0 | 353041 |
38 | Okręg Wyborczy Nr 38 | 550788 | 601148 | 195405 | 355382 | 367 | 1825 | 18 | 18 | 0 | ... | 18 | 355334 | 18 | 13 | 355321 | 6270 | 4437 | 1833 | 0 | 349051 |
39 | Okręg Wyborczy Nr 39 | 634485 | 709238 | 115525 | 518935 | 399 | 6156 | 61 | 60 | 4 | ... | 55 | 518801 | 55 | 135 | 518666 | 4139 | 2333 | 1806 | 0 | 514527 |
40 | Okręg Wyborczy Nr 40 | 456863 | 498780 | 180203 | 276658 | 342 | 7719 | 27 | 27 | 1 | ... | 25 | 276638 | 25 | 13 | 276625 | 4914 | 3470 | 1444 | 0 | 271711 |
41 | Okręg Wyborczy Nr 41 | 732615 | 802417 | 256060 | 476544 | 533 | 6380 | 51 | 50 | 5 | ... | 44 | 476444 | 44 | 127 | 476317 | 5788 | 3698 | 2090 | 0 | 470529 |
41 rows × 23 columns
In [11]:
gl_man_global = stat_okr["Głosy ważne"].sum() / MANDATY_SEJM
gl_man_global
Out[11]:
40153.717391304344
In [12]:
wagi_glosow_2019 = pd.concat([def_okr, stat_okr["Głosy ważne"]], axis=1)
wagi_glosow_2019["Głosów na mandat"] = (wagi_glosow_2019["Głosy ważne"] / wagi_glosow_2019["Liczba mandatów"]).round().astype('int')
wagi_glosow_2019["Siła głosu 2019"] = gl_man_global / (wagi_glosow_2019["Głosy ważne"] / wagi_glosow_2019["Liczba mandatów"])
In [13]:
wagi_glosow_2019
Out[13]:
Okręg | Liczba mandatów | Głosy ważne | Głosów na mandat | Siła głosu 2019 | |
---|---|---|---|---|---|
1 | Legnica | 12 | 432436 | 36036 | 1.114256 |
2 | Wałbrzych | 8 | 283002 | 35375 | 1.135079 |
3 | Wrocław | 14 | 654455 | 46747 | 0.858962 |
4 | Bydgoszcz | 12 | 459982 | 38332 | 1.047529 |
5 | Toruń | 13 | 452330 | 34795 | 1.154021 |
6 | Lublin | 15 | 565597 | 37706 | 1.064903 |
7 | Chełm | 12 | 401318 | 33443 | 1.200655 |
8 | Zielona Góra | 12 | 437917 | 36493 | 1.100310 |
9 | Łódź | 10 | 415540 | 41554 | 0.966302 |
10 | Piotrków Trybunalski | 9 | 346326 | 38481 | 1.043478 |
11 | Sieradz | 12 | 460239 | 38353 | 1.046944 |
12 | Kraków | 8 | 316214 | 39527 | 1.015862 |
13 | Kraków | 14 | 649287 | 46378 | 0.865799 |
14 | Nowy Sącz | 10 | 370199 | 37020 | 1.084652 |
15 | Tarnów | 9 | 347088 | 38565 | 1.041187 |
16 | Płock | 10 | 370561 | 37056 | 1.083593 |
17 | Radom | 9 | 335009 | 37223 | 1.078728 |
18 | Siedlce | 12 | 452906 | 37742 | 1.063895 |
19 | Warszawa | 20 | 1381917 | 69096 | 0.581131 |
20 | Warszawa | 12 | 598727 | 49894 | 0.804782 |
21 | Opole | 12 | 406439 | 33870 | 1.185527 |
22 | Krosno | 11 | 390581 | 35507 | 1.130856 |
23 | Rzeszów | 15 | 588786 | 39252 | 1.022962 |
24 | Białystok | 14 | 520578 | 37184 | 1.079861 |
25 | Gdańsk | 12 | 528829 | 44069 | 0.911154 |
26 | Słupsk | 14 | 580722 | 41480 | 0.968023 |
27 | Bielsko-Biała | 9 | 389256 | 43251 | 0.928395 |
28 | Częstochowa | 7 | 284517 | 40645 | 0.987906 |
29 | Katowice | 9 | 340647 | 37850 | 1.060874 |
30 | Bielsko-Biała | 9 | 333836 | 37093 | 1.082518 |
31 | Katowice | 12 | 469633 | 39136 | 1.026002 |
32 | Katowice | 9 | 335431 | 37270 | 1.077370 |
33 | Kielce | 16 | 569891 | 35618 | 1.127337 |
34 | Elbląg | 8 | 250819 | 31352 | 1.280723 |
35 | Olsztyn | 10 | 331684 | 33168 | 1.210602 |
36 | Kalisz | 12 | 459152 | 38263 | 1.049423 |
37 | Konin | 9 | 353041 | 39227 | 1.023630 |
38 | Piła | 9 | 349051 | 38783 | 1.035331 |
39 | Poznań | 10 | 514527 | 51453 | 0.780401 |
40 | Koszalin | 8 | 271711 | 33964 | 1.182248 |
41 | Szczecin | 12 | 470529 | 39211 | 1.024049 |
In [14]:
tabela = pd.concat([wagi_glosow_2015["Okręg"], wagi_glosow_2015["Siła głosu 2015"], wagi_glosow_2019["Siła głosu 2019"]], axis=1)
In [15]:
tabela
Out[15]:
Okręg | Siła głosu 2015 | Siła głosu 2019 | |
---|---|---|---|
1 | Legnica | 1.111442 | 1.114256 |
2 | Wałbrzych | 1.129283 | 1.135079 |
3 | Wrocław | 0.883941 | 0.858962 |
4 | Bydgoszcz | 1.059481 | 1.047529 |
5 | Toruń | 1.185027 | 1.154021 |
6 | Lublin | 1.016309 | 1.064903 |
7 | Chełm | 1.167370 | 1.200655 |
8 | Zielona Góra | 1.145346 | 1.100310 |
9 | Łódź | 0.920308 | 0.966302 |
10 | Piotrków Trybunalski | 1.040891 | 1.043478 |
11 | Sieradz | 1.072467 | 1.046944 |
12 | Kraków I (południe) | 0.973424 | 1.015862 |
13 | Kraków II (północ) | 0.852351 | 0.865799 |
14 | Nowy Sącz | 1.064383 | 1.084652 |
15 | Tarnów | 1.019762 | 1.041187 |
16 | Płock | 1.100757 | 1.083593 |
17 | Radom | 1.080127 | 1.078728 |
18 | Siedlce | 1.056762 | 1.063895 |
19 | Warszawa I (miasto) | 0.603442 | 0.581131 |
20 | Warszawa II (okręg) | 0.808248 | 0.804782 |
21 | Opole | 1.172333 | 1.185527 |
22 | Krosno | 1.112062 | 1.130856 |
23 | Rzeszów | 0.977166 | 1.022962 |
24 | Białystok | 1.062616 | 1.079861 |
25 | Gdańsk | 0.928379 | 0.911154 |
26 | Gdynia | 0.991260 | 0.968023 |
27 | Bielsko-Biała | 0.881752 | 0.928395 |
28 | Częstochowa | 0.977520 | 0.987906 |
29 | Gliwice | 1.012727 | 1.060874 |
30 | Rybnik | 1.025663 | 1.082518 |
31 | Katowice | 0.964370 | 1.026002 |
32 | Sosnowiec | 1.044833 | 1.077370 |
33 | Kielce | 1.128078 | 1.127337 |
34 | Elbląg | 1.319409 | 1.280723 |
35 | Olsztyn | 1.241516 | 1.210602 |
36 | Kalisz | 1.091841 | 1.049423 |
37 | Konin | 1.072176 | 1.023630 |
38 | Piła | 1.100385 | 1.035331 |
39 | Poznań | 0.806198 | 0.780401 |
40 | Koszalin | 1.218151 | 1.182248 |
41 | Szczecin | 1.042156 | 1.024049 |
In [16]:
wykres = pd.Series(100 * (tabela["Siła głosu 2019"] - 1))
wykres.index = [f'{okr} [{v:+2.0f}%]' for okr, v in zip(tabela["Okręg"], wykres)]
wykres.sort_values(inplace=True, ascending=False)
kolory = ['red' if v < 0 else 'green' for v in wykres]
wykres.plot(kind='barh', figsize=(6, 16), grid=True, color=kolory)
Out[16]:
<Axes: >
In [17]:
wykres = pd.Series(100 * (tabela["Siła głosu 2015"] - 1))
wykres.index = [f'{okr} [{v:+2.0f}%]' for okr, v in zip(tabela["Okręg"], wykres)]
wykres.sort_values(inplace=True, ascending=False)
kolory = ['red' if v < 0 else 'green' for v in wykres]
wykres.plot(kind='barh', figsize=(6, 16), grid=True, color=kolory)
Out[17]:
<Axes: >
In [18]:
tabela2 = wagi_glosow_2015[["Okręg", "Liczba mandatów"]].copy()
tabela2.rename(columns={"Liczba mandatów": "L. mandatów"}, inplace=True)
In [19]:
tabela2["Gł na mandat 2015"] = wagi_glosow_2015["Głosów na mandat"]
tabela2["Gł na mandat 2019"] = wagi_glosow_2019["Głosów na mandat"]
In [20]:
tabela2["Śr siła głosu"] = (wagi_glosow_2015["Siła głosu 2015"] + wagi_glosow_2019["Siła głosu 2019"])/2
In [21]:
tabela2
Out[21]:
Okręg | L. mandatów | Gł na mandat 2015 | Gł na mandat 2019 | Śr siła głosu | |
---|---|---|---|---|---|
Nr okręgu | |||||
1 | Legnica | 12 | 29732 | 36036 | 1.112849 |
2 | Wałbrzych | 8 | 29262 | 35375 | 1.132181 |
3 | Wrocław | 14 | 37384 | 46747 | 0.871452 |
4 | Bydgoszcz | 12 | 31190 | 38332 | 1.053505 |
5 | Toruń | 13 | 27885 | 34795 | 1.169524 |
6 | Lublin | 15 | 32515 | 37706 | 1.040606 |
7 | Chełm | 12 | 28307 | 33443 | 1.184013 |
8 | Zielona Góra | 12 | 28852 | 36493 | 1.122828 |
9 | Łódź | 10 | 35906 | 41554 | 0.943305 |
10 | Piotrków Trybunalski | 9 | 31747 | 38481 | 1.042184 |
11 | Sieradz | 12 | 30812 | 38353 | 1.059706 |
12 | Kraków I (południe) | 8 | 33947 | 39527 | 0.994643 |
13 | Kraków II (północ) | 14 | 38769 | 46378 | 0.859075 |
14 | Nowy Sącz | 10 | 31046 | 37020 | 1.074518 |
15 | Tarnów | 9 | 32405 | 38565 | 1.030474 |
16 | Płock | 10 | 30020 | 37056 | 1.092175 |
17 | Radom | 9 | 30594 | 37223 | 1.079427 |
18 | Siedlce | 12 | 31270 | 37742 | 1.060329 |
19 | Warszawa I (miasto) | 20 | 54761 | 69096 | 0.592286 |
20 | Warszawa II (okręg) | 12 | 40885 | 49894 | 0.806515 |
21 | Opole | 12 | 28187 | 33870 | 1.178930 |
22 | Krosno | 11 | 29715 | 35507 | 1.121459 |
23 | Rzeszów | 15 | 33817 | 39252 | 1.000064 |
24 | Białystok | 14 | 31098 | 37184 | 1.071239 |
25 | Gdańsk | 12 | 35594 | 44069 | 0.919766 |
26 | Gdynia | 14 | 33336 | 41480 | 0.979641 |
27 | Bielsko-Biała | 9 | 37476 | 43251 | 0.905074 |
28 | Częstochowa | 7 | 33805 | 40645 | 0.982713 |
29 | Gliwice | 9 | 32630 | 37850 | 1.036800 |
30 | Rybnik | 9 | 32218 | 37093 | 1.054091 |
31 | Katowice | 12 | 34266 | 39136 | 0.995186 |
32 | Sosnowiec | 9 | 31627 | 37270 | 1.061102 |
33 | Kielce | 16 | 29293 | 35618 | 1.127708 |
34 | Elbląg | 8 | 25045 | 31352 | 1.300066 |
35 | Olsztyn | 10 | 26617 | 33168 | 1.226059 |
36 | Kalisz | 12 | 30265 | 38263 | 1.070632 |
37 | Konin | 9 | 30820 | 39227 | 1.047903 |
38 | Piła | 9 | 30030 | 38783 | 1.067858 |
39 | Poznań | 10 | 40989 | 51453 | 0.793299 |
40 | Koszalin | 8 | 27127 | 33964 | 1.200199 |
41 | Szczecin | 12 | 31708 | 39211 | 1.033102 |
In [ ]: