You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.6 KiB

5 years ago
  1. import xlrd
  2. import pandas as pd
  3. # df = pd.read_ex
  4. file_path = 'magic_formula_data.xlsx'
  5. wd = xlrd.open_workbook(file_path)
  6. pbr_sh = wd.sheet_by_name('PBR')
  7. #'pbr' 순위 구하기. 양수 값의 데이터만 필요 & pbr값 작을수록 좋음
  8. pbr_dict = {}
  9. for i in range(1, pbr_sh.nrows):
  10. data = pbr_sh.row_values(i)
  11. name = data[0]
  12. pbr = data[1]
  13. if pbr > 0:
  14. pbr_dict[name] = pbr
  15. import operator
  16. sorted_pbr = sorted(pbr_dict.items(),key=operator.itemgetter(1))
  17. #pbr 순위 지정
  18. pbr_rank = {}
  19. for num, firm in enumerate(sorted_pbr):
  20. pbr_rank[firm[0]] = num + 1
  21. #GP_A 순위 구하기. 값이 존재하는 데이터만 필요 & GP_A 값 클 수록 좋음
  22. gp_a_sh = wd.sheet_by_name('GP_A')
  23. gp_a_dict = {}
  24. for j in range(1, gp_a_sh.nrows):
  25. data = gp_a_sh.row_values(j)
  26. name = data[0]
  27. gp_a = data[1]
  28. if gp_a != 0:
  29. gp_a_dict[name] = gp_a
  30. sorted_gp_a = sorted(gp_a_dict.items(), key=operator.itemgetter(1), reverse=True)
  31. gp_a_rank = {}
  32. for num, firm in enumerate(sorted_gp_a):
  33. gp_a_rank[firm[0]] = num + 1
  34. total_rank = {}
  35. for name in gp_a_rank.keys():
  36. if name in pbr_rank.keys():
  37. total_rank[name] = pbr_rank[name] + gp_a_rank[name]
  38. #total_rank의 value 값을 기준키로 하여 total_rank를 오르차순으로 저장. value값이 작은 순서대로 정렬
  39. sorted_total = sorted(total_rank.items(), key=operator.itemgetter(1))
  40. magic_rank = {}
  41. for num, firm in enumerate(sorted_total):
  42. magic_rank[firm[0]] = num +1
  43. sorted_magic = sorted(magic_rank.items(), key=operator.itemgetter(1))
  44. print(sorted_magic[:20])
  45. df = pd.DataFrame.from_records(sorted_magic[:20])
  46. df.to_excel('magic.xlsx')