Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. products = {}
  2. for i in range(len(dataframe1['Продукт'])):
  3. name = dataframe1['Продукт'][i]
  4. if name in products:
  5. products[name] += dataframe1['Выручка'][i]
  6. else:
  7. products[name] = dataframe1['Выручка'][i]
  8. data = {}
  9. data['Продукт'] = list(products.keys())
  10. result = pd.DataFrame(data)
  11. result['Выручка'] = list(products.values())
  12.  
  13. periods = {}
  14. for i in range(2018 * 12 + 7, 2019 * 12 + 6):
  15. periods[i] = {}
  16. for i in range(len(dataframe1['Продукт'])):
  17. date = dataframe1['Дата'][i]
  18. try:
  19. date_azure = int(date)
  20. base = datetime.datetime(1899,12,30)
  21. delta = datetime.timedelta(days=date_azure)
  22. date1 = base + delta
  23. except ValueError:
  24. date1 = dt.strptime(date, "%d.%m.%Y")
  25. m = date1.month
  26. y = date1.year
  27. name = dateframe1['Продукт'][i]
  28. income = dateframe1['Выручка'][i]
  29. month = y * 12 + m
  30. if name in periods[month]:
  31. periods[month][name] += income
  32. else:
  33. periods[month][name] = income
  34. xyz = []
  35. for name in products:
  36. mean = 0.0
  37. for month in periods:
  38. if name in periods[month]:
  39. mean += periods[month][name]
  40. mean /= len(periods)
  41. sigma = 0.0
  42. for month in periods:
  43. if name in periods[month]:
  44. sigma += (periods[month][name] - mean) ** 2
  45. else:
  46. sigma += mean ** 2
  47. sigma /= len(periods)
  48. sigma = sigma ** 0.5
  49.  
  50. var = 1.0 * sigma / mean
  51. if 100 * var <= 85:
  52. xyz.append('X')
  53. continue
  54. if 100 * var <= 100:
  55. xyz.append('Y')
  56. continue
  57. else:
  58. xyz.append('Z')
  59. continue
  60.  
  61. result['ABC'] = pd.Series(len(products), index=result.index)
  62. for i in range(len(products)):
  63. result['XYZ'][i] = xyz[i]
  64. result.sort_values(by=['Выручка'], ascending=False, inplace=True)
  65. sumOfIncomes = result['Выручка'].sum()
  66. result = result.reset_index(drop=True)
  67. accumulate = 0
  68. s = result['Выручка']
  69. for i in range(len(products)):
  70. accumulate += s[i]
  71. if (accumulate <= 0.7 * sumOfIncomes):
  72. result['ABC'][i] = 'A'
  73. elif (accumulate <= 0.9 * sumOfIncomes):
  74. result['ABC'][i] = 'B'
  75. else:
  76. result['ABC'][i] = 'C'
  77. result.drop('Выручка', axis=1, inplace=True)
  78. return [result]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement