<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Для показа карты необходимо установить ipyleaflet
Using pip
Step1:  Просуммируйте общее количество поездок такси из каждой географической зоны и посчитайте количество ячеек, из которых в мае не было совершено ни одной поездки.
Step2:  Поверх статической карты Нью-Йорка визуализируйте данные о поездках из каждой ячейки так, чтобы цветовая шкала, в которую вы окрашиваете каждую ячейку, показывала суммарное количество поездок такси из неё.
Step3:  Вставьте интерактивную карту Нью-Йорка — такую, которую можно прокручивать и увеличивать. Поставьте метку там, где находится статуя свободы.
Step4:  Нарисуйте на интерактивной карте Нью-Йорка ячейки так, чтобы их цвет показывал среднее за месяц количество поездок такси в час из этой зоны.
<ASSISTANT_TASK:>
Python Code:
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import timeit
import warnings
from itertools import product
warnings.filterwarnings("ignore")
pd.options.mode.chained_assignment = None  # default='warn'
from ipyleaflet import (
    Map,
    Marker,
    TileLayer, ImageOverlay,
    Polyline, Polygon, Rectangle, Circle, CircleMarker,
    GeoJSON,
    DrawControl
)
import matplotlib as mpl
import matplotlib.cm
import matplotlib.colors
import numpy as np
def n_colors(n, colormap=mpl.cm.Blues):
    data = np.linspace(0.0,1.0,n)
    c = [mpl.colors.rgb2hex(d[0:3]) for d in colormap(data)]
    return c
def data_to_colors(data, colormap=mpl.cm.Blues):
    c = [mpl.colors.rgb2hex(d[0:3]) for d in colormap(mpl.colors.Normalize()(data))]
    return c
#Функция возвращает код региона по координатам
#0- когда нет региона
def get_region(lon,lat):
    r=0
    r=regions.loc[(regions.west<lon)&
           (regions.east>lon)&
           (regions.south<lat)&
           (regions.north>lat)
           ,'region'].values
    if r.shape[0]==0:
        return 0
    return r[0]
# загружаем данные регионов
regions=pd.read_csv('g:/python_kurs/kurs6/taxi/regions.csv',sep=';')
regions.head(6)
# загружаем агрегированные данные за май 2016
data=pd.read_csv('g:/python_kurs/kurs6/taxi/data_05_2016.csv')
data.head(6)
Explanation: Для показа карты необходимо установить ipyleaflet
Using pip:
$ pip install ipyleaflet
$ jupyter nbextension enable --py --sys-prefix ipyleaflet
Using conda:
$ conda install -c conda-forge ipyleaflet
End of explanation
data_region=data.groupby(by=['region_pickup'],axis=0)[['vcount']].sum().reset_index()
print 'Количество ячеек, из которых в мае не было совершено ни одной поездки ',len(data_region[data_region.vcount==0])
data_region.head()
#Координаты Empire State Building
lat = 40.748445
lon = -73.985664
region = get_region(lon,lat)
print region
center = [lat, lon]
zoom = 20
mark = Marker(location=center)
#Нарисуйте статическую карту Нью-Йорка. Поставьте на карте точку там, где находится Эмпайр-Стейт-Билдинг.
m = Map(center=center, zoom=zoom)
m += mark
m.dragging=False
m.double_click_zoom=False
m.keyboard=False
m.tap=False
m.touch_zoom=False
m.zoom_control=False
m
Explanation: Просуммируйте общее количество поездок такси из каждой географической зоны и посчитайте количество ячеек, из которых в мае не было совершено ни одной поездки.
End of explanation
zoom = 10
m = Map(default_tiles=TileLayer(opacity=1.0), center=center, zoom=zoom)
m += mark
m.dragging=False
m.double_click_zoom=False
m.keyboard=False
m.tap=False
m.touch_zoom=False
m.zoom_control=False
colors1 = data_to_colors(data_region['vcount'])
%%time
dr=data_region['region_pickup']
dr=np.arange(1,2500,1)
for region, color in zip(dr, colors1):
    #print region,color
    r=regions.loc[regions.region==region]
    bounds = [(r.north.values[0],r.west.values[0]),
              (r.north.values[0],r.east.values[0]),
              (r.south.values[0],r.east.values[0]),
              (r.south.values[0],r.west.values[0])
          ]
    #print r,bounds
    pg = Polygon(locations=bounds, weight=3,
            color=color, opacity=0.8, fill_opacity=0.5,
            fill_color=color)
    m += pg
    
m
Explanation: Поверх статической карты Нью-Йорка визуализируйте данные о поездках из каждой ячейки так, чтобы цветовая шкала, в которую вы окрашиваете каждую ячейку, показывала суммарное количество поездок такси из неё.
End of explanation
#Координаты статуи свободы
lat = 40.689237
lon = -74.044521
region = get_region(lon,lat)
print region
center = [lat, lon]
zoom = 15
mark = Marker(location=center)
m = Map(default_tiles=TileLayer(opacity=1.0), center=center, zoom=zoom)
m
m += mark
Explanation: Вставьте интерактивную карту Нью-Йорка — такую, которую можно прокручивать и увеличивать. Поставьте метку там, где находится статуя свободы.
End of explanation
zoom = 10
m = Map(default_tiles=TileLayer(opacity=1.0), center=center, zoom=zoom)
m
m += mark
data_r_mean=data.groupby(by=['region_pickup'],axis=0)[['vcount']].mean().reset_index()
data_r_mean.head()
print data_r_mean[data_r_mean.region_pickup==1231]
data_rm=data_r_mean.loc[data_r_mean.vcount>=5]
print 'Кол-во ячеек,из которых в мае совершается в среднем больше или равно 5 поездок в час ', len(data_rm)
colors1 = data_to_colors(data_rm['vcount'])
%%time
dr=data_rm['region_pickup']
#dr=np.arange(1,2500,1)
for region, color in zip(dr, colors1):
    #print region,color
    r=regions.loc[regions.region==region]
    bounds = [(r.north.values[0],r.west.values[0]),
              (r.north.values[0],r.east.values[0]),
              (r.south.values[0],r.east.values[0]),
              (r.south.values[0],r.west.values[0])
          ]
    #print r,bounds
    pg = Polygon(locations=bounds, weight=3,
            color=color, opacity=0.8, fill_opacity=0.5,
            fill_color=color)
    
    m += pg
    
Explanation: Нарисуйте на интерактивной карте Нью-Йорка ячейки так, чтобы их цвет показывал среднее за месяц количество поездок такси в час из этой зоны.
End of explanation
<END_TASK>