Я работаю с набором данных COMPAS и собираюсь создать два Pandas DataFrame с данными - один со смещением и один без, разделив набор на два. На данный момент у меня есть работа ниже, которая создаст один фрейм данных, но он будет переносить смещение, изначально найденное в COMPAS, потому что для «replace» должно быть установлено значение True, учитывая распределение по размерам между расами.
import os
import tempfile
import urllib
_DATA_ROOT = tempfile.mkdtemp(prefix='tfx-data')
_DATA_PATH = 'https://storage.googleapis.com/what-if-tool-resources/computefest2019/cox-violent-parsed_filt.csv'
_DATA_FILEPATH = os.path.join(_DATA_ROOT, 'compas-scores-two-years.csv')
urllib.request.urlretrieve(_DATA_PATH, _DATA_FILEPATH)
_COMPAS_DF = _COMPAS_DF[_COMPAS_DF['is_recid'] != -1]
_GROUPBY_DF = _COMPAS_DF.groupby('race')
_COMPAS_DF = _GROUPBY_DF.apply(lambda x: x.sample(5000, replace=True).reset_index(drop=True))
_COMPAS_DF['race'].value_counts()
Вывод этого кадра данных ниже, но смещение 'is_recid', которое является логическим значением рецидивизма ответчика, остается неизменным.
African-American 5000
Other 5000
Caucasian 5000
Asian 5000
Hispanic 5000
Native American 5000
Name: race, dtype: int64
Начальный кадр данных указан ниже:
is_recid Race Count is_recid
0 African-American 4338 24.79%
Caucasian 3308 18.91%
Hispanic 860 4.92%
Other 502 2.87%
Asian 45 0.26%
Native American 26 0.15%
1 African-American 5081 29.04%
Caucasian 2474 14.14%
Hispanic 495 2.83%
Other 323 1.85%
Native American 25 0.14%
Asian 19 0.11%
Total 17496 100.00%
Я надеюсь создать фрейм данных, подобный приведенному ниже, и второй фрейм данных с оставшимися значениями из исходного набора данных. Обратите внимание, что количество не обязательно должно быть точно таким, как указано в списке, но распределение между расой и is_recid сбалансировано.
is_recid Race Count is_recid
0 African-American 3000 29.85%
Caucasian 1500 14.93%
Hispanic 300 2.99%
Other 200 1.99%
Asian 10 0.10%
Native American 15 0.15%
1 African-American 3000 29.85%
Caucasian 1500 14.93%
Hispanic 300 2.99%
Other 200 1.99%
Native American 15 0.15%
Asian 10 0.10%
Total 10050 100.00%
Большое спасибо заранее!