block by michalskop 291b1e431ae74d1612b7ef218c1f3dfe

CZ: Euroelections 2019

Full Screen

index.html

<!DOCTYPE html>
<html lang="cs">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="author" content="Michal Škop, KohoVolit.eu">

        <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <script src="//d3js.org/d3.v3.min.js"></script>
        <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="d3.tip.js"></script>
        <script src="regression.js"></script>

        <style type="text/css">
    		text {
    		  font-family: sans-serif;
    		}

    		.tick {
    		  fill-opacity: 0;
    		  stroke: #000000;
    		  stroke-width: 1;
    		}

    		.domain {
    		    fill: none;
    			fill-opacity: 0;
    			stroke: black;
    			stroke-width: 1;
    		}
    		.axis line {
    			fill: none;
    			fill-opacity: 0;
    			stroke: black;
    			stroke-width: 1;
    			shape-rendering: crispEdges;
    		}

    		.axis text {
    			font-family: sans-serif;
    			font-size: 15px;
    		}
    		.axis {

    		}
    		circle {
    		  fill-opacity: .8;
    		  stroke-opacity: 0.99;
    		  stroke-width: 1;
              /*fill: #456;*/
              /*stroke: #456;*/
    		}
            circle:hover {
                stroke-opacity: 1;
                fill-opacity: 1;
            }
            path {
                fill-opacity: 0;
    			stroke: black;
    			stroke-width: 1;
                fill: none;
            }
    		.label {
    		  font-family: sans-serif;
    		  font-size: 15px;
    		}

            /* this is because of Bootstrap - very important! */
            svg:not(:root) {
                overflow: visible;
            }

            /* D3 tips */
            .d3-tip {
                line-height: 1;
                /*font-weight: bold;*/
                padding: 12px;
                background: rgba(0, 0, 0, 0.8);
                color: #fff;
                border-radius: 2px;
            }
            .d3-tip small {
                font-size: 0.5em;
            }
            /* Style northward tooltips differently */
            .d3-tip.n:after {
                margin: -1px 0 0 0;
                top: 100%;
                left: 0;
            }
            .stronger {
                color: yellow;
                font-weight: bold;
            }
            .top {
                width: 100vw;
                padding: 10px;
                color: white;
                /*font-size: 3em;*/
                /*background-color: #fed201;*/
            }
            #center-line {
                stroke:rgb(255,0,0);
                stroke-width: 1;
            }
            .info {
                padding: 10px;
                width: 100vw;
            }
        </style>

    </head>
    <body>
        <h1 class="text-center top bg-primary">
            OKRESY ČR eurovolby 2019<br />
            <small><span id="subtitle"></span></small>
        </h1>
        <div class="row">
            <div id="chart" class="col-md-9"></div>
            <div class="col-md-3">
                <div class="alert alert-info">
                    <i class="fa fa-info-circle"></i> Color legend:<br />
                    <img src="okresy.png" width="200" />
                </div>
            </div>
        </div>
        <div class="alert alert-info info">
            <i class="fa fa-info-circle"></i> <br />
            Comparison between 2 parties or 2 groups of parties<br />
            Parameters:<br />
            <ul>
                <li>
                    <strong>x</strong> party on x axis (e.g., <i>x=Nevoliči</i> or <i>x=ODS,Piráti,STAN+TOP</i>)
                </li>
                <li>
                    <strong>y</strong> party on y axis (e.g., <i>y=ANO</i> or <i>y=ANO,EU TROLL,KSČM,ČSSD</i>)
                </li>
                <li>
                    <strong>level</strong> is level of detail: <i>1</i> regions, <i>2</i> sub-regions, <i>3</i> municipalities,  <i>2_nonvoters</i> sub-regions including non voters (e.g., <i>level=3</i> or <i>level=2_nonvoters</i>)
                </li>
            </ul>
            Examples:<br />
                <ul>
                    <li>
                        <a href="//bl.ocks.org/michalskop/raw/291b1e431ae74d1612b7ef218c1f3dfe/?x=Nevoliči&y=ODS,Piráti,STAN+TOP,KDU-ČSL,Hlas&level=2_nonvoters">Non voters vs. ODS+Piráti+STAN+TOP+KDU-ČSL+Hlas on sub-regional level including non voters</a>
                    </li>
                    <li>
                        <a href="//bl.ocks.org/michalskop/raw/291b1e431ae74d1612b7ef218c1f3dfe/?x=Piráti&y=SPD&level=2">KDU-ČSL vs. SPD on sub-regional level (excluding non voters)</a>
                    </li>
                </ul>
        </div>


<script>

    if (getUrlParameter('level')) {
        var level = getUrlParameter('level');
    } else
        var level = "2";

    var csv = "regions_" + level + ".csv"

    if (getUrlParameter('x')) {
        var xs = getUrlParameter('x');
        xs = xs.split(',');
    } else
        var xs = ['ANO'];
    if (getUrlParameter('y')) {
        var ys = getUrlParameter('y');
        ys = ys.split(',');
    }  else
        var ys = ['ODS', 'Piráti', 'KDU-ČSL', 'STAN+TOP'];

    if (getUrlParameter('maxrange'))
        var maxrange = parseFloat(getUrlParameter('maxrange'));
    else
        var maxrange = 35

    var margin = {top: 20, right: 20, bottom: 30, left: 50},
        width = 700 - margin.left - margin.right,
        height = 550 - margin.top - margin.bottom;



d3.csv(csv, function(data) {

    data.sort(function(a, b) {
        return parseFloat(b.population) - parseFloat(a.population);
    });

    // find ranges for axes:
    var maxpopulation = 0;
    var maxy = 0
    var maxx = 0
    for (var k in data){
        data[k]['xn'] = sumInRegion(data[k],xs)
        data[k]['yn'] = sumInRegion(data[k],ys)
        if (parseInt(data[k]['population']) > maxpopulation)
            maxpopulation = parseInt(data[k]['population']);
        data[k]['id'] = k;
        if (data[k]['xn']/data[k]['population'] > maxx)
            maxx = data[k]['xn']/data[k]['population'];
        if (data[k]['yn']/data[k]['population'] > maxy)
            maxy = data[k]['yn']/data[k]['population'];
    }

    if (getUrlParameter('maxdomain'))
        if (isNumeric(getUrlParameter('maxdomain')))
            var maxdomain = getUrlParameter('maxdomain');
        else
            var maxdomain = maxpopulation;
    else
        var maxdomain = maxpopulation;

    var x = d3.scale.linear()
        .range([0, width])
        .domain([0,1.1*maxx]);
    var y = d3.scale.linear()
        .range([height, 0])
        .domain([0,1.1*maxy]);
    var r = d3.scale.sqrt()
        .domain([0, maxdomain])
    	.range([1, maxrange]);

    var formatAsPercentage = d3.format("%");

    titlex = createTitle(xs)
    titley = createTitle(ys)
    $("#subtitle").html(titlex + " vs. " + titley);

    var xAxis = d3.svg.axis()
        .scale(x)
        .orient("bottom")
        .tickFormat(formatAsPercentage);
    var yAxis = d3.svg.axis()
        .scale(y)
        .orient("left")
        .tickFormat(formatAsPercentage);

    var svg = d3.select("#chart").append("svg")
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
      .append("g")
        .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

    /* Initialize tooltip */
    var tip = changetooltip();

    /* Invoke the tip in the context of your visualization */
    svg.call(tip);

    // Add tooltip div
    var div = d3.select("body").append("div")
        .attr("class", "tooltip")
        .style("opacity", 1e-6);

    svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
     .append("text")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", ".71em")
      .style("text-anchor", "end")
      .text(titley);

    svg.append("g")
        .attr("class", "x axis")
        .attr("transform", "translate(0," + height + ")")
        .call(xAxis)
       .append("text")
        .attr("x", x(maxx))
        .attr("dy", "-1em")
        .style("text-anchor", "end")
        .text(titlex);

    svg.append("line")
        .attr("x1", x(0))
        .attr("y1", y(0))
        .attr("x2", function() { return x(Math.min(maxx, maxy))})
        .attr("y2", function() { return y(Math.min(maxx, maxy))})
        .attr("id", "center-line")
        .style("stroke-dasharray", ("3, 5"));

    nodes = data
        .map(function(d) {
            return {
                x: x(d.xn/d.population),
                y: y(d.yn/d.population),
                xn: d.xn,
                yn: d.yn,
                r: r(d.population),
                name: d.name,
                id: d.id,
                color: group2color(d.group),
                xp: Math.round((d.xn / d.population) * 1000) / 10,
                yp: Math.round((d.yn / d.population) * 1000) / 10
            }
    });

    dats = [];
    for (i in nodes) {
        dats.push([nodes[i].x,nodes[i].y]);
    }
    dats.sort(function(a, b) {
        return parseFloat(a[0]) - parseFloat(b[0]);
    });

    var myRegression = regression('polynomial', dats, 3);


    var bubbles = svg.selectAll("svg")
        .data(nodes)
        .enter().append("svg:svg").append("svg:circle")
        	.attr("cx", function (d) {
        	       return d.x
        	})
        	.attr("cy", function (d) {return d.y})
        	.attr("r", function (d) {return d.r})
        	//.attr("stroke-width", function(d) {return d.r2})
        	.attr("title", function(d) {return d.name;})
            .attr("fill",function(d) { return d.color })
            .attr("stroke",function(d) { return d.color })
            .on("mouseover", tip.show)
            .on("mouseout", tip.hide);

    var line = d3.svg.line()
        .interpolate("basis-open")
        .tension(0.1)          // <=== THERE IT IS!
        .x(function(d) { return d[0]; })
        .y(function(d) { return d[1]; });

    svg.append("path")
        .attr("d",line(myRegression['points']));


});


//tooltip
function changetooltip() {
  tip = d3.tip().attr('class', 'd3-tip').html(function(d) {
    html = '<span class="stronger">' + d.name + "</span><br>" + titlex + ": " + d.xp + "% " + d.xn + "<br>" + titley + ": " + d.yp + "% " +  d.yn;
    return html;
  });
  return tip;
}

function createTitle(arr) {
    ar = []
    for (k in arr) {
        ar.push(arr[k])
    }
    return ar.join(" + ");
}

function sumInRegion(items,arr) {
    var s = 0
    for (var k in items) {
        if ($.inArray(k,arr) >= 0) {
            s = s + parseInt(items[k])
        }
    }
    return s
}
//helper function for default values
function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
}
// helper function for coloring by region
// function region2color(r){
//   if (r == 'Hlavní město Praha') return '#b276b2';
//   if (r == 'Středočeský kraj') return '#f17cb0';
//   if ((r == 'Plzeňský kraj') || (r == 'Jihočeský kraj')) return '#5DA5DA' //'#aec7e8';
//   if ((r == 'Ústecký kraj') || (r == 'Karlovarský kraj')) return '#FAA43A';
//   if ((r == 'Královéhradecký kraj') || (r == 'Pardubický kraj') || (r == 'Liberecký kraj')) return '#60bd68';
//   if ((r == 'Zlínský kraj') || (r == 'Olomoucký kraj')) return '#decf3f';
//   if ((r == 'Jihomoravský kraj') || (r == 'Kraj Vysočina')) return '#b2912f';
//   if (r == 'Moravskoslezský kraj') return '#f15854';
//   return '#4d4d4d';
// }

// helper function for coloring by region
function region2color(r){
  if (r == '1100') return '#b276b2';
  if (r == '2100') return '#f17cb0';
  if ((r == '3100') || (r == '3200')) return '#5DA5DA' //'#aec7e8';
  if ((r == '4100') || (r == '4200')) return '#FAA43A';
  if ((r == '5100') || (r == '5200') || (r == '5300')) return '#60bd68';
  if ((r == '6100') || (r == '6200')) return '#b2912f';
  if ((r == '7100') || (r == '7200')) return '#decf3f';
  if (r == '8100') return '#f15854';
  return '#4d4d4d';
}
function group2color(g){
    if (g == "Praha") {
        return "#C6A373"
    }
    if (g == "Bible Belt") {
        return "#53AFB5"
    }
    if (g == "Neviditelní") {
        return "#B9504C"
    }
    if (g == "Jádro") {
        return "#118AB2"
    }
}

// helper function
function toObjectWithId(arr) {
  var rv = {};
  for (var i = 0; i < arr.length; ++i)
    rv[arr[i]['id']] = arr[i];
  return rv;
}
</script>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-8592359-13', 'ocks.org');
  ga('send', 'pageview');

</script>

</html>

d3.tip.js

// d3.tip
// Copyright (c) 2013 Justin Palmer
//
// Tooltips for d3.js SVG visualizations

(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module with d3 as a dependency.
    define(['d3'], factory)
  } else {
    // Browser global.
    root.d3.tip = factory(root.d3)
  }
}(this, function (d3) {

  // Public - contructs a new tooltip
  //
  // Returns a tip
  return function() {
    var direction = d3_tip_direction,
        offset    = d3_tip_offset,
        html      = d3_tip_html,
        node      = initNode(),
        svg       = null,
        point     = null,
        target    = null
  
    function tip(vis) {
      svg = getSVGNode(vis)
      point = svg.createSVGPoint()
      document.body.appendChild(node)
    }
  
    // Public - show the tooltip on the screen
    //
    // Returns a tip
    tip.show = function() {
      var args = Array.prototype.slice.call(arguments)
      if(args[args.length - 1] instanceof SVGElement) target = args.pop()
  
      var content = html.apply(this, args),
          poffset = offset.apply(this, args),
          dir     = direction.apply(this, args),
          nodel   = d3.select(node),
          i       = directions.length,
          coords,
          scrollTop  = document.documentElement.scrollTop || document.body.scrollTop,
          scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
  
      nodel.html(content)
        .style({ opacity: 1, 'pointer-events': 'all' })
  
      while(i--) nodel.classed(directions[i], false)
      coords = direction_callbacks.get(dir).apply(this)
      nodel.classed(dir, true).style({
        top: (coords.top +  poffset[0]) + scrollTop + 'px',
        left: (coords.left + poffset[1]) + scrollLeft + 'px'
      })
  
      return tip
    }
  
    // Public - hide the tooltip
    //
    // Returns a tip
    tip.hide = function() {
      nodel = d3.select(node)
      nodel.style({ opacity: 0, 'pointer-events': 'none' })
      return tip
    }
  
    // Public: Proxy attr calls to the d3 tip container.  Sets or gets attribute value.
    //
    // n - name of the attribute
    // v - value of the attribute
    //
    // Returns tip or attribute value
    tip.attr = function(n, v) {
      if (arguments.length < 2 && typeof n === 'string') {
        return d3.select(node).attr(n)
      } else {
        var args =  Array.prototype.slice.call(arguments)
        d3.selection.prototype.attr.apply(d3.select(node), args)
      }
  
      return tip
    }
  
    // Public: Proxy style calls to the d3 tip container.  Sets or gets a style value.
    //
    // n - name of the property
    // v - value of the property
    //
    // Returns tip or style property value
    tip.style = function(n, v) {
      if (arguments.length < 2 && typeof n === 'string') {
        return d3.select(node).style(n)
      } else {
        var args =  Array.prototype.slice.call(arguments)
        d3.selection.prototype.style.apply(d3.select(node), args)
      }
  
      return tip
    }
  
    // Public: Set or get the direction of the tooltip
    //
    // v - One of n(north), s(south), e(east), or w(west), nw(northwest),
    //     sw(southwest), ne(northeast) or se(southeast)
    //
    // Returns tip or direction
    tip.direction = function(v) {
      if (!arguments.length) return direction
      direction = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    // Public: Sets or gets the offset of the tip
    //
    // v - Array of [x, y] offset
    //
    // Returns offset or
    tip.offset = function(v) {
      if (!arguments.length) return offset
      offset = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    // Public: sets or gets the html value of the tooltip
    //
    // v - String value of the tip
    //
    // Returns html value or tip
    tip.html = function(v) {
      if (!arguments.length) return html
      html = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    function d3_tip_direction() { return 'n' }
    function d3_tip_offset() { return [0, 0] }
    function d3_tip_html() { return ' ' }
  
    var direction_callbacks = d3.map({
      n:  direction_n,
      s:  direction_s,
      e:  direction_e,
      w:  direction_w,
      nw: direction_nw,
      ne: direction_ne,
      sw: direction_sw,
      se: direction_se
    }),
  
    directions = direction_callbacks.keys()
  
    function direction_n() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.n.y - node.offsetHeight,
        left: bbox.n.x - node.offsetWidth / 2
      }
    }
  
    function direction_s() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.s.y,
        left: bbox.s.x - node.offsetWidth / 2
      }
    }
  
    function direction_e() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.e.y - node.offsetHeight / 2,
        left: bbox.e.x
      }
    }
  
    function direction_w() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.w.y - node.offsetHeight / 2,
        left: bbox.w.x - node.offsetWidth
      }
    }
  
    function direction_nw() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.nw.y - node.offsetHeight,
        left: bbox.nw.x - node.offsetWidth
      }
    }
  
    function direction_ne() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.ne.y - node.offsetHeight,
        left: bbox.ne.x
      }
    }
  
    function direction_sw() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.sw.y,
        left: bbox.sw.x - node.offsetWidth
      }
    }
  
    function direction_se() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.se.y,
        left: bbox.e.x
      }
    }
  
    function initNode() {
      var node = d3.select(document.createElement('div'))
      node.style({
        position: 'absolute',
        top: 0,
        opacity: 0,
        'pointer-events': 'none',
        'box-sizing': 'border-box'
      })
  
      return node.node()
    }
  
    function getSVGNode(el) {
      el = el.node()
      if(el.tagName.toLowerCase() == 'svg')
        return el
  
      return el.ownerSVGElement
    }
  
    // Private - gets the screen coordinates of a shape
    //
    // Given a shape on the screen, will return an SVGPoint for the directions
    // n(north), s(south), e(east), w(west), ne(northeast), se(southeast), nw(northwest),
    // sw(southwest).
    //
    //    +-+-+
    //    |   |
    //    +   +
    //    |   |
    //    +-+-+
    //
    // Returns an Object {n, s, e, w, nw, sw, ne, se}
    function getScreenBBox() {
      var targetel   = target || d3.event.target,
          bbox       = {},
          matrix     = targetel.getScreenCTM(),
          tbbox      = targetel.getBBox(),
          width      = tbbox.width,
          height     = tbbox.height,
          x          = tbbox.x,
          y          = tbbox.y
  
      point.x = x
      point.y = y
      bbox.nw = point.matrixTransform(matrix)
      point.x += width
      bbox.ne = point.matrixTransform(matrix)
      point.y += height
      bbox.se = point.matrixTransform(matrix)
      point.x -= width
      bbox.sw = point.matrixTransform(matrix)
      point.y -= height / 2
      bbox.w  = point.matrixTransform(matrix)
      point.x += width
      bbox.e = point.matrixTransform(matrix)
      point.x -= width / 2
      point.y -= height / 2
      bbox.n = point.matrixTransform(matrix)
      point.y += height
      bbox.s = point.matrixTransform(matrix)
  
      return bbox
    }
  
    return tip
  };

}));

notes.txt

The data files were obtained mainly from PCA 2019 and adjusted manually.

regions_1.csv

"id","name","region","region_id","population","KAN","SNČR","CESTA","NÁR.SOC.","ODS","EU TROLL","ČSSD","RDS","KSČM","DSSS+NF","SPRRSČ M.Sládka","Rozumní+ND","PB","NE-VOLIM.CZ","PROČ","Vědci","ČSNS+PatriotiČR","JSI PRO?","PRO Zdraví","MZH","ČS","TUJKA","Hlas","Svobodní+RČ","STAN+TOP","Piráti","SPD","ANS","ANO","ADS","Moravané","NÁRODOVCI","DSZ-ZA PR.ZVÍŘ.","BOS","Soukromníci+NEZ","ESO","KOAL","KDU-ČSL","APAČI 2017"
"1100","Hlavní město Praha","Hlavní město Praha","1100",345558,375,1095,939,216,65259,2948,9712,159,13156,307,272,1629,483,180,223,2293,320,71,655,86,355,267,12805,3005,71687,66099,19958,191,46137,328,86,68,1694,319,587,3476,44,16505,1569
"2100","Středočeský kraj","Středočeský kraj","2100",311493,517,1444,949,194,53828,4941,11182,168,19929,577,628,2743,712,320,439,2637,210,115,923,94,789,288,9144,2062,44125,47519,24951,237,60881,488,126,110,2144,377,819,1751,33,11680,1419
"3100","Jihočeský kraj","Jihočeský kraj","3100",147224,196,691,483,116,21266,2342,5730,76,11482,359,280,1302,347,148,192,1236,82,49,444,133,123,104,3212,1076,16709,20214,13660,189,31694,299,73,59,863,226,573,717,19,9764,696
"3200","Plzeňský kraj","Plzeňský kraj","3200",125754,190,488,362,121,19605,2255,5201,71,10218,272,255,1257,258,96,162,875,59,44,1171,30,107,85,2796,664,13887,15645,12067,101,28899,702,28,50,880,196,313,460,11,5292,581
"4100","Karlovarský kraj","Karlovarský kraj","4100",53535,141,208,202,42,6136,1160,2269,76,3934,180,131,613,147,53,71,496,80,25,480,17,65,37,1126,242,5233,6599,6447,60,14478,105,27,17,437,90,159,264,7,1402,279
"4200","Ústecký kraj","Ústecký kraj","4200",141720,223,791,400,85,17696,3248,4975,305,13008,557,379,1535,348,207,238,1305,102,59,1181,46,151,127,2886,765,11747,16363,15786,136,40738,208,62,67,1095,195,429,546,20,2938,773
"5100","Liberecký kraj","Liberecký kraj","5100",97800,95,456,309,60,13473,1633,2951,198,5436,212,188,1042,245,98,103,869,39,28,379,39,117,77,3148,590,13626,14595,10291,102,21914,144,51,118,702,150,298,612,8,2943,461
"5200","Královéhradecký kraj","Královéhradecký kraj","5200",132761,135,554,537,59,19005,2276,4939,115,8714,240,284,1318,315,170,241,1201,52,49,454,54,121,117,2750,816,14756,19010,11362,109,30969,290,61,79,930,132,435,516,10,9004,582
"5300","Pardubický kraj","Pardubický kraj","5300",117292,98,508,552,58,16132,1761,4952,65,8509,198,182,1043,235,170,396,1049,56,34,360,68,100,73,2408,707,11130,16430,9800,119,26088,231,116,41,718,120,412,551,2,11287,533
"6100","Kraj Vysočina","Kraj Vysočina","6100",120408,112,451,365,57,15941,1871,6139,72,9396,185,244,902,251,138,149,979,58,51,338,301,98,62,2114,633,10211,15809,10181,85,24634,270,250,37,646,106,372,798,14,15626,462
"6200","Jihomoravský kraj","Jihomoravský kraj","6200",278155,168,1015,881,104,37786,4040,11451,96,19258,341,520,1755,440,239,183,2606,91,154,473,1460,161,147,5640,2065,26681,36552,26595,211,54843,292,2826,48,1447,211,2000,1198,29,32556,1592
"7100","Olomoucký kraj","Olomoucký kraj","7100",134219,105,529,698,50,14732,2405,5778,70,10613,240,243,975,265,110,137,955,42,47,284,307,144,72,2321,656,12353,15743,15627,117,32301,173,1058,48,809,107,347,474,13,12646,625
"7200","Zlínský kraj","Zlínský kraj","7200",133757,66,476,444,50,15189,1883,7317,46,8467,170,197,863,250,103,77,1108,42,37,278,263,118,75,2406,966,10694,15466,14235,105,28530,156,1043,32,668,85,551,465,10,20212,614
"8100","Moravskoslezský kraj","Moravskoslezský kraj","8100",231089,159,970,769,100,28837,4283,11068,134,22504,525,481,1738,456,189,149,1883,56,73,448,297,160,122,3693,1245,13381,24800,25758,209,60237,318,792,70,1306,269,1425,759,15,19868,1543

regions_1_nonvoters.csv

"id","name","region","region_id","population","Nevoliči","KAN","SNČR","CESTA","NÁR.SOC.","ODS","EU TROLL","ČSSD","RDS","KSČM","DSSS+NF","SPRRSČ M.Sládka","Rozumní+ND","PB","NE-VOLIM.CZ","PROČ","Vědci","ČSNS+PatriotiČR","JSI PRO?","PRO Zdraví","MZH","ČS","TUJKA","Hlas","Svobodní+RČ","STAN+TOP","Piráti","SPD","ANS","ANO","ADS","Moravané","NÁRODOVCI","DSZ-ZA PR.ZVÍŘ.","BOS","Soukromníci+NEZ","ESO","KOAL","KDU-ČSL","APAČI 2017"
"1100","Hlavní město Praha","Hlavní město Praha","1100",907999,562441,375,1095,939,216,65259,2948,9712,159,13156,307,272,1629,483,180,223,2293,320,71,655,86,355,267,12805,3005,71687,66099,19958,191,46137,328,86,68,1694,319,587,3476,44,16505,1569
"2100","Středočeský kraj","Středočeský kraj","2100",1036947,725454,517,1444,949,194,53828,4941,11182,168,19929,577,628,2743,712,320,439,2637,210,115,923,94,789,288,9144,2062,44125,47519,24951,237,60881,488,126,110,2144,377,819,1751,33,11680,1419
"3100","Jihočeský kraj","Jihočeský kraj","3100",511773,364549,196,691,483,116,21266,2342,5730,76,11482,359,280,1302,347,148,192,1236,82,49,444,133,123,104,3212,1076,16709,20214,13660,189,31694,299,73,59,863,226,573,717,19,9764,696
"3200","Plzeňský kraj","Plzeňský kraj","3200",453212,327458,190,488,362,121,19605,2255,5201,71,10218,272,255,1257,258,96,162,875,59,44,1171,30,107,85,2796,664,13887,15645,12067,101,28899,702,28,50,880,196,313,460,11,5292,581
"4100","Karlovarský kraj","Karlovarský kraj","4100",232989,179454,141,208,202,42,6136,1160,2269,76,3934,180,131,613,147,53,71,496,80,25,480,17,65,37,1126,242,5233,6599,6447,60,14478,105,27,17,437,90,159,264,7,1402,279
"4200","Ústecký kraj","Ústecký kraj","4200",648317,506597,223,791,400,85,17696,3248,4975,305,13008,557,379,1535,348,207,238,1305,102,59,1181,46,151,127,2886,765,11747,16363,15786,136,40738,208,62,67,1095,195,429,546,20,2938,773
"5100","Liberecký kraj","Liberecký kraj","5100",348118,250318,95,456,309,60,13473,1633,2951,198,5436,212,188,1042,245,98,103,869,39,28,379,39,117,77,3148,590,13626,14595,10291,102,21914,144,51,118,702,150,298,612,8,2943,461
"5200","Královéhradecký kraj","Královéhradecký kraj","5200",441611,308850,135,554,537,59,19005,2276,4939,115,8714,240,284,1318,315,170,241,1201,52,49,454,54,121,117,2750,816,14756,19010,11362,109,30969,290,61,79,930,132,435,516,10,9004,582
"5300","Pardubický kraj","Pardubický kraj","5300",410354,293062,98,508,552,58,16132,1761,4952,65,8509,198,182,1043,235,170,396,1049,56,34,360,68,100,73,2408,707,11130,16430,9800,119,26088,231,116,41,718,120,412,551,2,11287,533
"6100","Kraj Vysočina","Kraj Vysočina","6100",409780,289372,112,451,365,57,15941,1871,6139,72,9396,185,244,902,251,138,149,979,58,51,338,301,98,62,2114,633,10211,15809,10181,85,24634,270,250,37,646,106,372,798,14,15626,462
"6200","Jihomoravský kraj","Jihomoravský kraj","6200",947994,669839,168,1015,881,104,37786,4040,11451,96,19258,341,520,1755,440,239,183,2606,91,154,473,1460,161,147,5640,2065,26681,36552,26595,211,54843,292,2826,48,1447,211,2000,1198,29,32556,1592
"7100","Olomoucký kraj","Olomoucký kraj","7100",511768,377549,105,529,698,50,14732,2405,5778,70,10613,240,243,975,265,110,137,955,42,47,284,307,144,72,2321,656,12353,15743,15627,117,32301,173,1058,48,809,107,347,474,13,12646,625
"7200","Zlínský kraj","Zlínský kraj","7200",474868,341111,66,476,444,50,15189,1883,7317,46,8467,170,197,863,250,103,77,1108,42,37,278,263,118,75,2406,966,10694,15466,14235,105,28530,156,1043,32,668,85,551,465,10,20212,614
"8100","Moravskoslezský kraj","Moravskoslezský kraj","8100",981007,749918,159,970,769,100,28837,4283,11068,134,22504,525,481,1738,456,189,149,1883,56,73,448,297,160,122,3693,1245,13381,24800,25758,209,60237,318,792,70,1306,269,1425,759,15,19868,1543

regions_2.csv

"id","name","region_id","population","group","KAN","SNČR","CESTA","NÁR.SOC.","ODS","EU TROLL","ČSSD","RDS","KSČM","DSSS+NF","SPRRSČ M.Sládka","Rozumní+ND","PB","NE-VOLIM.CZ","PROČ","Vědci","ČSNS+PatriotiČR","JSI PRO?","PRO Zdraví","MZH","ČS","TUJKA","Hlas","Svobodní+RČ","STAN+TOP","Piráti","SPD","ANS","ANO","ADS","Moravané","NÁRODOVCI","DSZ-ZA PR.ZVÍŘ.","BOS","Soukromníci+NEZ","ESO","KOAL","KDU-ČSL","APAČI 2017"
"6207","Znojmo","6200",23768,"Neviditelní",20,82,83,29,2386,543,996,21,2251,39,50,216,57,29,15,183,21,12,69,329,11,9,377,108,1554,2324,2600,13,6244,31,244,4,134,19,74,79,6,2381,125
"7204","Zlín","7200",44896,"Bible Belt",28,139,148,9,5203,647,1688,9,2181,56,72,252,73,35,22,401,10,11,95,61,57,25,1006,326,4181,5555,4818,33,10302,66,248,11,214,24,164,181,3,6284,258
"6105","Žďár nad Sázavou","6100",27909,"Bible Belt",18,101,99,16,3286,417,1688,12,1893,59,44,185,71,38,30,284,12,12,65,54,27,8,494,146,2382,3534,1874,19,5459,52,91,6,173,16,87,78,1,4975,103
"6206","Vyškov","6200",20310,"Bible Belt",11,67,57,3,2190,346,1278,7,2052,44,54,174,43,20,18,179,3,11,49,215,11,15,357,117,1345,2333,2223,10,4003,17,262,3,127,16,89,66,0,2371,124
"7203","Vsetín","7200",31460,"Bible Belt",15,150,113,17,4052,447,1289,12,1757,43,48,267,82,32,27,244,15,13,65,66,19,14,608,283,2467,3649,3363,26,6503,50,174,13,173,27,128,115,2,4951,141
"5304","Ústí nad Orlicí","5300",33148,"Bible Belt",36,167,209,16,4365,485,1392,18,2096,64,51,356,73,43,66,291,16,13,94,18,22,23,616,180,3130,4907,2800,45,7093,79,28,7,211,36,98,201,0,3644,159
"4207","Ústí nad Labem","4200",21329,"Neviditelní",74,91,56,5,2668,469,630,22,1661,110,50,194,52,27,48,219,8,9,339,4,23,9,495,105,2146,2831,2408,18,5754,27,2,10,136,29,62,90,0,329,119
"7202","Uherské Hradiště","7200",32729,"Bible Belt",12,108,107,9,3726,462,1357,15,2256,41,30,208,55,20,11,282,12,9,65,73,30,17,545,203,2640,3668,3021,24,6543,15,442,4,161,14,164,105,1,6136,138
"5205","Trutnov","5200",26661,"Jádro",22,133,94,14,3957,415,853,26,1893,59,64,258,60,40,52,182,11,15,97,14,36,28,535,158,3029,3971,2440,22,6316,55,20,15,222,28,91,116,1,1175,144
"6104","Třebíč","6100",25634,"Bible Belt",24,109,63,10,2740,414,1172,23,2208,41,46,213,49,20,31,195,9,13,67,172,17,13,419,139,1940,3211,2680,19,5490,91,102,5,98,24,70,260,5,3326,106
"4206","Teplice","4200",20705,"Neviditelní",25,94,51,7,2681,473,684,23,1847,96,65,247,31,30,25,210,7,5,147,8,24,12,496,117,1657,2199,2609,14,5946,33,9,7,168,26,49,81,2,397,103
"3207","Tachov","3200",8850,"Neviditelní",8,20,28,4,925,205,418,6,1044,24,27,103,20,8,12,57,7,3,57,1,5,5,192,24,742,1095,880,5,2514,27,5,3,40,21,26,24,1,224,40
"3107","Tábor","3100",24629,"Jádro",26,85,87,14,3570,373,1003,7,1841,61,39,229,47,20,26,233,10,9,73,19,15,9,611,189,2993,3420,2108,18,5657,69,16,8,142,50,118,127,3,1204,100
"5303","Svitavy","5300",22021,"Bible Belt",15,92,79,9,2784,298,1055,12,1834,34,32,175,34,21,37,176,5,3,63,24,17,13,391,121,2046,2824,1632,18,4734,37,62,4,119,24,76,73,0,2970,78
"7105","Šumperk","7100",25896,"Bible Belt",14,94,238,8,2553,448,1000,12,2003,49,41,190,48,27,18,152,9,7,54,65,29,8,368,134,3303,2583,2997,20,6371,26,239,6,118,8,71,74,3,2420,88
"3106","Strakonice","3100",16347,"Jádro",22,73,53,12,2126,281,727,12,1291,48,40,161,32,22,35,133,9,5,46,6,24,16,308,86,1688,2181,1567,46,3888,29,2,4,101,10,59,61,4,1058,81
"4103","Sokolov","4100",14037,"Neviditelní",88,64,54,11,1382,345,674,16,1028,62,49,164,43,20,25,128,25,12,86,5,16,9,269,86,1222,1481,1922,17,4094,29,8,5,101,29,39,67,4,278,80
"5104","Semily","5100",19691,"Jádro",16,72,77,21,3111,284,652,23,1031,34,26,243,62,16,23,174,12,6,83,7,19,9,536,138,2788,3110,1759,15,3744,38,9,14,111,24,94,114,1,1104,91
"5204","Rychnov nad Kněžnou","5200",18446,"Jádro",19,71,83,7,2486,287,719,13,1457,33,64,178,55,36,31,183,7,5,82,3,13,13,309,114,1880,2434,1521,10,4335,43,5,11,129,16,66,60,2,1585,81
"3206","Rokycany","3200",10303,"Jádro",15,34,35,11,1747,217,416,6,1081,19,17,107,23,10,14,75,4,6,75,3,13,15,212,57,1029,1208,926,7,2391,48,2,7,87,20,27,39,0,240,60
"2112","Rakovník","2100",11666,"Jádro",19,65,33,10,1688,225,588,8,1213,30,42,112,28,13,22,110,2,3,42,8,33,10,264,67,1130,1643,1011,20,2630,32,6,5,82,15,33,73,3,273,75
"7103","Prostějov","7100",21803,"Bible Belt",17,82,70,7,2464,368,1076,7,1889,58,46,181,39,12,19,153,8,11,42,54,13,11,335,108,1432,2361,2889,18,5000,23,152,7,153,14,58,51,3,2461,111
"2111","Příbram","2100",27564,"Jádro",112,125,74,19,3943,449,1114,10,2075,61,54,289,63,24,37,234,27,13,103,12,52,18,754,132,3298,4183,2445,24,5797,47,16,10,173,31,78,115,6,1438,109
"7104","Přerov","7100",27495,"Neviditelní",25,90,104,13,2926,532,1183,22,2419,39,56,204,56,21,30,187,11,13,69,70,15,13,444,139,1838,2839,3533,29,7209,36,199,13,151,22,74,76,1,2671,123
"2110","Praha-západ","2100",40184,"Praha",43,162,123,23,8411,461,831,17,1345,47,47,224,69,35,48,322,26,10,80,11,126,35,1689,281,8441,7007,2312,16,5425,38,14,4,264,35,104,339,4,1525,190
"2109","Praha-východ","2100",44741,"Praha",55,205,158,27,10005,536,1113,19,1635,52,48,284,75,32,49,403,27,11,127,5,85,40,1642,328,7675,7568,2843,23,6883,44,13,19,283,57,156,313,2,1701,200
"3105","Prachatice","3100",10748,"Jádro",11,55,21,6,1583,162,420,7,922,19,22,117,22,15,17,66,6,3,41,1,9,17,208,40,1205,1377,1027,13,2266,23,3,7,53,14,41,54,3,833,39
"3205","Plzeň-sever","3200",16768,"Jádro",26,82,54,7,2851,320,637,7,1440,41,42,189,33,15,34,112,8,2,170,3,16,9,321,75,1779,2050,1626,19,3708,157,3,9,135,35,47,59,1,570,76
"3203","Plzeň-město","3200",44095,"Jádro",64,160,130,22,7473,588,1652,21,2718,86,56,368,74,25,44,324,15,16,573,8,39,21,1146,303,5626,6044,4194,31,9221,227,6,14,224,63,121,187,3,2003,205
"3204","Plzeň-jih","3200",13298,"Jádro",28,67,33,18,1800,287,617,11,1276,37,45,177,44,12,18,99,5,5,118,6,7,8,291,90,1439,1547,1229,15,3178,84,4,5,112,24,25,34,0,446,57
"3104","Písek","3100",16413,"Jádro",18,79,46,9,2507,257,664,3,1413,34,38,143,35,15,21,143,4,4,46,3,15,13,328,82,1855,2309,1476,54,3408,45,4,2,99,37,42,96,1,1006,59
"6103","Pelhřimov","6100",17852,"Jádro",28,60,41,11,2701,288,1056,7,1416,26,45,138,33,15,28,134,15,8,56,7,8,15,379,126,1752,2469,1387,20,3586,37,8,7,102,17,50,65,4,1650,57
"5302","Pardubice","5300",39324,"Jádro",22,158,164,25,6004,605,1509,22,2661,59,56,314,84,60,227,371,17,13,135,15,46,27,996,266,3992,5903,3416,29,9039,67,15,17,263,36,179,189,1,2140,182
"8106","Ostrava-město","8100",62079,"Neviditelní",35,225,215,19,9012,1111,2514,40,5880,161,129,384,111,40,32,566,11,30,115,66,46,23,1030,336,3791,7040,7365,44,16202,84,168,13,369,94,504,193,9,3691,381
"8105","Opava","8100",34232,"Bible Belt",24,123,142,20,4626,691,1425,22,2370,55,65,267,75,27,28,291,6,7,62,42,25,20,698,212,2464,3838,3142,31,8817,68,122,11,224,25,138,149,0,3692,188
"7102","Olomouc","7100",51917,"Jádro",42,244,215,17,6154,880,2174,27,3593,83,85,331,101,47,61,408,10,13,107,105,78,38,1053,242,5210,7233,5250,41,11836,82,433,19,354,58,126,249,5,4638,275
"2108","Nymburk","2100",22271,"Jádro",28,92,67,15,3680,402,852,19,1357,29,50,244,57,27,31,199,10,5,72,8,49,19,566,135,2870,3364,1836,30,4829,42,11,11,170,17,42,100,2,833,101
"8104","Nový Jičín","8100",32827,"Bible Belt",26,209,110,10,4397,515,1288,17,3747,52,60,226,80,28,24,205,8,13,78,65,22,21,530,173,1967,3618,3064,25,7656,54,154,10,190,62,222,97,2,3585,217
"5203","Náchod","5200",26088,"Bible Belt",23,118,78,9,3752,435,1049,23,1404,31,47,246,57,29,39,184,5,10,86,17,18,22,580,119,2609,3404,2280,18,6168,55,10,18,163,26,65,103,2,2693,93
"4205","Most","4200",17028,"Neviditelní",25,117,44,11,1857,383,581,36,1627,82,39,159,40,23,18,165,9,11,94,2,22,14,340,100,1215,1722,2060,21,5571,29,6,3,138,30,32,55,3,260,84
"2107","Mladá Boleslav","2100",26052,"Jádro",30,111,55,14,4531,507,1260,11,1744,54,65,330,72,32,43,218,14,14,95,12,49,27,604,139,2904,3562,2276,24,6098,57,7,11,174,22,51,106,1,618,110
"2106","Mělník","2100",22084,"Jádro",45,125,59,13,3877,418,776,8,1554,75,40,188,54,22,20,207,24,12,64,8,46,24,573,152,2660,3311,1926,21,4643,43,7,8,184,26,53,128,0,575,115
"4204","Louny","4200",16631,"Neviditelní",19,88,41,15,2091,429,695,43,1833,57,60,182,39,30,23,137,34,5,136,9,15,18,256,76,1217,1692,1703,14,4986,23,7,1,121,38,43,59,0,336,60
"4203","Litoměřice","4200",24354,"Jádro",37,172,71,16,3793,462,810,22,2453,75,43,230,64,37,48,210,16,11,151,8,34,22,488,151,2119,3299,1926,24,6245,32,15,19,195,23,76,96,3,752,106
"5103","Liberec","5100",38704,"Jádro",29,188,109,18,4887,662,1094,34,1985,91,86,365,84,43,36,352,11,10,149,16,45,23,1061,257,6275,5659,4043,38,9028,58,19,63,307,50,91,271,4,984,179
"2105","Kutná Hora","2100",16661,"Jádro",11,67,55,12,2318,302,742,10,1269,35,34,159,39,29,28,121,16,5,43,4,69,15,293,81,2058,2225,1669,17,3765,33,8,8,119,17,27,53,1,825,79
"7201","Kroměříž","7200",24672,"Bible Belt",11,79,76,15,2208,327,2983,10,2273,30,47,136,40,16,17,181,5,4,53,63,12,19,247,154,1406,2594,3033,22,5182,25,179,4,120,20,95,64,4,2841,77
"2104","Kolín","2100",22097,"Jádro",24,124,93,15,2975,358,818,9,1758,35,39,203,61,14,58,180,14,10,67,5,78,25,487,150,3758,2914,2076,11,4637,23,7,8,153,14,53,92,5,663,83
"3202","Klatovy","3200",19985,"Jádro",27,76,48,44,3015,375,852,10,1520,43,32,188,45,16,28,117,15,8,109,7,13,19,410,67,2030,2399,1957,18,4881,86,4,6,127,13,41,84,3,1158,94
"2103","Kladno","2100",33408,"Jádro",79,160,82,17,5090,582,1240,34,2837,71,99,329,83,44,50,289,25,10,103,9,131,20,1062,297,3861,5014,3123,29,6898,43,21,16,250,91,71,181,3,903,161
"8103","Karviná","8100",41168,"Neviditelní",26,149,91,26,3911,870,2614,34,4926,142,112,342,88,43,23,329,10,9,61,43,31,25,463,205,1765,3802,4934,42,11978,37,119,17,200,41,343,93,3,2870,351
"4102","Karlovy Vary","4100",23198,"Jádro",30,85,92,23,3036,507,903,44,1568,77,39,286,72,22,16,217,47,10,184,7,32,22,518,112,2550,2941,2532,28,5962,37,15,6,184,26,91,136,1,616,124
"3103","Jindřichův Hradec","3100",21406,"Jádro",50,80,51,12,2838,372,1046,9,1848,42,63,174,42,14,23,159,10,8,70,71,9,14,365,310,2019,2943,2069,21,4692,48,21,20,114,16,61,78,1,1518,105
"6102","Jihlava","6100",26772,"Bible Belt",21,113,103,13,4179,415,1102,13,1992,32,76,205,50,36,33,208,12,10,78,61,10,14,449,109,2271,3759,2425,16,5250,45,34,9,153,23,99,327,4,2904,119
"5202","Jičín","5200",18872,"Jádro",21,74,111,19,2517,368,743,33,1251,46,52,233,64,14,36,197,8,3,64,7,25,21,402,96,2076,2924,1511,32,4577,52,9,25,132,19,69,74,3,897,67
"7101","Jeseník","7100",7108,"Neviditelní",7,19,71,5,635,177,345,2,709,11,15,69,21,3,9,55,4,3,12,13,9,2,121,33,570,727,958,9,1885,6,35,3,33,5,18,24,1,456,28
"5102","Jablonec nad Nisou","5100",20129,"Jádro",20,89,60,9,3129,324,547,10,1053,37,34,210,42,23,20,181,4,6,74,7,24,13,1161,117,2371,3249,2171,15,4133,15,15,24,141,44,46,138,3,464,106
"5201","Hradec Králové","5200",42694,"Jádro",50,158,171,10,6293,771,1575,20,2709,71,57,403,79,51,83,455,21,16,125,13,29,33,924,329,5162,6277,3610,27,9573,85,17,10,284,43,144,163,2,2654,197
"6205","Hodonín","6200",33717,"Bible Belt",19,106,90,13,3482,499,1272,9,2739,55,61,227,55,25,17,227,9,19,54,85,12,15,514,223,2220,3609,3596,26,6905,37,646,9,148,25,384,109,5,6034,137
"1100","Hlavní město Praha","1100",345558,"Praha",375,1095,939,216,65259,2948,9712,159,13156,307,272,1629,483,180,223,2293,320,71,655,86,355,267,12805,3005,71687,66099,19958,191,46137,328,86,68,1694,319,587,3476,44,16505,1569
"6101","Havlíčkův Brod","6100",22241,"Bible Belt",21,68,59,7,3035,337,1121,17,1887,27,33,161,48,29,27,158,10,8,72,7,36,12,373,113,1866,2836,1815,11,4849,45,15,10,120,26,66,68,0,2771,77
"8102","Frýdek-Místek","8100",44425,"Bible Belt",31,200,159,18,5224,714,2512,9,3568,83,83,357,70,35,24,377,13,7,93,49,23,23,736,221,2507,4987,5107,35,10812,50,123,17,243,29,179,176,0,5261,270
"3201","Domažlice","3200",12455,"Jádro",22,49,34,15,1794,263,609,10,1139,22,36,125,19,10,12,91,5,4,69,2,14,8,224,48,1242,1302,1255,6,3006,73,4,6,155,20,26,33,3,651,49
"4201","Děčín","4200",23177,"Neviditelní",26,132,77,18,2534,534,894,113,1902,73,78,300,71,36,36,203,17,10,114,11,19,30,452,123,2013,2655,2764,19,6745,39,16,21,185,30,47,94,6,540,200
"5301","Chrudim","5300",22799,"Bible Belt",25,91,100,8,2979,373,996,13,1918,41,43,198,44,46,66,211,18,5,68,11,15,10,405,140,1962,2796,1952,27,5222,48,11,13,125,24,59,88,1,2533,114
"4202","Chomutov","4200",18496,"Neviditelní",17,97,60,13,2072,498,681,46,1685,64,44,223,51,24,40,161,11,8,200,4,14,22,359,93,1380,1965,2316,26,5491,25,7,6,152,19,120,71,6,324,101
"4101","Cheb","4100",16300,"Neviditelní",23,59,56,8,1718,308,692,16,1338,41,43,163,32,11,30,151,8,3,210,5,17,6,339,44,1461,2177,1993,15,4422,39,4,6,152,35,29,61,2,508,75
"3102","Český Krumlov","3100",12393,"Jádro",16,58,40,14,1784,193,422,18,1029,78,13,126,40,7,23,102,11,7,34,2,8,4,270,59,1244,1569,1247,6,2650,13,6,4,88,10,52,59,3,1016,68
"3101","České Budějovice","3100",45288,"Jádro",53,261,185,49,6858,704,1448,20,3138,77,65,352,129,55,47,400,32,13,134,31,43,31,1122,310,5705,6415,4166,31,9133,72,21,14,266,89,200,242,4,3129,244
"5101","Česká Lípa","5100",19276,"Neviditelní",30,107,63,12,2346,363,658,131,1367,50,42,224,57,16,24,162,12,6,73,9,29,32,390,78,2192,2577,2318,34,5009,33,8,17,143,32,67,89,0,391,85
"8101","Bruntál","8100",16358,"Neviditelní",17,64,52,7,1667,382,715,12,2013,32,32,162,32,16,18,115,8,7,39,32,13,10,236,98,887,1515,2146,32,4772,25,106,2,80,18,39,51,1,769,136
"6203","Brno-venkov","6200",53286,"Bible Belt",25,218,177,22,7600,806,2121,15,3352,60,83,374,106,46,36,515,21,24,103,212,28,27,1174,408,5262,6765,4872,31,10296,55,583,11,306,30,346,249,4,6599,324
"6202","Brno-město","6200",97549,"Jádro",54,330,317,31,15812,1046,3657,34,4438,81,172,424,104,75,69,1031,28,59,113,409,76,53,2328,880,12699,15529,8755,83,17315,76,469,7,486,70,333,536,8,8889,673
"6204","Břeclav","6200",23696,"Bible Belt",25,93,71,2,3281,399,840,3,2109,28,35,123,32,12,6,216,2,10,43,68,9,11,436,177,1814,2747,2083,19,4965,26,416,6,111,25,708,72,4,2558,111
"6201","Blansko","6200",25829,"Bible Belt",14,119,86,4,3035,401,1287,7,2317,34,65,217,43,32,22,255,7,19,42,142,14,17,454,152,1787,3245,2466,29,5115,50,206,8,135,26,66,87,2,3724,98
"2102","Beroun","2100",21138,"Jádro",39,104,68,13,3818,349,873,13,1674,33,36,175,50,19,23,158,14,10,60,7,47,27,683,149,2570,3351,1552,10,3958,46,6,4,157,23,55,133,4,727,100
"2101","Benešov","2100",23627,"Jádro",32,104,82,16,3492,352,975,10,1468,55,74,206,61,29,30,196,11,12,67,5,24,28,527,151,2900,3377,1882,12,5318,40,10,6,135,29,96,118,2,1599,96

regions_2_nonvoters.csv

"id","name","region_id","population","group","Nevoliči","KAN","SNČR","CESTA","NÁR.SOC.","ODS","EU TROLL","ČSSD","RDS","KSČM","DSSS+NF","SPRRSČ M.Sládka","Rozumní+ND","PB","NE-VOLIM.CZ","PROČ","Vědci","ČSNS+PatriotiČR","JSI PRO?","PRO Zdraví","MZH","ČS","TUJKA","Hlas","Svobodní+RČ","STAN+TOP","Piráti","SPD","ANS","ANO","ADS","Moravané","NÁRODOVCI","DSZ-ZA PR.ZVÍŘ.","BOS","Soukromníci+NEZ","ESO","KOAL","KDU-ČSL","APAČI 2017"
"6207","Znojmo","6200",92086,"Neviditelní",68318,20,82,83,29,2386,543,996,21,2251,39,50,216,57,29,15,183,21,12,69,329,11,9,377,108,1554,2324,2600,13,6244,31,244,4,134,19,74,79,6,2381,125
"7204","Zlín","7200",155557,"Bible Belt",110661,28,139,148,9,5203,647,1688,9,2181,56,72,252,73,35,22,401,10,11,95,61,57,25,1006,326,4181,5555,4818,33,10302,66,248,11,214,24,164,181,3,6284,258
"6105","Žďár nad Sázavou","6100",95253,"Bible Belt",67344,18,101,99,16,3286,417,1688,12,1893,59,44,185,71,38,30,284,12,12,65,54,27,8,494,146,2382,3534,1874,19,5459,52,91,6,173,16,87,78,1,4975,103
"6206","Vyškov","6200",72962,"Bible Belt",52652,11,67,57,3,2190,346,1278,7,2052,44,54,174,43,20,18,179,3,11,49,215,11,15,357,117,1345,2333,2223,10,4003,17,262,3,127,16,89,66,0,2371,124
"7203","Vsetín","7200",116684,"Bible Belt",85224,15,150,113,17,4052,447,1289,12,1757,43,48,267,82,32,27,244,15,13,65,66,19,14,608,283,2467,3649,3363,26,6503,50,174,13,173,27,128,115,2,4951,141
"5304","Ústí nad Orlicí","5300",109270,"Bible Belt",76122,36,167,209,16,4365,485,1392,18,2096,64,51,356,73,43,66,291,16,13,94,18,22,23,616,180,3130,4907,2800,45,7093,79,28,7,211,36,98,201,0,3644,159
"4207","Ústí nad Labem","4200",93311,"Neviditelní",71982,74,91,56,5,2668,469,630,22,1661,110,50,194,52,27,48,219,8,9,339,4,23,9,495,105,2146,2831,2408,18,5754,27,2,10,136,29,62,90,0,329,119
"7202","Uherské Hradiště","7200",116137,"Bible Belt",83408,12,108,107,9,3726,462,1357,15,2256,41,30,208,55,20,11,282,12,9,65,73,30,17,545,203,2640,3668,3021,24,6543,15,442,4,161,14,164,105,1,6136,138
"5205","Trutnov","5200",95801,"Jádro",69140,22,133,94,14,3957,415,853,26,1893,59,64,258,60,40,52,182,11,15,97,14,36,28,535,158,3029,3971,2440,22,6316,55,20,15,222,28,91,116,1,1175,144
"6104","Třebíč","6100",90417,"Bible Belt",64783,24,109,63,10,2740,414,1172,23,2208,41,46,213,49,20,31,195,9,13,67,172,17,13,419,139,1940,3211,2680,19,5490,91,102,5,98,24,70,260,5,3326,106
"4206","Teplice","4200",100725,"Neviditelní",80020,25,94,51,7,2681,473,684,23,1847,96,65,247,31,30,25,210,7,5,147,8,24,12,496,117,1657,2199,2609,14,5946,33,9,7,168,26,49,81,2,397,103
"3207","Tachov","3200",40727,"Neviditelní",31877,8,20,28,4,925,205,418,6,1044,24,27,103,20,8,12,57,7,3,57,1,5,5,192,24,742,1095,880,5,2514,27,5,3,40,21,26,24,1,224,40
"3107","Tábor","3100",82489,"Jádro",57860,26,85,87,14,3570,373,1003,7,1841,61,39,229,47,20,26,233,10,9,73,19,15,9,611,189,2993,3420,2108,18,5657,69,16,8,142,50,118,127,3,1204,100
"5303","Svitavy","5300",83844,"Bible Belt",61823,15,92,79,9,2784,298,1055,12,1834,34,32,175,34,21,37,176,5,3,63,24,17,13,391,121,2046,2824,1632,18,4734,37,62,4,119,24,76,73,0,2970,78
"7105","Šumperk","7100",98745,"Bible Belt",72849,14,94,238,8,2553,448,1000,12,2003,49,41,190,48,27,18,152,9,7,54,65,29,8,368,134,3303,2583,2997,20,6371,26,239,6,118,8,71,74,3,2420,88
"3106","Strakonice","3100",56363,"Jádro",40016,22,73,53,12,2126,281,727,12,1291,48,40,161,32,22,35,133,9,5,46,6,24,16,308,86,1688,2181,1567,46,3888,29,2,4,101,10,59,61,4,1058,81
"4103","Sokolov","4100",71979,"Neviditelní",57942,88,64,54,11,1382,345,674,16,1028,62,49,164,43,20,25,128,25,12,86,5,16,9,269,86,1222,1481,1922,17,4094,29,8,5,101,29,39,67,4,278,80
"5104","Semily","5100",59491,"Jádro",39800,16,72,77,21,3111,284,652,23,1031,34,26,243,62,16,23,174,12,6,83,7,19,9,536,138,2788,3110,1759,15,3744,38,9,14,111,24,94,114,1,1104,91
"5204","Rychnov nad Kněžnou","5200",63069,"Jádro",44623,19,71,83,7,2486,287,719,13,1457,33,64,178,55,36,31,183,7,5,82,3,13,13,309,114,1880,2434,1521,10,4335,43,5,11,129,16,66,60,2,1585,81
"3206","Rokycany","3200",38368,"Jádro",28065,15,34,35,11,1747,217,416,6,1081,19,17,107,23,10,14,75,4,6,75,3,13,15,212,57,1029,1208,926,7,2391,48,2,7,87,20,27,39,0,240,60
"2112","Rakovník","2100",44214,"Jádro",32548,19,65,33,10,1688,225,588,8,1213,30,42,112,28,13,22,110,2,3,42,8,33,10,264,67,1130,1643,1011,20,2630,32,6,5,82,15,33,73,3,273,75
"7103","Prostějov","7100",87628,"Bible Belt",65825,17,82,70,7,2464,368,1076,7,1889,58,46,181,39,12,19,153,8,11,42,54,13,11,335,108,1432,2361,2889,18,5000,23,152,7,153,14,58,51,3,2461,111
"2111","Příbram","2100",92092,"Jádro",64528,112,125,74,19,3943,449,1114,10,2075,61,54,289,63,24,37,234,27,13,103,12,52,18,754,132,3298,4183,2445,24,5797,47,16,10,173,31,78,115,6,1438,109
"7104","Přerov","7100",105833,"Neviditelní",78338,25,90,104,13,2926,532,1183,22,2419,39,56,204,56,21,30,187,11,13,69,70,15,13,444,139,1838,2839,3533,29,7209,36,199,13,151,22,74,76,1,2671,123
"2110","Praha-západ","2100",103336,"Praha",63152,43,162,123,23,8411,461,831,17,1345,47,47,224,69,35,48,322,26,10,80,11,126,35,1689,281,8441,7007,2312,16,5425,38,14,4,264,35,104,339,4,1525,190
"2109","Praha-východ","2100",127070,"Praha",82329,55,205,158,27,10005,536,1113,19,1635,52,48,284,75,32,49,403,27,11,127,5,85,40,1642,328,7675,7568,2843,23,6883,44,13,19,283,57,156,313,2,1701,200
"3105","Prachatice","3100",40956,"Jádro",30208,11,55,21,6,1583,162,420,7,922,19,22,117,22,15,17,66,6,3,41,1,9,17,208,40,1205,1377,1027,13,2266,23,3,7,53,14,41,54,3,833,39
"3205","Plzeň-sever","3200",63085,"Jádro",46317,26,82,54,7,2851,320,637,7,1440,41,42,189,33,15,34,112,8,2,170,3,16,9,321,75,1779,2050,1626,19,3708,157,3,9,135,35,47,59,1,570,76
"3203","Plzeň-město","3200",143769,"Jádro",99674,64,160,130,22,7473,588,1652,21,2718,86,56,368,74,25,44,324,15,16,573,8,39,21,1146,303,5626,6044,4194,31,9221,227,6,14,224,63,121,187,3,2003,205
"3204","Plzeň-jih","3200",49597,"Jádro",36299,28,67,33,18,1800,287,617,11,1276,37,45,177,44,12,18,99,5,5,118,6,7,8,291,90,1439,1547,1229,15,3178,84,4,5,112,24,25,34,0,446,57
"3104","Písek","3100",56928,"Jádro",40515,18,79,46,9,2507,257,664,3,1413,34,38,143,35,15,21,143,4,4,46,3,15,13,328,82,1855,2309,1476,54,3408,45,4,2,99,37,42,96,1,1006,59
"6103","Pelhřimov","6100",58282,"Jádro",40430,28,60,41,11,2701,288,1056,7,1416,26,45,138,33,15,28,134,15,8,56,7,8,15,379,126,1752,2469,1387,20,3586,37,8,7,102,17,50,65,4,1650,57
"5302","Pardubice","5300",133289,"Jádro",93965,22,158,164,25,6004,605,1509,22,2661,59,56,314,84,60,227,371,17,13,135,15,46,27,996,266,3992,5903,3416,29,9039,67,15,17,263,36,179,189,1,2140,182
"8106","Ostrava-město","8100",260323,"Neviditelní",198244,35,225,215,19,9012,1111,2514,40,5880,161,129,384,111,40,32,566,11,30,115,66,46,23,1030,336,3791,7040,7365,44,16202,84,168,13,369,94,504,193,9,3691,381
"8105","Opava","8100",143474,"Bible Belt",109242,24,123,142,20,4626,691,1425,22,2370,55,65,267,75,27,28,291,6,7,62,42,25,20,698,212,2464,3838,3142,31,8817,68,122,11,224,25,138,149,0,3692,188
"7102","Olomouc","7100",187724,"Jádro",135807,42,244,215,17,6154,880,2174,27,3593,83,85,331,101,47,61,408,10,13,107,105,78,38,1053,242,5210,7233,5250,41,11836,82,433,19,354,58,126,249,5,4638,275
"2108","Nymburk","2100",76338,"Jádro",54067,28,92,67,15,3680,402,852,19,1357,29,50,244,57,27,31,199,10,5,72,8,49,19,566,135,2870,3364,1836,30,4829,42,11,11,170,17,42,100,2,833,101
"8104","Nový Jičín","8100",122323,"Bible Belt",89496,26,209,110,10,4397,515,1288,17,3747,52,60,226,80,28,24,205,8,13,78,65,22,21,530,173,1967,3618,3064,25,7656,54,154,10,190,62,222,97,2,3585,217
"5203","Náchod","5200",88675,"Bible Belt",62587,23,118,78,9,3752,435,1049,23,1404,31,47,246,57,29,39,184,5,10,86,17,18,22,580,119,2609,3404,2280,18,6168,55,10,18,163,26,65,103,2,2693,93
"4205","Most","4200",89055,"Neviditelní",72027,25,117,44,11,1857,383,581,36,1627,82,39,159,40,23,18,165,9,11,94,2,22,14,340,100,1215,1722,2060,21,5571,29,6,3,138,30,32,55,3,260,84
"2107","Mladá Boleslav","2100",94425,"Jádro",68373,30,111,55,14,4531,507,1260,11,1744,54,65,330,72,32,43,218,14,14,95,12,49,27,604,139,2904,3562,2276,24,6098,57,7,11,174,22,51,106,1,618,110
"2106","Mělník","2100",83347,"Jádro",61263,45,125,59,13,3877,418,776,8,1554,75,40,188,54,22,20,207,24,12,64,8,46,24,573,152,2660,3311,1926,21,4643,43,7,8,184,26,53,128,0,575,115
"4204","Louny","4200",69099,"Neviditelní",52468,19,88,41,15,2091,429,695,43,1833,57,60,182,39,30,23,137,34,5,136,9,15,18,256,76,1217,1692,1703,14,4986,23,7,1,121,38,43,59,0,336,60
"4203","Litoměřice","4200",94481,"Jádro",70127,37,172,71,16,3793,462,810,22,2453,75,43,230,64,37,48,210,16,11,151,8,34,22,488,151,2119,3299,1926,24,6245,32,15,19,195,23,76,96,3,752,106
"5103","Liberec","5100",135009,"Jádro",96305,29,188,109,18,4887,662,1094,34,1985,91,86,365,84,43,36,352,11,10,149,16,45,23,1061,257,6275,5659,4043,38,9028,58,19,63,307,50,91,271,4,984,179
"2105","Kutná Hora","2100",60152,"Jádro",43491,11,67,55,12,2318,302,742,10,1269,35,34,159,39,29,28,121,16,5,43,4,69,15,293,81,2058,2225,1669,17,3765,33,8,8,119,17,27,53,1,825,79
"7201","Kroměříž","7200",86490,"Bible Belt",61818,11,79,76,15,2208,327,2983,10,2273,30,47,136,40,16,17,181,5,4,53,63,12,19,247,154,1406,2594,3033,22,5182,25,179,4,120,20,95,64,4,2841,77
"2104","Kolín","2100",78531,"Jádro",56434,24,124,93,15,2975,358,818,9,1758,35,39,203,61,14,58,180,14,10,67,5,78,25,487,150,3758,2914,2076,11,4637,23,7,8,153,14,53,92,5,663,83
"3202","Klatovy","3200",69637,"Jádro",49652,27,76,48,44,3015,375,852,10,1520,43,32,188,45,16,28,117,15,8,109,7,13,19,410,67,2030,2399,1957,18,4881,86,4,6,127,13,41,84,3,1158,94
"2103","Kladno","2100",127679,"Jádro",94271,79,160,82,17,5090,582,1240,34,2837,71,99,329,83,44,50,289,25,10,103,9,131,20,1062,297,3861,5014,3123,29,6898,43,21,16,250,91,71,181,3,903,161
"8103","Karviná","8100",205460,"Neviditelní",164292,26,149,91,26,3911,870,2614,34,4926,142,112,342,88,43,23,329,10,9,61,43,31,25,463,205,1765,3802,4934,42,11978,37,119,17,200,41,343,93,3,2870,351
"4102","Karlovy Vary","4100",90380,"Jádro",67182,30,85,92,23,3036,507,903,44,1568,77,39,286,72,22,16,217,47,10,184,7,32,22,518,112,2550,2941,2532,28,5962,37,15,6,184,26,91,136,1,616,124
"3103","Jindřichův Hradec","3100",74134,"Jádro",52728,50,80,51,12,2838,372,1046,9,1848,42,63,174,42,14,23,159,10,8,70,71,9,14,365,310,2019,2943,2069,21,4692,48,21,20,114,16,61,78,1,1518,105
"6102","Jihlava","6100",89544,"Bible Belt",62772,21,113,103,13,4179,415,1102,13,1992,32,76,205,50,36,33,208,12,10,78,61,10,14,449,109,2271,3759,2425,16,5250,45,34,9,153,23,99,327,4,2904,119
"5202","Jičín","5200",64128,"Jádro",45256,21,74,111,19,2517,368,743,33,1251,46,52,233,64,14,36,197,8,3,64,7,25,21,402,96,2076,2924,1511,32,4577,52,9,25,132,19,69,74,3,897,67
"7101","Jeseník","7100",31838,"Neviditelní",24730,7,19,71,5,635,177,345,2,709,11,15,69,21,3,9,55,4,3,12,13,9,2,121,33,570,727,958,9,1885,6,35,3,33,5,18,24,1,456,28
"5102","Jablonec nad Nisou","5100",71400,"Jádro",51271,20,89,60,9,3129,324,547,10,1053,37,34,210,42,23,20,181,4,6,74,7,24,13,1161,117,2371,3249,2171,15,4133,15,15,24,141,44,46,138,3,464,106
"5201","Hradec Králové","5200",129938,"Jádro",87244,50,158,171,10,6293,771,1575,20,2709,71,57,403,79,51,83,455,21,16,125,13,29,33,924,329,5162,6277,3610,27,9573,85,17,10,284,43,144,163,2,2654,197
"6205","Hodonín","6200",126852,"Bible Belt",93135,19,106,90,13,3482,499,1272,9,2739,55,61,227,55,25,17,227,9,19,54,85,12,15,514,223,2220,3609,3596,26,6905,37,646,9,148,25,384,109,5,6034,137
"1100","Hlavní město Praha","1100",907999,"Praha",562441,375,1095,939,216,65259,2948,9712,159,13156,307,272,1629,483,180,223,2293,320,71,655,86,355,267,12805,3005,71687,66099,19958,191,46137,328,86,68,1694,319,587,3476,44,16505,1569
"6101","Havlíčkův Brod","6100",76284,"Bible Belt",54043,21,68,59,7,3035,337,1121,17,1887,27,33,161,48,29,27,158,10,8,72,7,36,12,373,113,1866,2836,1815,11,4849,45,15,10,120,26,66,68,0,2771,77
"8102","Frýdek-Místek","8100",172944,"Bible Belt",128519,31,200,159,18,5224,714,2512,9,3568,83,83,357,70,35,24,377,13,7,93,49,23,23,736,221,2507,4987,5107,35,10812,50,123,17,243,29,179,176,0,5261,270
"3201","Domažlice","3200",48029,"Jádro",35574,22,49,34,15,1794,263,609,10,1139,22,36,125,19,10,12,91,5,4,69,2,14,8,224,48,1242,1302,1255,6,3006,73,4,6,155,20,26,33,3,651,49
"4201","Děčín","4200",103512,"Neviditelní",80335,26,132,77,18,2534,534,894,113,1902,73,78,300,71,36,36,203,17,10,114,11,19,30,452,123,2013,2655,2764,19,6745,39,16,21,185,30,47,94,6,540,200
"5301","Chrudim","5300",83951,"Bible Belt",61152,25,91,100,8,2979,373,996,13,1918,41,43,198,44,46,66,211,18,5,68,11,15,10,405,140,1962,2796,1952,27,5222,48,11,13,125,24,59,88,1,2533,114
"4202","Chomutov","4200",98134,"Neviditelní",79638,17,97,60,13,2072,498,681,46,1685,64,44,223,51,24,40,161,11,8,200,4,14,22,359,93,1380,1965,2316,26,5491,25,7,6,152,19,120,71,6,324,101
"4101","Cheb","4100",70630,"Neviditelní",54330,23,59,56,8,1718,308,692,16,1338,41,43,163,32,11,30,151,8,3,210,5,17,6,339,44,1461,2177,1993,15,4422,39,4,6,152,35,29,61,2,508,75
"3102","Český Krumlov","3100",47553,"Jádro",35160,16,58,40,14,1784,193,422,18,1029,78,13,126,40,7,23,102,11,7,34,2,8,4,270,59,1244,1569,1247,6,2650,13,6,4,88,10,52,59,3,1016,68
"3101","České Budějovice","3100",153350,"Jádro",108062,53,261,185,49,6858,704,1448,20,3138,77,65,352,129,55,47,400,32,13,134,31,43,31,1122,310,5705,6415,4166,31,9133,72,21,14,266,89,200,242,4,3129,244
"5101","Česká Lípa","5100",82218,"Neviditelní",62942,30,107,63,12,2346,363,658,131,1367,50,42,224,57,16,24,162,12,6,73,9,29,32,390,78,2192,2577,2318,34,5009,33,8,17,143,32,67,89,0,391,85
"8101","Bruntál","8100",76483,"Neviditelní",60125,17,64,52,7,1667,382,715,12,2013,32,32,162,32,16,18,115,8,7,39,32,13,10,236,98,887,1515,2146,32,4772,25,106,2,80,18,39,51,1,769,136
"6203","Brno-venkov","6200",171964,"Bible Belt",118678,25,218,177,22,7600,806,2121,15,3352,60,83,374,106,46,36,515,21,24,103,212,28,27,1174,408,5262,6765,4872,31,10296,55,583,11,306,30,346,249,4,6599,324
"6202","Brno-město","6200",303292,"Jádro",205743,54,330,317,31,15812,1046,3657,34,4438,81,172,424,104,75,69,1031,28,59,113,409,76,53,2328,880,12699,15529,8755,83,17315,76,469,7,486,70,333,536,8,8889,673
"6204","Břeclav","6200",94163,"Bible Belt",70467,25,93,71,2,3281,399,840,3,2109,28,35,123,32,12,6,216,2,10,43,68,9,11,436,177,1814,2747,2083,19,4965,26,416,6,111,25,708,72,4,2558,111
"6201","Blansko","6200",86675,"Bible Belt",60846,14,119,86,4,3035,401,1287,7,2317,34,65,217,43,32,22,255,7,19,42,142,14,17,454,152,1787,3245,2466,29,5115,50,206,8,135,26,66,87,2,3724,98
"2102","Beroun","2100",71143,"Jádro",50005,39,104,68,13,3818,349,873,13,1674,33,36,175,50,19,23,158,14,10,60,7,47,27,683,149,2570,3351,1552,10,3958,46,6,4,157,23,55,133,4,727,100
"2101","Benešov","2100",78620,"Jádro",54993,32,104,82,16,3492,352,975,10,1468,55,74,206,61,29,30,196,11,12,67,5,24,28,527,151,2900,3377,1882,12,5318,40,10,6,135,29,96,118,2,1599,96

regions_2pboponly.csv

"id","name","region_id","population","KAN","SNČR","CESTA","NÁR.SOC.","ODS","EU TROLL","ČSSD","RDS","KSČM","DSSS+NF","SPRRSČ M.Sládka","Rozumní+ND","PB","NE-VOLIM.CZ","PROČ","Vědci","ČSNS+PatriotiČR","JSI PRO?","PRO Zdraví","MZH","ČS","TUJKA","Hlas","Svobodní+RČ","STAN+TOP","Piráti","SPD","ANS","ANO","ADS","Moravané","NÁRODOVCI","DSZ-ZA PR.ZVÍŘ.","BOS","Soukromníci+NEZ","ESO","KOAL","KDU-ČSL","APAČI 2017"
500054,"Praha 1",1100,8358,10,27,18,5,1756,55,205,9,190,8,6,32,15,2,2,61,6,0,14,1,9,6,302,71,2160,1624,410,1,603,6,2,1,31,8,14,103,0,558,27
500089,"Praha 2",1100,12361,9,40,32,1,2403,92,282,9,276,10,7,48,17,4,3,55,4,2,20,1,10,17,460,120,3099,2694,621,7,1080,10,2,3,50,14,13,129,1,658,58
500097,"Praha 3",1100,18586,16,45,45,13,3489,150,570,11,658,22,14,70,21,9,11,121,7,4,32,5,13,17,706,167,4134,3895,1022,6,2046,18,2,3,84,11,31,188,1,847,82
500119,"Praha 4",1100,37253,39,119,97,17,7003,322,1147,18,1346,33,26,182,59,18,22,257,13,7,62,5,38,26,1268,312,7835,6966,2104,15,5247,34,11,10,197,53,77,370,2,1744,152
500143,"Praha 5",1100,22863,21,53,60,12,4403,146,606,14,645,26,7,93,28,14,17,123,5,1,35,8,19,12,912,231,5429,4440,1223,6,2565,14,4,10,105,17,37,275,2,1165,80
500178,"Praha 6",1100,34154,41,111,79,22,6155,225,974,21,1238,24,15,113,49,17,13,208,15,4,48,11,33,17,1335,237,8617,6648,1581,12,3667,15,10,6,140,26,36,382,4,1859,146
500186,"Praha 7",1100,12325,7,39,36,7,2224,84,337,8,300,10,6,50,20,4,4,50,2,4,17,4,11,13,420,104,3217,2803,578,5,1021,9,0,1,58,8,19,171,3,606,65
500208,"Praha 8",1100,28336,27,96,78,23,4858,258,871,11,1449,22,27,131,40,9,28,170,184,11,45,6,29,24,955,247,5247,5495,1749,13,4194,28,8,9,150,27,38,233,3,1418,125
500216,"Praha 9",1100,12699,15,39,49,11,2617,105,359,4,424,18,20,61,16,4,4,98,10,3,20,0,14,12,490,122,2340,2340,757,8,1909,16,6,1,65,8,24,102,7,552,49
500224,"Praha 10",1100,28762,35,77,73,15,5207,235,855,14,1210,22,26,125,31,12,22,181,18,7,46,6,29,22,1000,213,5790,5638,1669,24,4080,31,5,3,146,26,35,414,4,1288,128
538060,"Praha-Běchovice",1100,702,1,1,4,0,178,8,9,0,25,2,0,4,1,0,2,3,0,0,6,0,0,0,26,6,128,81,41,1,105,3,1,0,7,0,3,19,0,30,7
538078,"Praha-Benice",1100,211,0,0,0,0,40,1,9,0,4,0,0,1,0,2,1,1,0,0,1,0,0,0,13,3,47,36,9,0,27,0,0,0,2,0,0,3,0,8,3
538124,"Praha-Březiněves",1100,372,0,6,2,0,85,2,11,1,13,0,0,1,2,0,0,5,0,0,1,0,0,0,42,4,71,58,17,0,41,0,0,0,1,0,0,1,0,7,1
538175,"Praha-Dolní Počernice",1100,810,1,2,0,1,196,7,12,0,17,0,0,6,2,0,1,8,0,0,0,0,0,1,25,3,163,148,35,0,104,1,0,0,3,0,3,9,0,57,5
538205,"Praha-Dubeč",1100,1060,1,7,5,2,240,11,30,0,38,0,4,7,3,0,0,9,0,0,3,1,1,1,46,10,192,161,58,0,153,1,0,1,7,2,3,12,0,50,1
538213,"Praha 20",1100,3873,0,11,15,1,731,34,103,0,264,2,3,32,5,2,2,19,1,2,7,1,0,1,136,26,626,693,232,1,585,2,3,0,24,1,7,36,5,243,17
538302,"Praha-Klánovice",1100,1095,2,4,4,5,276,12,23,0,19,2,0,5,2,0,1,7,0,0,0,1,1,0,62,11,249,178,48,0,119,1,1,0,3,0,0,9,1,47,2
538353,"Praha-Koloděje",1100,431,0,2,1,0,113,0,6,0,12,2,0,0,1,0,0,3,0,0,1,0,1,0,20,1,91,65,21,0,66,2,0,0,2,0,1,5,0,14,1
538361,"Praha-Kolovraty",1100,1249,3,7,5,0,252,14,35,0,23,0,1,5,2,1,3,7,0,4,4,0,9,1,57,11,280,244,45,0,126,1,1,0,4,1,4,19,0,70,10
538388,"Praha-Královice",1100,108,0,0,0,0,16,0,10,0,5,1,0,0,0,0,0,0,1,0,1,0,0,0,2,1,17,18,6,0,25,0,0,0,1,0,0,0,0,3,1
538400,"Praha-Křeslice",1100,408,0,1,2,1,120,5,6,1,3,0,0,1,0,0,0,2,0,0,0,0,0,0,16,3,94,67,14,0,47,0,0,0,1,0,2,4,0,13,5
538531,"Praha-Nedvězí",1100,83,0,0,0,0,20,2,5,0,4,0,0,1,1,0,0,0,0,0,0,0,0,0,6,0,11,10,5,0,11,1,0,0,0,0,0,2,0,3,1
538736,"Praha-Satalice",1100,708,0,3,5,1,177,5,26,0,20,0,2,3,1,0,1,5,0,0,3,0,0,0,22,8,160,105,35,1,80,1,0,1,0,2,2,2,0,37,0
538931,"Praha 22",1100,2902,4,9,6,1,659,28,75,0,78,3,3,7,2,0,0,20,0,0,11,2,0,2,118,44,579,528,140,2,401,2,0,0,16,0,9,32,0,111,10
538949,"Praha 21",1100,2939,4,6,5,7,778,21,59,0,93,3,1,17,4,3,2,14,3,1,1,0,4,7,97,24,533,508,154,2,391,2,1,1,9,2,25,20,0,101,36
539007,"Praha-Vinoř",1100,1085,3,1,5,1,220,11,18,0,25,0,1,2,1,0,0,9,0,0,1,0,0,1,38,4,220,160,67,0,155,1,0,0,2,2,3,18,0,111,5
539449,"Praha-Lipence",1100,836,1,4,0,2,227,6,11,0,21,1,2,3,2,0,0,5,0,0,1,0,0,2,45,8,182,109,49,1,112,1,0,0,3,0,3,7,0,19,9
539465,"Praha-Lochkov",1100,242,0,0,1,0,55,8,4,0,13,1,0,1,0,0,1,6,1,0,0,0,1,0,8,3,42,27,9,0,41,0,0,0,2,1,0,3,0,11,3
539589,"Praha-Přední Kopanina",1100,192,0,0,2,0,39,2,5,0,3,0,1,1,0,0,0,0,0,0,1,0,1,0,9,3,25,47,7,0,31,0,0,0,3,1,3,3,0,5,0
539601,"Praha 16",1100,2585,2,16,8,1,656,20,82,0,78,1,1,12,2,4,1,14,0,1,10,0,2,1,92,13,481,448,128,0,352,1,0,0,14,2,7,22,0,108,5
539635,"Praha-Řeporyje",1100,1299,4,7,5,0,326,18,29,1,24,1,1,12,0,1,1,6,0,0,3,0,0,1,37,12,237,240,55,1,179,1,0,0,4,0,5,14,0,63,11
539678,"Praha-Slivenec",1100,1173,0,9,3,1,257,4,21,0,18,0,2,6,1,0,0,7,0,0,2,0,0,0,60,12,303,210,67,1,123,2,0,0,6,0,2,8,0,44,4
539694,"Praha 13",1100,15619,13,68,34,7,3040,154,417,2,609,10,9,88,29,16,9,117,8,5,33,10,34,16,637,204,2752,3136,975,16,2107,19,4,5,84,19,32,109,1,715,76
539724,"Praha-Šeberov",1100,955,3,4,0,1,253,15,18,1,25,1,2,7,1,1,0,5,0,0,8,0,2,0,37,4,194,116,58,1,148,1,0,0,2,1,0,2,1,41,2
539791,"Praha-Újezd",1100,938,1,4,4,0,216,5,13,0,23,2,1,2,2,1,0,5,1,0,4,0,0,1,35,13,207,144,55,0,127,2,0,0,3,1,2,10,0,45,9
539864,"Praha-Zbraslav",1100,3012,6,12,8,0,645,13,58,4,116,1,1,14,4,0,1,21,1,1,6,0,0,1,145,32,629,575,146,3,374,2,1,0,16,1,8,41,0,112,14
539899,"Praha-Zličín",1100,1670,1,5,0,1,345,24,43,2,60,2,2,5,1,2,1,3,0,0,1,0,2,2,84,10,344,319,95,0,228,1,2,1,4,0,2,14,0,56,8
547034,"Praha 11",1100,20747,30,56,59,18,3334,210,658,5,1135,15,16,135,23,20,23,177,14,4,51,8,18,10,715,188,3274,3630,1675,22,3827,26,5,2,108,23,30,144,3,941,115
547042,"Praha-Kunratice",1100,2591,3,8,6,4,553,25,54,1,83,3,1,19,3,2,2,15,0,0,6,0,3,3,115,16,613,443,117,1,325,5,0,1,6,1,4,21,0,116,13
547051,"Praha-Libuš",1100,2386,1,10,7,1,445,27,51,1,89,0,4,15,5,2,2,25,3,0,9,1,5,6,85,20,477,419,130,1,398,6,0,0,16,0,6,22,0,88,9
547107,"Praha 12",1100,15160,17,44,41,6,2725,166,428,5,830,13,13,71,21,6,12,135,8,1,44,9,17,13,516,111,2492,2877,1064,11,2474,17,4,2,77,14,24,130,3,643,76
547115,"Praha-Velká Chuchle",1100,770,2,3,3,0,179,9,10,0,12,1,1,4,1,1,0,2,0,1,3,0,0,0,29,2,157,168,56,0,86,1,0,0,2,0,3,8,0,25,1
547140,"Praha-Lysolaje",1100,462,1,3,0,0,61,2,9,0,8,0,0,1,0,0,0,5,0,0,0,0,0,0,17,3,159,66,19,0,48,3,0,0,5,1,1,6,0,41,3
547158,"Praha-Nebušice",1100,683,0,0,1,0,123,7,17,0,22,1,0,2,2,0,0,8,0,0,2,0,1,1,27,2,157,113,42,0,116,2,0,0,2,0,1,7,0,25,2
547174,"Praha 17",1100,5783,7,27,20,5,989,46,164,0,337,6,9,38,10,3,3,52,0,1,14,2,9,4,194,49,992,1052,436,4,891,5,3,1,46,7,8,46,1,282,20
547271,"Praha-Suchdol",1100,2088,5,4,1,0,376,13,65,0,59,0,2,6,3,0,4,8,0,0,2,0,3,3,81,10,495,444,108,0,254,0,0,0,7,2,4,24,0,93,12
547298,"Praha-Ďáblice",1100,1081,1,4,4,0,227,8,15,0,38,2,1,3,1,1,1,2,0,0,1,0,0,2,49,18,260,192,46,0,143,1,0,0,7,0,2,8,0,38,6
547301,"Praha-Dolní Chabry",1100,1341,1,3,3,0,307,13,21,1,34,0,0,3,0,1,1,7,1,1,2,1,1,1,54,14,329,241,73,3,141,1,1,0,4,1,3,9,0,61,4
547310,"Praha-Čakovice",1100,2636,3,9,3,0,558,35,60,1,79,1,2,20,7,2,4,28,2,0,7,0,3,5,99,20,511,436,147,2,417,3,0,2,11,2,6,15,0,125,11
547328,"Praha-Troja",1100,484,0,1,1,0,102,3,13,0,12,0,0,2,1,0,0,4,1,0,1,0,1,0,14,2,141,87,14,0,39,0,0,0,2,0,0,4,0,37,2
547344,"Praha 19",1100,1853,0,5,4,3,369,11,54,0,73,1,2,12,2,1,2,8,0,0,7,1,1,2,83,18,345,308,105,0,305,2,0,0,13,2,4,26,0,70,14
547361,"Praha 14",1100,9349,12,29,31,12,1716,104,267,2,352,18,10,54,16,8,5,57,8,2,23,0,13,6,364,80,1776,1727,621,7,1348,8,1,3,59,6,16,86,0,455,47
547379,"Praha-Dolní Měcholupy",1100,788,3,3,6,1,193,4,24,1,22,3,2,4,2,0,1,13,0,0,2,0,1,1,34,8,160,120,39,0,99,2,0,0,0,0,1,6,0,28,5
547387,"Praha 15",1100,8596,11,28,42,4,1571,103,251,5,338,7,12,47,12,4,5,65,3,2,20,2,11,6,327,83,1455,1569,580,7,1467,10,3,1,42,13,12,63,1,378,36
547395,"Praha-Petrovice",1100,1652,6,8,0,1,257,15,46,0,66,3,0,10,3,0,3,12,0,0,5,0,0,0,70,8,360,305,105,3,268,1,2,0,6,2,3,12,1,67,4
547409,"Praha-Štěrboholy",1100,571,0,0,1,1,142,4,15,2,17,1,0,3,1,0,0,9,0,0,0,0,0,0,15,4,101,115,18,0,77,0,0,0,10,1,2,12,0,16,4
547417,"Praha 18",1100,4283,2,15,15,1,757,41,146,4,181,2,6,32,5,3,2,36,0,2,8,0,5,0,154,52,708,813,278,3,744,6,3,0,22,10,7,36,0,157,27
539741,"Štěnovický Borek",3200,141,0,0,1,0,32,5,2,0,4,1,0,2,0,0,0,1,0,0,1,0,0,0,1,3,14,25,9,0,33,0,0,0,0,0,2,0,0,4,1
540561,"Letkov",3200,223,0,0,2,0,60,3,11,0,13,0,0,1,1,2,0,3,0,0,16,0,0,0,16,0,20,22,14,0,26,1,0,0,1,3,4,1,0,3,0
540641,"Mokrouše",3200,66,0,0,0,0,23,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,6,11,5,0,14,0,0,0,1,0,0,0,0,2,0
545970,"Plzeň 1",3200,11135,25,47,36,9,1669,162,431,5,791,23,16,110,15,7,10,94,2,7,170,2,8,7,262,71,1341,1584,1216,8,2336,44,3,2,53,18,23,32,0,453,43
545988,"Plzeň 2-Slovany",3200,8554,14,26,24,3,1625,87,329,2,443,16,8,59,11,6,6,55,7,1,127,2,9,2,261,62,1200,1166,752,5,1653,39,0,4,34,11,23,45,1,403,33
546003,"Plzeň 3",3200,11211,9,46,26,5,1802,156,413,8,699,25,15,85,30,7,12,69,4,3,125,3,14,3,256,69,1402,1608,1040,9,2434,75,2,2,58,13,28,52,1,548,55
546208,"Plzeň 4",3200,6233,8,15,14,3,1081,85,274,3,390,10,9,56,7,2,5,39,2,4,64,0,4,7,180,48,756,732,589,5,1409,29,0,1,33,5,22,29,1,284,28
553590,"Nezbavětice",3200,73,0,1,0,0,6,5,3,0,4,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,2,13,6,0,23,1,0,0,1,1,2,0,0,2,0
554731,"Plzeň 5-Křimice",3200,415,0,1,2,0,68,6,10,0,25,0,0,3,0,0,0,3,0,0,3,0,1,0,16,2,48,83,31,0,84,6,0,1,2,0,3,1,0,16,0
554758,"Plzeň 6-Litice",3200,525,0,3,2,0,96,6,9,0,40,0,1,2,0,0,2,2,0,0,1,0,0,0,14,5,79,74,39,0,93,4,0,0,4,0,1,0,0,44,4
554766,"Plzeň 7-Radčice",3200,279,1,0,1,0,45,8,6,0,18,0,0,2,1,0,1,1,0,0,5,0,0,0,6,4,26,34,35,0,53,8,0,0,3,0,2,1,0,14,4
554774,"Plzeň 8-Černice",3200,495,0,0,2,0,128,6,15,0,12,0,2,3,0,0,0,3,0,0,4,0,0,0,18,10,74,64,38,0,82,1,0,0,3,2,0,4,0,22,2
557846,"Chválenice",3200,171,0,2,0,0,22,5,8,0,9,0,0,1,0,0,1,0,0,0,5,0,0,0,4,3,26,29,16,1,24,3,0,0,0,0,0,0,0,12,0
557978,"Plzeň 10-Lhota",3200,380,0,4,0,0,69,3,12,0,14,0,2,4,1,0,3,6,0,0,5,0,0,1,21,0,58,50,19,0,75,0,1,0,5,0,0,4,0,22,1
558001,"Losiná",3200,317,0,2,0,0,66,5,5,0,31,0,0,3,0,0,0,6,0,0,5,0,0,0,10,0,44,30,30,0,71,1,0,0,2,0,0,0,0,5,1
558141,"Nezvěstice",3200,336,1,3,1,0,54,2,20,0,22,0,0,2,0,0,0,6,0,0,3,1,0,0,5,0,39,52,22,0,86,1,0,0,2,2,0,0,0,12,0
558371,"Starý Plzenec",3200,1305,2,6,4,1,213,13,42,2,89,5,2,12,4,1,3,15,0,1,10,0,3,0,34,9,192,174,129,2,231,3,0,3,11,1,4,6,0,71,7
558427,"Šťáhlavy",3200,637,0,1,6,0,96,12,27,0,36,2,0,4,2,0,1,8,0,0,6,0,0,0,19,5,85,89,52,1,149,7,0,0,3,2,0,2,0,16,6
558460,"Tymákov",3200,219,1,3,3,0,26,4,15,1,9,2,0,1,0,0,0,3,0,0,3,0,0,0,4,2,36,22,16,0,52,0,0,0,2,0,2,1,0,11,0
558851,"Dýšina",3200,386,0,0,1,1,96,11,4,0,13,0,0,7,0,0,0,0,0,0,3,0,0,1,9,3,50,54,33,0,71,0,0,1,2,2,2,1,0,18,3
558966,"Chrást",3200,485,1,0,3,0,96,3,5,0,27,0,0,5,1,0,0,5,0,0,1,0,0,0,4,4,54,66,41,0,125,4,0,0,2,1,2,5,0,17,13
559130,"Kyšice",3200,233,1,0,2,0,47,1,7,0,13,0,1,2,0,0,0,3,0,0,5,0,0,0,3,2,33,20,23,0,48,0,0,0,2,1,1,1,0,13,4
559199,"Plzeň 9-Malesice",3200,208,1,0,0,0,45,0,2,0,9,2,0,3,1,0,0,1,0,0,9,0,0,0,1,1,30,37,27,0,26,0,0,0,0,1,0,2,0,10,0
578606,"Lhůta",3200,68,0,0,0,0,8,0,2,0,5,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,11,5,12,0,23,0,0,0,0,0,0,0,0,1,0
550973,"Brno-střed",6200,15414,9,47,59,2,2596,150,439,9,464,14,15,51,13,8,5,140,1,9,16,55,8,10,406,156,2587,3063,1255,13,2046,17,59,1,77,11,43,127,0,1324,109
550990,"Brno-Žabovřesky",6200,6653,2,18,19,0,1134,58,270,0,305,6,32,36,11,1,5,77,4,2,11,19,4,1,138,58,928,1055,526,8,1141,3,23,1,31,5,23,36,0,635,27
551007,"Brno-Královo Pole",6200,6993,2,20,9,1,1228,66,225,1,336,3,8,23,8,3,5,72,4,2,5,39,4,3,192,69,980,1218,528,14,1202,1,31,0,18,1,24,42,0,549,57
551031,"Brno-sever",6200,11844,2,42,39,5,2060,107,429,8,536,14,18,56,14,4,7,125,6,10,8,54,13,7,294,119,1580,1818,962,5,2074,12,53,3,65,5,40,57,3,1103,87
551058,"Brno-Židenice",6200,5088,3,17,21,5,730,75,166,2,186,2,5,18,4,8,2,64,3,4,8,24,6,4,91,51,655,810,554,2,855,3,29,0,33,1,20,30,1,564,32
551066,"Brno-Černovice",6200,1797,3,5,2,2,297,25,82,2,96,2,1,7,2,5,0,16,0,5,7,11,1,0,31,12,180,306,179,0,310,0,6,1,9,2,4,10,0,164,12
551074,"Brno-jih",6200,1749,3,8,11,0,277,23,80,0,103,1,4,11,4,2,3,16,1,1,2,4,0,0,34,13,189,256,195,2,326,0,12,1,14,4,4,11,0,127,7
551082,"Brno-Bohunice",6200,3672,3,10,12,4,522,48,165,3,174,6,7,20,3,2,2,40,1,2,6,25,1,4,92,29,401,521,377,3,801,0,19,0,22,5,19,17,1,286,19
551091,"Brno-Starý Lískovec",6200,2964,3,8,9,1,401,35,119,0,199,9,3,15,2,6,0,30,0,1,6,13,10,1,72,24,262,372,318,4,709,1,11,0,19,2,11,9,1,250,28
551112,"Brno-Nový Lískovec",6200,2612,1,13,12,1,374,29,99,1,99,3,2,13,1,1,4,25,0,2,3,15,6,3,53,23,341,450,274,2,500,2,12,0,11,2,14,9,0,189,23
551147,"Brno-Kohoutovice",6200,3407,2,9,10,0,409,42,166,1,221,2,9,22,2,1,2,46,2,0,6,14,1,0,82,24,434,389,324,2,695,3,20,0,24,3,6,11,0,403,20
551171,"Brno-Jundrov",6200,1343,2,4,2,0,242,23,49,0,47,2,4,1,2,0,1,15,0,0,1,7,0,0,43,15,196,187,111,0,257,0,5,0,2,0,10,11,0,87,17
551198,"Brno-Bystrc",6200,6184,6,15,31,2,1004,75,287,1,338,3,8,27,9,2,7,56,0,3,4,23,5,6,129,60,648,985,640,8,1097,6,39,0,34,6,21,30,1,521,47
551210,"Brno-Kníničky",6200,349,0,1,0,0,72,1,5,0,16,0,0,0,0,0,1,5,0,0,0,2,0,1,10,1,51,56,24,0,64,0,1,0,1,0,2,1,0,31,3
551228,"Brno-Komín",6200,2415,0,12,9,1,429,17,68,1,115,1,3,4,0,2,3,35,0,0,4,9,0,1,84,13,327,326,177,3,489,2,9,0,9,0,14,11,0,222,15
551236,"Brno-Medlánky",6200,1563,1,4,1,1,305,22,53,0,57,1,4,4,1,5,2,20,1,1,1,7,3,0,66,13,224,239,106,0,238,2,9,0,5,5,8,13,0,133,8
551244,"Brno-Řečkovice a Mokrá Hora",6200,4524,0,20,10,1,789,35,208,1,191,5,7,17,6,1,5,37,0,2,1,23,4,1,96,40,559,609,346,5,947,7,20,0,26,1,14,24,0,433,33
551252,"Brno-Maloměřice a Obřany",6200,1425,0,4,4,0,271,10,40,2,62,1,1,2,1,0,2,16,1,1,3,5,1,0,31,15,194,222,140,1,252,0,8,0,9,1,5,2,0,109,9
551279,"Brno-Vinohrady",6200,3248,3,11,9,1,423,46,141,0,211,0,5,21,3,5,4,47,0,3,3,18,3,2,89,24,312,524,419,5,547,2,24,0,18,2,11,16,0,278,18
551287,"Brno-Líšeň",6200,6392,6,36,21,1,921,74,278,0,373,4,20,41,4,15,5,81,1,6,7,27,2,5,120,57,729,962,619,2,1274,6,29,0,28,8,14,32,0,533,51
551295,"Brno-Slatina",6200,2209,2,11,6,1,320,32,97,0,112,2,2,9,5,3,1,17,0,1,3,5,2,1,46,27,220,347,229,0,450,1,20,0,7,2,9,10,0,190,19
551309,"Brno-Tuřany",6200,1392,0,3,6,1,225,19,56,0,55,0,1,10,3,0,0,6,2,0,1,3,0,2,31,10,180,198,137,1,257,1,11,0,8,2,6,6,1,139,11
551317,"Brno-Chrlice",6200,808,1,2,1,1,120,9,43,1,31,0,2,5,0,0,1,9,0,1,3,1,0,0,13,2,81,130,60,0,196,3,4,0,0,0,3,1,0,79,5
551325,"Brno-Bosonohy",6200,641,0,6,5,0,93,7,23,1,14,0,0,3,4,0,0,8,0,3,0,3,0,0,15,6,68,99,32,0,122,3,3,0,1,2,3,5,0,105,7
551368,"Brno-Žebětín",6200,1364,0,0,3,0,224,10,21,0,36,0,3,1,2,1,2,11,0,0,0,2,0,1,38,6,157,186,102,1,211,1,6,0,9,0,3,6,0,317,4
551376,"Brno-Ivanovice",6200,647,0,1,4,0,146,4,20,0,21,0,4,2,0,0,0,6,0,0,1,0,1,0,13,7,100,84,49,1,116,0,1,0,1,0,0,5,0,58,2
551406,"Brno-Jehnice",6200,355,0,1,0,0,74,0,3,0,17,0,1,3,0,0,0,8,0,0,0,0,0,0,8,3,56,65,15,0,66,0,2,0,0,0,2,2,0,29,0
551422,"Brno-Ořešín",6200,192,0,1,0,0,42,2,15,0,10,0,0,1,0,0,0,2,0,0,1,0,1,0,4,3,19,27,24,0,18,0,1,0,1,0,0,2,0,17,1
551431,"Brno-Útěchov",6200,305,0,1,2,0,84,2,10,0,13,0,3,1,0,0,0,1,1,0,2,1,0,0,7,0,41,25,33,1,55,0,2,0,4,0,0,0,0,14,2
500291,"Vřesina",8100,724,0,3,2,0,135,19,16,0,38,0,1,3,1,1,0,11,0,0,2,2,2,0,13,4,66,79,71,0,142,0,0,2,2,1,8,3,0,87,10
506711,"Dolní Lhota",8100,415,0,0,1,0,88,8,18,0,17,0,1,0,1,0,0,3,0,0,0,0,0,1,12,3,28,46,31,0,106,0,0,0,5,0,3,2,0,41,0
510882,"Velká Polom",8100,465,1,0,2,0,90,6,14,0,55,0,0,3,0,0,0,1,0,0,0,0,0,0,13,1,45,48,39,0,100,1,2,0,4,0,2,6,0,28,4
545911,"Moravská Ostrava a Přívoz",8100,6990,5,29,32,0,1046,107,252,8,601,16,14,43,28,5,4,60,0,6,18,4,7,1,148,55,569,973,815,6,1593,11,10,2,52,9,55,36,2,337,31
546046,"Slezská Ostrava",8100,3679,3,15,12,2,571,84,151,18,328,18,6,22,12,2,3,32,1,1,6,3,3,1,69,12,230,408,395,4,996,4,14,1,21,12,21,10,0,172,16
546135,"Ostrava-Jih",8100,17024,8,50,61,8,2075,345,736,5,1730,58,39,126,25,12,10,139,5,9,33,17,14,6,266,106,843,1835,2441,15,4777,29,59,1,103,34,84,34,3,758,125
546224,"Poruba",8100,12733,9,47,38,4,1768,230,562,3,1266,22,18,82,19,11,5,118,2,4,20,14,13,4,173,69,706,1465,1473,8,3585,15,35,1,64,10,54,45,0,681,90
554049,"Olbramice",8100,176,0,0,0,0,30,0,8,0,11,2,0,0,0,0,0,1,0,0,2,0,0,0,4,0,15,22,20,0,29,1,0,0,2,0,2,0,0,27,0
554219,"Nová Bělá",8100,549,0,0,2,0,102,5,20,0,51,0,0,3,0,0,0,5,0,3,0,2,0,1,10,2,34,50,57,1,108,0,0,0,1,2,5,3,0,79,3
554227,"Vítkovice",8100,826,0,7,2,0,84,21,34,0,102,9,2,8,3,0,1,8,0,0,1,1,0,0,12,5,42,87,133,0,215,4,0,0,2,1,5,0,0,30,7
554235,"Stará Bělá",8100,1076,0,1,1,0,184,7,17,0,93,5,3,3,0,0,0,12,0,1,5,1,1,0,18,5,66,104,95,0,219,3,3,1,8,0,7,1,0,208,4
554243,"Pustkovec",8100,434,0,1,2,0,101,9,28,0,24,0,2,3,1,0,0,4,0,0,0,0,0,0,10,1,28,45,33,0,106,0,0,0,1,0,4,0,1,30,0
554286,"Mariánské Hory a Hulváky",8100,2149,1,6,8,0,281,32,82,1,187,4,6,12,0,1,2,17,0,0,3,2,0,0,38,6,114,230,264,2,580,4,4,1,10,8,102,5,0,122,14
554308,"Petřkovice",8100,686,0,2,0,0,148,15,25,0,29,1,0,8,3,0,0,6,0,1,2,0,0,1,19,2,69,75,74,1,161,0,0,1,1,0,5,4,0,32,1
554324,"Lhotka",8100,322,0,1,0,0,81,2,12,0,16,2,0,1,0,1,0,2,0,0,0,0,0,0,6,3,15,43,33,0,79,0,0,0,2,0,5,0,0,18,0
554332,"Hošťálkovice",8100,396,0,5,1,0,53,6,9,0,47,0,0,5,0,0,0,2,0,0,1,1,0,0,4,0,34,39,36,0,123,0,0,0,2,0,1,4,0,20,3
554367,"Nová Ves",8100,108,0,0,2,0,21,0,1,0,5,2,0,0,0,1,0,2,0,0,0,0,0,0,3,2,13,13,16,0,19,0,0,0,1,0,1,0,0,6,0
554375,"Proskovice",8100,364,0,0,0,0,72,7,14,0,20,0,1,1,0,0,0,2,0,1,1,0,0,0,8,0,20,64,31,0,89,0,0,0,2,0,9,1,0,21,0
554430,"Michálkovice",8100,646,0,4,2,0,96,6,11,2,88,1,1,3,1,1,0,8,0,0,2,0,1,1,6,7,36,75,83,0,162,0,6,0,3,1,7,1,0,24,7
554537,"Radvanice a Bartovice",8100,1294,2,4,15,0,165,22,43,0,157,3,7,8,1,0,1,13,1,0,5,1,1,0,25,6,62,89,189,1,375,1,5,0,5,1,20,2,0,58,6
554561,"Krásné Pole",8100,679,0,5,2,0,114,10,32,0,66,1,2,0,0,0,0,5,0,0,1,1,0,1,10,4,51,99,53,1,150,2,0,0,3,0,4,1,0,59,2
554570,"Martinov",8100,285,0,2,0,0,41,6,10,0,23,0,0,1,0,0,0,8,0,0,0,0,0,0,3,2,20,22,35,0,90,0,1,0,1,0,3,1,0,15,1
554588,"Polanka nad Odrou",8100,1111,0,6,3,1,177,27,46,0,82,0,1,4,1,0,1,6,0,1,0,2,1,0,25,9,87,130,122,1,276,1,4,0,11,1,10,4,0,68,3
554669,"Hrabová",8100,933,0,5,5,0,169,17,32,0,61,4,3,4,6,3,2,6,0,0,2,2,0,0,24,3,53,116,78,0,241,0,3,0,7,3,4,2,0,73,5
554685,"Svinov",8100,1268,0,7,1,0,230,19,43,0,110,2,5,4,2,0,0,17,1,0,1,3,0,1,20,6,76,124,134,0,311,2,6,0,7,1,19,5,0,105,6
554715,"Třebovice",8100,603,1,1,0,0,141,5,25,0,31,0,1,2,1,0,0,6,0,0,0,0,0,0,7,1,58,56,46,1,138,1,0,0,2,0,4,0,0,72,3
554723,"Plesná",8100,437,0,1,1,0,90,6,10,0,35,0,0,0,0,0,1,3,0,0,2,1,0,0,20,4,36,45,24,0,104,0,0,0,1,0,6,5,0,41,1
568449,"Zbyslavice",8100,153,0,1,0,0,16,6,9,1,7,0,0,3,0,0,1,0,0,0,1,0,2,0,1,0,11,21,12,0,33,0,0,0,2,0,1,0,0,25,0
569119,"Čavisov",8100,137,0,0,0,0,17,0,8,0,23,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,6,20,3,0,34,1,0,1,1,0,0,2,0,17,0
569500,"Horní Lhota",8100,234,0,1,2,0,39,3,12,0,30,2,0,3,0,0,0,2,0,0,0,1,0,0,4,1,10,28,20,2,56,0,3,0,6,0,3,0,0,5,1
598739,"Stará Ves nad Ondřejnicí",8100,707,2,0,4,0,118,14,38,0,80,3,8,2,1,0,0,5,0,1,1,1,0,1,8,3,48,77,64,0,137,1,0,1,5,0,10,2,1,62,9
598798,"Šenov",8100,1441,3,6,6,0,210,25,68,0,149,1,0,5,0,0,0,22,0,0,1,2,0,1,15,3,84,166,141,0,322,1,2,0,16,2,15,2,0,167,6
598836,"Václavovice",8100,531,0,1,0,1,61,7,21,0,57,0,0,2,1,1,0,4,0,0,0,1,0,0,7,0,38,78,62,0,118,2,4,0,4,3,5,1,0,41,11
598879,"Vratimov",8100,1397,0,7,4,0,187,20,68,1,151,1,6,11,2,0,0,18,0,1,0,3,0,1,22,4,84,148,147,1,386,0,6,0,6,4,14,7,0,82,5
599549,"Klimkovice",8100,1107,0,7,4,3,211,15,39,1,110,4,2,9,1,0,1,16,1,1,5,1,1,2,7,7,94,120,95,0,242,0,1,1,6,1,6,4,2,80,7

regression.js

/**
* @license
*
* Regression.JS - Regression functions for javascript
* http://tom-alexander.github.com/regression-js/
*
* copyright(c) 2013 Tom Alexander
* Licensed under the MIT license.
*
**/

;(function() {
    'use strict';

    var gaussianElimination = function(a, o) {
           var i = 0, j = 0, k = 0, maxrow = 0, tmp = 0, n = a.length - 1, x = new Array(o);
           for (i = 0; i < n; i++) {
              maxrow = i;
              for (j = i + 1; j < n; j++) {
                 if (Math.abs(a[i][j]) > Math.abs(a[i][maxrow]))
                    maxrow = j;
              }
              for (k = i; k < n + 1; k++) {
                 tmp = a[k][i];
                 a[k][i] = a[k][maxrow];
                 a[k][maxrow] = tmp;
              }
              for (j = i + 1; j < n; j++) {
                 for (k = n; k >= i; k--) {
                    a[k][j] -= a[k][i] * a[i][j] / a[i][i];
                 }
              }
           }
           for (j = n - 1; j >= 0; j--) {
              tmp = 0;
              for (k = j + 1; k < n; k++)
                 tmp += a[k][j] * x[k];
              x[j] = (a[n][j] - tmp) / a[j][j];
           }
           return (x);
    };

        var methods = {
            linear: function(data) {
                var sum = [0, 0, 0, 0, 0], n = 0, results = [];

                for (; n < data.length; n++) {
                  if (data[n][1] != null) {
                    sum[0] += data[n][0];
                    sum[1] += data[n][1];
                    sum[2] += data[n][0] * data[n][0];
                    sum[3] += data[n][0] * data[n][1];
                    sum[4] += data[n][1] * data[n][1];
                  }
                }

                var gradient = (n * sum[3] - sum[0] * sum[1]) / (n * sum[2] - sum[0] * sum[0]);
                var intercept = (sum[1] / n) - (gradient * sum[0]) / n;
              //  var correlation = (n * sum[3] - sum[0] * sum[1]) / Math.sqrt((n * sum[2] - sum[0] * sum[0]) * (n * sum[4] - sum[1] * sum[1]));

                for (var i = 0, len = data.length; i < len; i++) {
                    var coordinate = [data[i][0], data[i][0] * gradient + intercept];
                    results.push(coordinate);
                }

                var string = 'y = ' + Math.round(gradient*100) / 100 + 'x + ' + Math.round(intercept*100) / 100;

                return {equation: [gradient, intercept], points: results, string: string};
            },

            linearThroughOrigin: function(data) {
                var sum = [0, 0], n = 0, results = [];

                for (; n < data.length; n++) {
                    if (data[n][1] != null) {
                        sum[0] += data[n][0] * data[n][0]; //sumSqX
                        sum[1] += data[n][0] * data[n][1]; //sumXY
                    }
                }

                var gradient = sum[1] / sum[0];

                for (var i = 0, len = data.length; i < len; i++) {
                    var coordinate = [data[i][0], data[i][0] * gradient];
                    results.push(coordinate);
                }

                var string = 'y = ' + Math.round(gradient*100) / 100 + 'x';

                return {equation: [gradient], points: results, string: string};
            },

            exponential: function(data) {
                var sum = [0, 0, 0, 0, 0, 0], n = 0, results = [];

                for (len = data.length; n < len; n++) {
                  if (data[n][1] != null) {
                    sum[0] += data[n][0];
                    sum[1] += data[n][1];
                    sum[2] += data[n][0] * data[n][0] * data[n][1];
                    sum[3] += data[n][1] * Math.log(data[n][1]);
                    sum[4] += data[n][0] * data[n][1] * Math.log(data[n][1]);
                    sum[5] += data[n][0] * data[n][1];
                  }
                }

                var denominator = (sum[1] * sum[2] - sum[5] * sum[5]);
                var A = Math.pow(Math.E, (sum[2] * sum[3] - sum[5] * sum[4]) / denominator);
                var B = (sum[1] * sum[4] - sum[5] * sum[3]) / denominator;

                for (var i = 0, len = data.length; i < len; i++) {
                    var coordinate = [data[i][0], A * Math.pow(Math.E, B * data[i][0])];
                    results.push(coordinate);
                }

                var string = 'y = ' + Math.round(A*100) / 100 + 'e^(' + Math.round(B*100) / 100 + 'x)';

                return {equation: [A, B], points: results, string: string};
            },

            logarithmic: function(data) {
                var sum = [0, 0, 0, 0], n = 0, results = [];

                for (len = data.length; n < len; n++) {
                  if (data[n][1] != null) {
                    sum[0] += Math.log(data[n][0]);
                    sum[1] += data[n][1] * Math.log(data[n][0]);
                    sum[2] += data[n][1];
                    sum[3] += Math.pow(Math.log(data[n][0]), 2);
                  }
                }

                var B = (n * sum[1] - sum[2] * sum[0]) / (n * sum[3] - sum[0] * sum[0]);
                var A = (sum[2] - B * sum[0]) / n;

                for (var i = 0, len = data.length; i < len; i++) {
                    var coordinate = [data[i][0], A + B * Math.log(data[i][0])];
                    results.push(coordinate);
                }

                var string = 'y = ' + Math.round(A*100) / 100 + ' + ' + Math.round(B*100) / 100 + ' ln(x)';

                return {equation: [A, B], points: results, string: string};
            },

            power: function(data) {
                var sum = [0, 0, 0, 0], n = 0, results = [];

                for (len = data.length; n < len; n++) {
                  if (data[n][1] != null) {
                    sum[0] += Math.log(data[n][0]);
                    sum[1] += Math.log(data[n][1]) * Math.log(data[n][0]);
                    sum[2] += Math.log(data[n][1]);
                    sum[3] += Math.pow(Math.log(data[n][0]), 2);
                  }
                }

                var B = (n * sum[1] - sum[2] * sum[0]) / (n * sum[3] - sum[0] * sum[0]);
                var A = Math.pow(Math.E, (sum[2] - B * sum[0]) / n);

                for (var i = 0, len = data.length; i < len; i++) {
                    var coordinate = [data[i][0], A * Math.pow(data[i][0] , B)];
                    results.push(coordinate);
                }

                 var string = 'y = ' + Math.round(A*100) / 100 + 'x^' + Math.round(B*100) / 100;

                return {equation: [A, B], points: results, string: string};
            },

            polynomial: function(data, order) {
                if(typeof order == 'undefined'){
                    order = 2;
                }
                 var lhs = [], rhs = [], results = [], a = 0, b = 0, i = 0, k = order + 1;

                        for (; i < k; i++) {
                           for (var l = 0, len = data.length; l < len; l++) {
                              if (data[l][1] != null) {
                               a += Math.pow(data[l][0], i) * data[l][1];
                              }
                            }
                            lhs.push(a), a = 0;
                            var c = [];
                            for (var j = 0; j < k; j++) {
                               for (var l = 0, len = data.length; l < len; l++) {
                                  if (data[l][1] != null) {
                                   b += Math.pow(data[l][0], i + j);
                                  }
                                }
                                c.push(b), b = 0;
                            }
                            rhs.push(c);
                        }
                rhs.push(lhs);

               var equation = gaussianElimination(rhs, k);

                    for (var i = 0, len = data.length; i < len; i++) {
                        var answer = 0;
                        for (var w = 0; w < equation.length; w++) {
                            answer += equation[w] * Math.pow(data[i][0], w);
                        }
                        results.push([data[i][0], answer]);
                    }

                    var string = 'y = ';

                    for(var i = equation.length-1; i >= 0; i--){
                      if(i > 1) string += Math.round(equation[i] * Math.pow(10, i)) / Math.pow(10, i)  + 'x^' + i + ' + ';
                      else if (i == 1) string += Math.round(equation[i]*100) / 100 + 'x' + ' + ';
                      else string += Math.round(equation[i]*100) / 100;
                    }

                return {equation: equation, points: results, string: string};
            },

            lastvalue: function(data) {
              var results = [];
              var lastvalue = null;
              for (var i = 0; i < data.length; i++) {
                if (data[i][1]) {
                  lastvalue = data[i][1];
                  results.push([data[i][0], data[i][1]]);
                }
                else {
                  results.push([data[i][0], lastvalue]);
                }
              }

              return {equation: [lastvalue], points: results, string: "" + lastvalue};
            }
        };

var regression = (function(method, data, order) {

       if (typeof method == 'string') {
           return methods[method](data, order);
       }
    });

if (typeof exports !== 'undefined') {
    module.exports = regression;
} else {
    window.regression = regression;
}

}());