Advertisement
DrSartoriuss

Untitled

Oct 9th, 2024
197
0
29 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.30 KB | Software | 0 0
  1. ### fill the gaps below and send the script back
  2. import pandas as pd
  3. import numpy as np
  4.  
  5. d = {'url':'https://www.numbeo.com/quality-of-life/rankings_by_country.jsp',
  6.      'name': 'rankings_by_country',
  7.      'load_func': lambda URL: pd.read_html(URL)[1]}
  8.  
  9. df = d['load_func'](d['url'])
  10.  
  11. # заполняем пробелы: добавляем рейтинг
  12. df['Rank']=np.arange(len(df))[::1]+1
  13.  
  14. # охраняем скрипт в виде html
  15. df_html = df.to_html()
  16.  
  17. # выводим
  18. print(df)
  19. print(df_html)
  20.  
  21. ### find top 5 countries by Quality of Life Index, excluding Luxembourg, Denmark, Switzerland
  22. top_5_quality_of_life = df.loc[~df['Country'].isin(['Luxembourg', 'Denmark', 'Switzerland'])].Country.to_list()[:5]
  23. print(top_5_quality_of_life)
  24.  
  25. ### calculate average Quality of Life Index in Europe*
  26. # загружаем справочник по странам и континентам
  27. f = {'url':'https://www.artlebedev.ru/country-list/xml/',
  28.      'name': 'rankings_by_country',
  29.      'load_func': lambda URL: pd.read_xml(URL)}
  30.  
  31. # формируем список стран и континентов
  32. country_list = f['load_func'](f['url'])[['english','location']].rename(
  33.                     columns={'english':'Country','location':'Continent'})
  34.  
  35. # объединяем таблицы  
  36. df_full = pd.merge(
  37.           df, country_list, how='left')
  38.  
  39. # смотрим пропуски
  40. print(df_full.loc[df_full.Continent.isna()])
  41.  
  42. # обрабатываем пропуски
  43. df_full.loc[(df_full['Country'].isin(['Bosnia And Herzegovina', 'North Macedonia', 'Russia'])) &
  44.             (df_full['Continent'].isna()), 'Continent'] = 'Европа'
  45.  
  46. # calculate average Quality of Life Index in Europe*
  47. avg_quality_of_life_europe = df_full.loc[df_full['Continent'] == 'Европа']['Quality of Life Index'].mean()
  48. print(avg_quality_of_life_europe)
  49.  
  50. ### calculate average Quality of Life Index in Africa*
  51. avg_quality_of_life_africa = df_full.loc[df_full['Continent'] == 'Африка']['Quality of Life Index'].mean()
  52. print(avg_quality_of_life_africa)
  53.  
  54. ### try to split countries into segments using approach you prefer
  55.  
  56. ## cегментируем данные по суммарному индексу уровня жизни и
  57. ## добавляем новый категориальный признак: Quality of Life
  58.  
  59. # создаем список колонок
  60. list_columns = df.columns[2:]
  61. # создаем новую клонку: суммарный индекс
  62. df['Sum_idx']= df[list_columns].sum(axis=1)
  63.  
  64. # выводим статистики нового признака
  65. print(df.Sum_idx.describe())
  66.  
  67. # разбиваем данные на три сегмента по суммарному индексу
  68. df['Quality of Life'] = pd.cut(df['Sum_idx'], 3,
  69.                               labels=['low', 'average', 'high'])
  70.  
  71. # выводим таблицу, сортируя данные по новому признаку
  72. print(df.sort_values(by='Sum_idx', ascending=False))
  73.  
  74. # считаем средние значения суммарного признака по новым сегментам
  75. print(df.groupby('Quality of Life', observed=True)['Sum_idx'].mean())
  76.  
  77. # считаем количество стран по сегментам
  78. print(df['Quality of Life'].value_counts())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement