pandas-redistrict

Redistricting of pandas dataframes


License
MIT
Install
pip install pandas-redistrict==0.0.3

Documentation

pandas-redistrict

Uses data on redistricting to apply redistricting to older datasets to represent the districts in their current state.

Supports merging and splitting of districts:

  • Merged districts are summed up under new identifier
  • Split districts are distributed by population-based ratio.

Data on redistricting is in data/ directory. Currently only available for German Kreise (containing reforms in NRW, Sachsen, Sachsen-Anhalt and Mecklenburg-Vorpommern).

Install like this:

pip install pandas-redistrict

Usage

>>> df  # Values indexed by German district identifiers
value1  value2
AGS
05354       4       5
05313       5       6
05334       6       7
15154       8       9
15159      10      11
15151      12      13
15082      13      14

>>> # Port old identifiers to new versions. Sum and distribute values on the way
>>> from redistrict import redistrict
>>> redistrict(df, 'de/kreise', drop=True, splits=True)
value1  value2
AGS
05334   15.00   18.00
15001    2.40    2.60
15082   35.44   38.81
15086    0.96    1.04
15091    4.20    4.55

When you want to preserve groups inside districts, you can use redistrict_grouped:

>>> # Specify district column (e.g. AGS)
>>> # Also specify groups to preserve, in this case year
>>> df
     AGS  year  value1  value2
0  05354  2008       4       5
1  05313  2008       5       6
2  05334  2011       6       7
3  15154  2005       8       9
4  15159  2005      10      11
5  15151  2005      12      13
6  15082  2013      13      14
>>> from redistrict import redistrict_grouped
    redistrict_grouped(df, 'de/kreise', ['year'],
                                    district_col='AGS',
                                    value_cols=['value1', 'value2'],
                                    drop=True)

     AGS  value1  value2  year
0  15001    2.40    2.60  2005
1  15082   22.44   24.81  2005
2  15086    0.96    1.04  2005
3  15091    4.20    4.55  2005
0  05334    9.00   11.00  2008
0  05334    6.00    7.00  2011
0  15082   13.00   14.00  2013