Python функция для изменения интервалов данных? - PullRequest
0 голосов
/ 15 февраля 2020

Привет. Я пытаюсь настроить эти данные.

Я хочу изменить единицы измерения, чтобы каждая строка составляла 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...