Sequential proportional approval voting

Sequential proportional approval voting (SPAV) or reweighted approval voting (RAV) is an electoral system that extends the concept of approval voting to a multiple winner election. Proposed by Danish statistician Thorvald N. Thiele in the early 1900s, it was used (with adaptations for party lists) in Sweden for a short period after 1909. If Score voting ballots are used then it is equivalent to Reweighted Score Voting.

Description
This system converts AV into a multi-round rule, selecting a candidate in each round and then re-weighing the approvals for the subsequent rounds. The first candidate elected is the AV winner (w1). The value of all ballots that approve of w1 are reduced in value from 1 to 1/2 and the approval scores recalculated. Next, the unelected candidate who has the highest approval score is elected (w2). Then the value of ballots that approve of both w1 and w2 are reduced in value to 1/3, and the value of all ballots that approve of either w1 or w2 but not both are reduced in value to 1/2.

At each stage, the unelected candidate with the highest approval score is elected. Then the value of each voter’s ballot is set at $$\frac{1}{(m+1)}$$ where m is the number of candidates approved on that ballot who were already elected, until the required number of candidates is elected.

The system disadvantages minority groups who share some preferences with the majority. In terms of tactical voting, it is therefore desirable to free ride by withholding approval from candidates who are likely to be elected in any case. With the standard Jefferson method based reweighing it favours large factions in an attempt to mitigate vote management. On the other hand Sainte-Laguë method based reweighting is more fair to smaller factions.

It is however a much computationally simpler algorithm than (and can be considered a sequential form of) proportional approval voting, permitting votes to be counted either by hand or by computer, rather than requiring a computer to determine the outcome of all but the simplest elections.

Example Code
Red      6.0 Green    4.0 Yellow   3.0 Blue     8.0 dtype: float64 ['Blue'] Red      3.5 Green    2.0 Yellow   2.0 Blue     4.0 dtype: float64 ['Blue', 'Red'] Red      2.166667 Green    1.833333 Yellow   1.166667 Blue     3.166667 dtype: float64 ['Blue', 'Red', 'Green'] Red      2.083333 Green    1.250000 Yellow   1.166667 Blue     2.583333 dtype: float64 ['Blue', 'Red', 'Green', 'Yellow']