Re: Untitled

From Fiery Macaw, 4 Months ago, written in Python, viewed 76 times. This paste is a reply to Untitled from Alexandra Hoffmann - view diff
URL http://codebin.org/view/79aee22f Embed
Download Paste or View Raw
  1. В столбцах living_area и kitchen_area мы видим 1903 и 2278 пропущенных значений. Эти пропуски составляют относительно большой процент от всех значений — 8% и 9% соответственно, поэтому избавиться от них мы не можем. Данные в этих столбцах понадобятся нам в дальнейшем исследовании, поэтому будет правильным обработать пропуски, заменив их на такие значения, которые будут максимально приближены к реальности.
  2.  
  3. # создадим функцию categorize_area, которая разделит продаваемую недвижимость на категории в зависимости от их площади
  4. def categorize_area(area):
  5.     '''
  6.    Возвращает категорию по величине площади недвижимости, используя правила:
  7.    — 'маленькая', если площадь меньше или равна 30 м²
  8.    — 'средняя', если площадь больше 30 м² и ниже или равна 70 м²
  9.    — 'большая', если площадь больше 70 ²2 и ниже или равна 150 м²
  10.    — 'очень большая', если площадь больше 150 м2
  11.    '''
  12.     try:
  13.         if 0 < area <= 30:
  14.             return 'маленькая'
  15.         elif 30 < area <= 70:
  16.             return 'средняя'
  17.         elif 70 < area <= 150:
  18.             return 'большая'
  19.         elif area > 150:
  20.             return 'очень большая'
  21.     except:
  22.         pass
  23. # применим созданную функцию к датафрейму, создав столбец с категориями недвижимости по площади
  24. real_estate_data['total_area_category'] = real_estate_data['total_area'].apply(categorize_area)
  25.  
  26. # создадим ещё одну функцию fillna_area
  27. # которая в качестве аргумента будет принимать столбец, в котором нужно заменить пропуски и датафрейм
  28. def fillna_area(col, data):
  29.     # найдём среднее значение площади недвижимости по каждой категории
  30.     mean_area = data.groupby('total_area_category')['total_area'].mean()
  31.     # для каждой категории в столбце total_area_category
  32.     for category in data['total_area_category'].unique():
  33.         mean_val = mean_area[category]
  34.         # с помощью логической индексации функция найдёт те строки в столбце col
  35.         # в которых есть пропущенное значение, а значение столбца total_area_category равно category
  36.         # и присвоит строке среднее значение её category
  37.         data.loc[(data[col].isna()) & (data['total_area_category'] == category), col] = mean_val
  38.     return data
  39.  
  40. # применим созданную функцию fillna_area к столбцам living_area и kitchen_area    
  41. real_estate_data = fillna_area('living_area', real_estate_data)
  42. real_estate_data = fillna_area('kitchen_area', real_estate_data)

Reply to "Re: Untitled"

Here you can reply to the paste above