Привет. Я пытаюсь настроить эти данные.
Я хочу изменить единицы измерения, чтобы каждая строка составляла 1/20 от общего количества единиц, но не теряла данные о доходах.
Я пытался написать скрипт для этого, но мне интересно, существует ли уже функция для этого? (и превосходно)
Мой текущий (не работающий) подход состоит в том, чтобы взять каждую строку, посмотреть, была ли она больше или меньше интервала, и рассчитать ее соответствующим образом, то есть, если бы она была больше, я бы отрезать интервал и перенести остаток. Если бы строка была меньше интервала, я бы взял эту сумму и добавил следующую строку, чтобы достичь интервала.
Units Tax Takeout
144693.7712 492.2503455 11.62073572
8058.453532 136.4792621 1.769210287
29369.6346 1470.954111 7.127549592
72369.65961 111.7228064 1.062372051
44680.14481 2321.976039 31.95754066
206028.25 2001.571213 151.7837027
44615.26767 212.427397 46.79622821
25856.03876 2227.760062 159.524744
125782.388 4434.899884 77.92670611
128053.1653 3965.773329 66.27811358
35671.85046 2962.793111 121.0766164
34495.66168 5905.639263 453.6035509
101638.1694 6583.829362 8.697532679
31715.63336 552.2715512 179.926234
5409.479522 1930.790274 9.729308198
317.3973879 1572.243968 241.876709
16018.45372 1941.652712 247.6860193
56118.51695 9426.151993 1849.540514
13536.93836 2862.274079 73.98198612
4193.408165 2798.832317 813.3974035
467.4593185 2853.81225 116.412341
1129089.742 56766.10533 4671.775118
tax_data = pd.read_csv('tax.csv')
taxpayer_units = tax_data['Units'].sum()
total_tax = tax_data['Tax'].sum()
x_axis = taxpayer_units / 20 #calculate interval
df_dict = tax_data.to_dict('records')
j = 0
tax_per_unit = []
for i in df_dict:
value_added = (df_dict[j]['Tax'])/(df_dict[j]['Units'])
tax_per_unit.append(value_added)
j = j + 1
running_total = []
a = 0
k = 0
while k < 20:
print(running_total)
# calculate units divided by the interval
change_var = ((remainder + (df_dict[a]['Units'])) // (x_axis))
if change_var >= 1: # check if more than one interval in unit (k)
total = remainder + (df_dict[a]['Units'])
total2 = total
while change_var > 0: # slice off each interval, and cal tax per interval
k = k + 1
total = total - x_axis
tax_of_k = remainder_tax + ((x_axis - remainder) * (tax_per_unit[a]))
running_total.append(tax_of_k)
remainder = 0
remainder_tax = 0
change_var = change_var - 1
remainder = (total2 % (x_axis))
remainder_tax = remainder * (tax_per_unit[a])
a = a + 1
elif change_var < 1: # if unit is less than one interval, add next unit
while change_var < 1:
total_one = remainder + (df_dict[a]['Units'])
a = a + 1
total_one = total_one + (df_dict[a]['Units'])
change_var = total_one
remainder_tax = remainder * (tax_per_unit[a])
remainder = (remainder + (df_dict[a]['Units'])) % x_axis
tax_of_k = remainder_tax + ((((df_dict[a]['Units']) - remainder) * (tax_per_unit[a])) )
running_total.append(tax_of_k)
change_var = ((remainder + (df_dict[a]['Units'])) // (x_axis))
else:
print(change_var)
print(running_total)
total_running = sum(running_total)
print(total_running)
return