data.loc

From Chocolate Cat, 2 Months ago, written in Plain Text, viewed 65 times. This paste is a reply to data.loc from Social Motmot - view diff
URL http://codebin.org/view/3f0a954e Embed
Download Paste or View Raw
  1. #Посмотрим, есть ли случаи, когда refundable_support или nonrefundable_support не нулевые, а budget=0
  2. err_budget = data.query('(budget < refundable_support) or (budget < nonrefundable_support)')
  3. len(err_budget)
  4.  
  5. #Т.к. бюджет не м.б. = 0, если поддержка не равна 0, то можно попробовать заполнить значения в #столбце "бюджет" (где бюджет =0, а одна из поддержек не равно 0) по формуле:
  6. #"(возврат.поддержка + невозврат.поддержка) / на медианное значение доли поддержки в бюджете".  
  7.  
  8. import numpy as np
  9.  
  10. budget_less_5mln = data.query('budget < 5000000')
  11. len(budget_less_5mln)
  12.  
  13. #Есть 17 строк где бюджет сильно меньше гос.поддержки и доля гос.поддержки в бюджете будет там слишком большая. Поэтому рассчитаем медиану доли гос.подержки без этих значений
  14.  
  15. budget_more_5mln = data.query('budget > 5000000')
  16. len(budget_more_5mln)
  17.  
  18. dolyaya = (((budget_more_5mln['refundable_support'] + budget_more_5mln['nonrefundable_support']) / budget_more_5mln['budget']) * 100).apply(np.ceil)
  19.  
  20. med = dolyaya.median()
  21. med
  22.  
  23. data.loc[(data['budget'] < data['refundable_support']) | (data['budget'] < data['nonrefundable_support']), 'budget'] = (data['refundable_support'] + data['nonrefundable_support']) / med
  24.  
  25. #И заменим в этих 17 строках значение бюджета (где budget < 5000000) так же по формуле "(возврат.поддержка + невозврат.поддержка) * на медианное значение доли поддержки в бюджете"
  26.  
  27. data.loc[(data['budget'] < 5000000) & (data['budget'].notna()), 'budget'] = (data['refundable_support'] + data['nonrefundable_support']) / med

Reply to "data.loc"

Here you can reply to the paste above