Advertisement
korenizla

Untitled

Jul 29th, 2022
2,484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.14 KB | None | 0 0
  1. Задание 1. Импортируйте библиотеку pandas. Считайте данные из csv-файла в датафрейм и сохраните в переменную data. Путь к файлу:
  2.  
  3. /datasets/data.csv
  4.  
  5. # импортируйте библиотеку pandas
  6. import pandas as pd
  7. # прочитайте csv-файл
  8. data = pd.read_csv('/datasets/data.csv')
  9. Задание 2. Выведите первые 20 строчек датафрейма data на экран.
  10.  
  11. print(data.head(20))
  12. # ваш код здесь
  13. print(data.head(20))
  14.     children  days_employed  dob_years            education  education_id  \
  15. 0          1   -8437.673028         42               высшее             0  
  16. 1          1   -4024.803754         36              среднее             1  
  17. 2          0   -5623.422610         33              Среднее             1  
  18. 3          3   -4124.747207         32              среднее             1  
  19. 4          0  340266.072047         53              среднее             1  
  20. 5          0    -926.185831         27               высшее             0  
  21. 6          0   -2879.202052         43               высшее             0  
  22. 7          0    -152.779569         50              СРЕДНЕЕ             1  
  23. 8          2   -6929.865299         35               ВЫСШЕЕ             0  
  24. 9          0   -2188.756445         41              среднее             1  
  25. 10         2   -4171.483647         36               высшее             0  
  26. 11         0    -792.701887         40              среднее             1  
  27. 12         0            NaN         65              среднее             1  
  28. 13         0   -1846.641941         54  неоконченное высшее             2  
  29. 14         0   -1844.956182         56               высшее             0  
  30. 15         1    -972.364419         26              среднее             1  
  31. 16         0   -1719.934226         35              среднее             1  
  32. 17         0   -2369.999720         33               высшее             0  
  33. 18         0  400281.136913         53              среднее             1  
  34. 19         0  -10038.818549         48              СРЕДНЕЕ             1  
  35.  
  36.        family_status  family_status_id gender income_type  debt  \
  37. 0    женат / замужем                 0      F   сотрудник     0  
  38. 1    женат / замужем                 0      F   сотрудник     0  
  39. 2    женат / замужем                 0      M   сотрудник     0  
  40. 3    женат / замужем                 0      M   сотрудник     0  
  41. 4   гражданский брак                 1      F   пенсионер     0  
  42. 5   гражданский брак                 1      M   компаньон     0  
  43. 6    женат / замужем                 0      F   компаньон     0  
  44. 7    женат / замужем                 0      M   сотрудник     0  
  45. 8   гражданский брак                 1      F   сотрудник     0  
  46. 9    женат / замужем                 0      M   сотрудник     0  
  47. 10   женат / замужем                 0      M   компаньон     0  
  48. 11   женат / замужем                 0      F   сотрудник     0  
  49. 12  гражданский брак                 1      M   пенсионер     0  
  50. 13   женат / замужем                 0      F   сотрудник     0  
  51. 14  гражданский брак                 1      F   компаньон     1  
  52. 15   женат / замужем                 0      F   сотрудник     0  
  53. 16   женат / замужем                 0      F   сотрудник     0  
  54. 17  гражданский брак                 1      M   сотрудник     0  
  55. 18    вдовец / вдова                 2      F   пенсионер     0  
  56. 19         в разводе                 3      F   сотрудник     0  
  57.  
  58.      total_income                                 purpose  
  59. 0   253875.639453                           покупка жилья  
  60. 1   112080.014102                 приобретение автомобиля  
  61. 2   145885.952297                           покупка жилья  
  62. 3   267628.550329              дополнительное образование  
  63. 4   158616.077870                         сыграть свадьбу  
  64. 5   255763.565419                           покупка жилья  
  65. 6   240525.971920                       операции с жильем  
  66. 7   135823.934197                             образование  
  67. 8    95856.832424                   на проведение свадьбы  
  68. 9   144425.938277                 покупка жилья для семьи  
  69. 10  113943.491460                    покупка недвижимости  
  70. 11   77069.234271       покупка коммерческой недвижимости  
  71. 12            NaN                         сыграть свадьбу  
  72. 13  130458.228857                 приобретение автомобиля  
  73. 14  165127.911772              покупка жилой недвижимости  
  74. 15  116820.904450  строительство собственной недвижимости  
  75. 16  289202.704229                            недвижимость  
  76. 17   90410.586745              строительство недвижимости  
  77. 18   56823.777243      на покупку подержанного автомобиля  
  78. 19  242831.107982            на покупку своего автомобиля  
  79. Задание 3. Выведите основную информацию о датафрейме с помощью метода info().
  80.  
  81. # ваш код здесь
  82. data.info()
  83. <class 'pandas.core.frame.DataFrame'>
  84. RangeIndex: 21525 entries, 0 to 21524
  85. Data columns (total 12 columns):
  86.  #   Column            Non-Null Count  Dtype  
  87. ---  ------            --------------  -----  
  88.  0   children          21525 non-null  int64  
  89.  1   days_employed     19351 non-null  float64
  90.  2   dob_years         21525 non-null  int64  
  91.  3   education         21525 non-null  object
  92.  4   education_id      21525 non-null  int64  
  93.  5   family_status     21525 non-null  object
  94.  6   family_status_id  21525 non-null  int64  
  95.  7   gender            21525 non-null  object
  96.  8   income_type       21525 non-null  object
  97.  9   debt              21525 non-null  int64  
  98.  10  total_income      19351 non-null  float64
  99.  11  purpose           21525 non-null  object
  100. dtypes: float64(2), int64(5), object(5)
  101. memory usage: 2.0+ MB
  102. 2  Предобработка данных
  103. 2.1  Удаление пропусков
  104. Задание 4. Выведите количество пропущенных значений для каждого столбца. Используйте комбинацию двух методов.
  105.  
  106. data.isna().sum()
  107. ### Обнаружены пропуски в столбцах 'total_income', 'days_employed'
  108. # определим, сколько таких пропущенных значений
  109. data.isna().sum()
  110. children               0
  111. days_employed       2174
  112. dob_years              0
  113. education              0
  114. education_id           0
  115. family_status          0
  116. family_status_id       0
  117. gender                 0
  118. income_type            0
  119. debt                   0
  120. total_income        2174
  121. purpose                0
  122. dtype: int64
  123. Задание 5. В двух столбцах есть пропущенные значения. Один из них — days_employed. Пропуски в этом столбце вы обработаете на следующем этапе. Другой столбец с пропущенными значениями — total_income — хранит данные о доходах. На сумму дохода сильнее всего влияет тип занятости, поэтому заполнить пропуски в этом столбце нужно медианным значением по каждому типу из столбца income_type. Например, у человека с типом занятости сотрудник пропуск в столбце total_income должен быть заполнен медианным доходом среди всех записей с тем же типом.
  124.  
  125. data['total_income'] = data.groupby('income_type')['total_income'].transform(lambda x: x.fillna(x.median()))
  126.  # ваш код здесь
  127. 2.2  Обработка аномальных значений
  128. Задание 6. В данных могут встречаться артефакты (аномалии) — значения, которые не отражают действительность и появились по какой-то ошибке. Таким артефактом будет отрицательное количество дней трудового стажа в столбце days_employed. Для реальных данных это нормально. Обработайте значения в этом столбце: замените все отрицательные значения положительными с помощью метода abs().
  129.  
  130. data['days_employed'] = data['days_employed'].abs()
  131.  # ваш код здесь
  132. Задание 7. Для каждого типа занятости выведите медианное значение трудового стажа days_employed в днях.
  133.  
  134. table_4 = data.pivot_table(index='income_type', values= ['days_employed'], aggfunc='median')
  135. print(table_4)
  136.                  days_employed
  137. income_type                  
  138. безработный      366413.652744
  139. в декрете          3296.759962
  140. госслужащий        2689.368353
  141. компаньон          1547.382223
  142. пенсионер        365213.306266
  143. предприниматель     520.848083
  144. сотрудник          1574.202821
  145. студент             578.751554
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement