RMarK0

ML задание 2

May 18th, 2021
544
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pandas as pd
  2. import numpy as np
  3.  
  4. dataset_array = pd.read_csv(
  5.     'C:\python hz\dataset.csv',
  6.     delimiter=':',
  7.     names=['NameOfUser', 'Q1', 'Q2',
  8.            'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q8',
  9.            'Q9', 'Q10']
  10. )
  11. # ----------------------------------------------------------------------------------------------
  12. # ВОССТАНОВЛЕНИЕ ДАННЫХ
  13.  
  14. nameList = ['']
  15. for i in range(len(dataset_array)):
  16.     if dataset_array['NameOfUser'][i] not in nameList:
  17.         nameList.append(dataset_array['NameOfUser'][i])
  18.         dataset_array['NameOfUser'][i] = (len(nameList))
  19.     else:
  20.         for j in range(len(nameList)):
  21.             if nameList[j] == dataset_array['NameOfUser'][i]:
  22.                 dataset_array['NameOfUser'][i] = j
  23.                 break
  24. dataset_array = dataset_array.sort_values('NameOfUser')
  25. for i in range(len(dataset_array)):
  26.     dataset_array['NameOfUser'][i] = 'User' + str(dataset_array['NameOfUser'][i])
  27. # ----------------------------------------------------------------------------------------------
  28. # НОРМАЛИЗАЦИЯ ДАННЫХ
  29.  
  30. for j in range(1, 11):
  31.     for i in range(len(dataset_array)):
  32.         if int(dataset_array['Q' + str(j)][i]) > 10:
  33.             dataset_array['Q' + str(j)][i] = 10
  34.         elif int(dataset_array['Q' + str(j)][i]) < 1:
  35.             dataset_array['Q' + str(j)][i] = 1
  36. # ----------------------------------------------------------------------------------------------
  37. # ОЧИСТКА ОТ ГРЯЗНЫХ ДАННЫХ
  38.  
  39. z = 0
  40. for i in range(len(dataset_array)):
  41.     # УДАЛЕНИЕ СТРОК СО ВСЕМИ ОДИНАКОВЫМИ СТОЛБЦАМИ
  42.     for j in range(1, 11):
  43.         if int(dataset_array['Q' + str(j)][i]) == int(dataset_array['Q1'][i]):
  44.             continue
  45.         else:
  46.             z = 1
  47.             break
  48.     if z == 0:
  49.         dataset_array = dataset_array.drop(index=i)
  50.     z = 0
  51. dataset_array = dataset_array.reset_index(drop=True)
  52. # ----------------------------------------------------------------------------------------------
  53. # УДАЛЕНИЕ ДУБЛИРУЮЩИХСЯ СТРОК
  54.  
  55. stringList = ['']*len(dataset_array)
  56. for i in range(len(dataset_array)):
  57.     thisString = ''
  58.     for j in range(1, 11):
  59.         thisString += str(dataset_array['Q' + str(j)][i])
  60.     if thisString not in stringList:
  61.         stringList[i] = thisString
  62.     else:
  63.         dataset_array = dataset_array.drop(index=i)
  64.     thisString = ''
  65. dataset_array = dataset_array.reset_index(drop=True)
  66. # ----------------------------------------------------------------------------------------------
  67.  
  68. numberList = [i for i in range(len(dataset_array))]
  69. dataset_array = pd.DataFrame(data=dataset_array, index=numberList)
  70.  
  71. for i in range(1, 11):
  72.     array = np.array(dataset_array['Q' + str(i)])
  73.     arrayMax = max(array)
  74.     arrayMin = min(array)
  75.     for j in range(len(array)):
  76.         value = str(((array[j]) - arrayMin) / float(arrayMax - arrayMin))
  77.         dataset_array['Q' + str(i)][j] = value[0:8]  # 8 ЗНАКОВ ПОСЛЕ ЗАПЯТОЙ
  78.  
  79. print(dataset_array)
  80. dataset_array.to_csv('C:\python hz\dataset2.csv', index=False)
RAW Paste Data