﻿{"id":582,"date":"2020-11-13T02:10:27","date_gmt":"2020-11-12T18:10:27","guid":{"rendered":"https:\/\/byy3.com\/?p=582"},"modified":"2021-01-09T10:10:07","modified_gmt":"2021-01-09T02:10:07","slug":"python%e5%88%a9%e7%94%a8geopandas%e5%ba%93%e5%92%8cpandas%e5%9c%a8anaconda%e7%9a%84jupter-notebook%e4%b8%8b%e7%94%9f%e6%88%90%e7%96%ab%e6%83%85%e6%bc%94%e5%8f%98%e5%9b%be","status":"publish","type":"post","link":"https:\/\/byy3.com\/?p=582","title":{"rendered":"python\u5229\u7528geopandas\u5e93\u548cpandas\u5728anaconda\u7684jupter notebook\u4e0b\u751f\u6210\u75ab\u60c5\u6f14\u53d8\u56fe"},"content":{"rendered":"<p>\u6570\u636e\u5f00\u6e90\u6765\u6e90\uff1a<a href=\"https:\/\/byy3.com\/go\/?url=https:\/\/github.com\/lvwuwei\/covid-france\" target=\"_blank\" rel=\"noopener noreferrer\" rel=\"nofollow\" >https:\/\/github.com\/lvwuwei\/covid-france<\/a><\/p>\n<p>\u6f14\u793a\u56fe <a href=\"https:\/\/byy3.com\/go\/?url=https:\/\/www.chinanews.ga\/4930.html\" target=\"_blank\" rel=\"noopener noreferrer\" rel=\"nofollow\" >https:\/\/www.chinanews.ga\/4930.html<\/a><\/p>\n<div class=\"single-excerpt\">\n<p>\u6cd5\u56fd\u65b0\u51a0\u75c5\u6bd2\u53d1\u5c55\u6f14\u53d8\u56fe \u4ece2020\u5e7403\u670818\u65e5\u81f32020\u5e7411\u67088\u65e5 \u8003\u9a8c\u4f60\u673a\u5668\u6027\u80fd\u7684\u65f6\u5019\u5230\u4e86\uff0c\u56e0\u4e3a\u672c\u56fe\u8d85\u8fc7100m \u8bf7\u8010\u5fc3\u7b49\u5f85\u52a0\u8f7d\u2026\u2026\u2026 &amp;\u2026<\/p>\n<\/div>\n<div class=\"entry-content\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-single_thumb size-single_thumb wp-post-image\" data-original=\"https:\/\/www.chinanews.ga\/wp-content\/uploads\/2020\/11\/covid-790x474.gif\" src=\"https:\/\/byy3.com\/wp-content\/themes\/MNews%20V2.4\/images\/post-loading.gif\" sizes=\"auto, (max-width: 790px) 100vw, 790px\" srcset=\"https:\/\/www.chinanews.ga\/wp-content\/uploads\/2020\/11\/covid-790x474.gif 790w, https:\/\/www.chinanews.ga\/wp-content\/uploads\/2020\/11\/covid-384x230.gif 384w, https:\/\/www.chinanews.ga\/wp-content\/uploads\/2020\/11\/covid-187x112.gif 187w, https:\/\/www.chinanews.ga\/wp-content\/uploads\/2020\/11\/covid-300x180.gif 300w\" width=\"790\" height=\"474\" title=\"python\u5229\u7528geopandas\u5e93\u548cpandas\u5728anaconda\u7684jupter notebook\u4e0b\u751f\u6210\u75ab\u60c5\u6f14\u53d8\u56fe\u63d2\u56fe\" alt=\"python\u5229\u7528geopandas\u5e93\u548cpandas\u5728anaconda\u7684jupter notebook\u4e0b\u751f\u6210\u75ab\u60c5\u6f14\u53d8\u56fe\u63d2\u56fe\" \/><\/div>\n<p><a class=\"js-navigation-open link-gray-dark\" title=\"demo-covid.ipynb\" href=\"https:\/\/byy3.com\/go\/?url=https:\/\/github.com\/lvwuwei\/covid-france\/blob\/master\/demo-covid.ipynb\" rel=\"nofollow\" >demo-covid.ipynb<\/a> \u5229\u7528\u8fd9\u4e2a\u751f\u6210\u6f14\u53d8\u56fe\uff1a\u76ee\u5f55\u4e0b\u9700\u8981\u65b0\u5efa\u4e00\u4e2aimg\u6587\u4ef6\u5939<\/p>\n<p>\u9700\u8981\u5bfc\u5165\u7684\u4f9d\u8d56\u5e93<\/p>\n<pre><span style=\"font-family: arial, helvetica, sans-serif;\"><span class=\"kn\">from<\/span> <span class=\"nn\">IPython.display<\/span> <span class=\"kn\">i<\/span><span class=\"kn\">mport<\/span> <span class=\"n\">HTML<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">requests<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">zipfile<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">io<\/span> <span class=\"kn\">from<\/span> <span class=\"nn\">datetime<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"n\">timedelta<\/span><span class=\"p\">,<\/span> <span class=\"n\">date<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">matplotlib<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">matplotlib.pyplot<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">plt<\/span> \r\n<span class=\"kn\">from<\/span> <span class=\"nn\">mpl_toolkits.axes_grid1<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">make_axes_locatable<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">pandas<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">pd<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">geopandas<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">gpd<\/span> \r\n<span class=\"kn\">import<\/span> <span class=\"nn\">contextily<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">ctx<\/span> \r\n<span class=\"kn\">from<\/span> <span class=\"nn\">PIL<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Image\r\n\r\n\u6e90\u4ee3\u7801\uff1a\r\n\r\n<\/span><\/span><\/pre>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h1>COVID-19 evolution in French departments<\/h1>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nVisualize evolution of the number of people hospitalized in French departments due to COVID-19 infection<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[1]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"o\">%<\/span><span class=\"n\">load_ext<\/span> <span class=\"n\">lab_black<\/span>\r\n<span class=\"o\">%<\/span><span class=\"n\">matplotlib<\/span> <span class=\"n\">inline<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[2]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"kn\">from<\/span> <span class=\"nn\">IPython.display<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">HTML<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">requests<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">zipfile<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">io<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">datetime<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">timedelta<\/span><span class=\"p\">,<\/span> <span class=\"n\">date<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">matplotlib<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">matplotlib.pyplot<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">plt<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">mpl_toolkits.axes_grid1<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">make_axes_locatable<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">pandas<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">pd<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">geopandas<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">gpd<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">contextily<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">ctx<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">PIL<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Image<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nCOVID data are open data from the French open data portal data.gouv.fr:\u00a0<a href=\"https:\/\/byy3.com\/go\/?url=https:\/\/www.data.gouv.fr\/fr\/datasets\/donnees-relatives-a-lepidemie-du-covid-19\/\" rel=\"nofollow\" >https:\/\/www.data.gouv.fr\/fr\/datasets\/donnees-relatives-a-lepidemie-du-covid-19\/<\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[3]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">url_dep<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"http:\/\/osm13.openstreetmap.fr\/~cquest\/openfla\/export\/departements-20140306-5m-shp.zip\"<\/span>\r\n<span class=\"n\">covid_url<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span>\r\n <span class=\"s2\">\"https:\/\/www.data.gouv.fr\/fr\/datasets\/r\/63352e38-d353-4b54-bfd1-f1b3ee1cabd7\"<\/span>\r\n<span class=\"p\">)<\/span>\r\n<span class=\"n\">filter_dep<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"971\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"972\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"973\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"974\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"976\"<\/span><span class=\"p\">]<\/span> <span class=\"c1\"># only metropolitan France<\/span>\r\n<span class=\"n\">figsize<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span> <span class=\"mi\">15<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">tile_zoom<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">7<\/span>\r\n<span class=\"n\">frame_duration<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">500<\/span> <span class=\"c1\"># in ms<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nLoad French departements data into a GeoPandas GeoSeries<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>More information on these geographical open data can be found here:\u00a0<a href=\"https:\/\/byy3.com\/go\/?url=https:\/\/www.data.gouv.fr\/fr\/datasets\/contours-des-departements-francais-issus-d-openstreetmap\/\" rel=\"nofollow\" >https:\/\/www.data.gouv.fr\/fr\/datasets\/contours-des-departements-francais-issus-d-openstreetmap\/<\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[4]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">local_path<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"tmp\/\"<\/span>\r\n<span class=\"n\">r<\/span> <span class=\"o\">=<\/span> <span class=\"n\">requests<\/span><span class=\"o\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">url_dep<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">z<\/span> <span class=\"o\">=<\/span> <span class=\"n\">zipfile<\/span><span class=\"o\">.<\/span><span class=\"n\">ZipFile<\/span><span class=\"p\">(<\/span><span class=\"n\">io<\/span><span class=\"o\">.<\/span><span class=\"n\">BytesIO<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"o\">.<\/span><span class=\"n\">content<\/span><span class=\"p\">))<\/span>\r\n<span class=\"n\">z<\/span><span class=\"o\">.<\/span><span class=\"n\">extractall<\/span><span class=\"p\">(<\/span><span class=\"n\">path<\/span><span class=\"o\">=<\/span><span class=\"n\">local_path<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">filenames<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n <span class=\"n\">y<\/span>\r\n <span class=\"k\">for<\/span> <span class=\"n\">y<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">sorted<\/span><span class=\"p\">(<\/span><span class=\"n\">z<\/span><span class=\"o\">.<\/span><span class=\"n\">namelist<\/span><span class=\"p\">())<\/span>\r\n <span class=\"k\">for<\/span> <span class=\"n\">ending<\/span> <span class=\"ow\">in<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"dbf\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"prj\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"shp\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"shx\"<\/span><span class=\"p\">]<\/span>\r\n <span class=\"k\">if<\/span> <span class=\"n\">y<\/span><span class=\"o\">.<\/span><span class=\"n\">endswith<\/span><span class=\"p\">(<\/span><span class=\"n\">ending<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">]<\/span>\r\n<span class=\"n\">dbf<\/span><span class=\"p\">,<\/span> <span class=\"n\">prj<\/span><span class=\"p\">,<\/span> <span class=\"n\">shp<\/span><span class=\"p\">,<\/span> <span class=\"n\">shx<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">filename<\/span> <span class=\"k\">for<\/span> <span class=\"n\">filename<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">filenames<\/span><span class=\"p\">]<\/span>\r\n<span class=\"n\">fr<\/span> <span class=\"o\">=<\/span> <span class=\"n\">gpd<\/span><span class=\"o\">.<\/span><span class=\"n\">read_file<\/span><span class=\"p\">(<\/span><span class=\"n\">local_path<\/span> <span class=\"o\">+<\/span> <span class=\"n\">shp<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># + encoding=\"utf-8\" if needed<\/span>\r\n<span class=\"n\">fr<\/span><span class=\"o\">.<\/span><span class=\"n\">crs<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"epsg:4326\"<\/span> <span class=\"c1\"># {'init': 'epsg:4326'}<\/span>\r\n<span class=\"n\">met<\/span> <span class=\"o\">=<\/span> <span class=\"n\">fr<\/span><span class=\"o\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"code_insee not in @filter_dep\"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">met<\/span><span class=\"o\">.<\/span><span class=\"n\">set_index<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"code_insee\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">inplace<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">met<\/span> <span class=\"o\">=<\/span> <span class=\"n\">met<\/span><span class=\"p\">[<\/span><span class=\"s2\">\"geometry\"<\/span><span class=\"p\">]<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nLoad the map tile with contextily<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[5]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">w<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">,<\/span> <span class=\"n\">n<\/span> <span class=\"o\">=<\/span> <span class=\"n\">met<\/span><span class=\"o\">.<\/span><span class=\"n\">total_bounds<\/span>\r\n<span class=\"n\">bck<\/span><span class=\"p\">,<\/span> <span class=\"n\">ext<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">bounds2img<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">,<\/span> <span class=\"n\">n<\/span><span class=\"p\">,<\/span> <span class=\"n\">zoom<\/span><span class=\"o\">=<\/span><span class=\"n\">tile_zoom<\/span><span class=\"p\">,<\/span> <span class=\"n\">ll<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">)<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nPlot function to save image at a given date (title)<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[6]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"k\">def<\/span> <span class=\"nf\">save_img<\/span><span class=\"p\">(<\/span><span class=\"n\">df<\/span><span class=\"p\">,<\/span> <span class=\"n\">title<\/span><span class=\"p\">,<\/span> <span class=\"n\">img_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">vmin<\/span><span class=\"p\">,<\/span> <span class=\"n\">vmax<\/span><span class=\"p\">):<\/span>\r\n <span class=\"n\">gdf<\/span> <span class=\"o\">=<\/span> <span class=\"n\">gpd<\/span><span class=\"o\">.<\/span><span class=\"n\">GeoDataFrame<\/span><span class=\"p\">(<\/span><span class=\"n\">df<\/span><span class=\"p\">,<\/span> <span class=\"n\">crs<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"s2\">\"init\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"epsg:4326\"<\/span><span class=\"p\">})<\/span>\r\n <span class=\"n\">gdf_3857<\/span> <span class=\"o\">=<\/span> <span class=\"n\">gdf<\/span><span class=\"o\">.<\/span><span class=\"n\">to_crs<\/span><span class=\"p\">(<\/span><span class=\"n\">epsg<\/span><span class=\"o\">=<\/span><span class=\"mi\">3857<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># web mercator<\/span>\r\n <span class=\"n\">f<\/span><span class=\"p\">,<\/span> <span class=\"n\">ax<\/span> <span class=\"o\">=<\/span> <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">subplots<\/span><span class=\"p\">(<\/span><span class=\"n\">figsize<\/span><span class=\"o\">=<\/span><span class=\"n\">figsize<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">ax<\/span><span class=\"o\">.<\/span><span class=\"n\">imshow<\/span><span class=\"p\">(<\/span>\r\n <span class=\"n\">bck<\/span><span class=\"p\">,<\/span> <span class=\"n\">extent<\/span><span class=\"o\">=<\/span><span class=\"n\">ext<\/span><span class=\"p\">,<\/span> <span class=\"n\">interpolation<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"sinc\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">aspect<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"equal\"<\/span>\r\n <span class=\"p\">)<\/span> <span class=\"c1\"># load background map<\/span>\r\n <span class=\"n\">divider<\/span> <span class=\"o\">=<\/span> <span class=\"n\">make_axes_locatable<\/span><span class=\"p\">(<\/span><span class=\"n\">ax<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">cax<\/span> <span class=\"o\">=<\/span> <span class=\"n\">divider<\/span><span class=\"o\">.<\/span><span class=\"n\">append_axes<\/span><span class=\"p\">(<\/span>\r\n <span class=\"s2\">\"right\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">size<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"5%\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">pad<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.1<\/span>\r\n <span class=\"p\">)<\/span> <span class=\"c1\"># GeoPandas trick to adjust the legend bar<\/span>\r\n <span class=\"n\">gdf_3857<\/span><span class=\"o\">.<\/span><span class=\"n\">plot<\/span><span class=\"p\">(<\/span>\r\n <span class=\"n\">column<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"hosp\"<\/span><span class=\"p\">,<\/span> <span class=\"c1\"># Number of people currently hospitalized<\/span>\r\n <span class=\"n\">ax<\/span><span class=\"o\">=<\/span><span class=\"n\">ax<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">cax<\/span><span class=\"o\">=<\/span><span class=\"n\">cax<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.75<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">edgecolor<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"k\"<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">legend<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">cmap<\/span><span class=\"o\">=<\/span><span class=\"n\">matplotlib<\/span><span class=\"o\">.<\/span><span class=\"n\">cm<\/span><span class=\"o\">.<\/span><span class=\"n\">get_cmap<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"magma_r\"<\/span><span class=\"p\">),<\/span>\r\n <span class=\"n\">vmin<\/span><span class=\"o\">=<\/span><span class=\"n\">vmin<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">vmax<\/span><span class=\"o\">=<\/span><span class=\"n\">vmax<\/span><span class=\"p\">,<\/span>\r\n <span class=\"p\">)<\/span>\r\n\r\n <span class=\"n\">ax<\/span><span class=\"o\">.<\/span><span class=\"n\">set_axis_off<\/span><span class=\"p\">()<\/span>\r\n <span class=\"n\">ax<\/span><span class=\"o\">.<\/span><span class=\"n\">get_xaxis<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><span class=\"n\">set_visible<\/span><span class=\"p\">(<\/span><span class=\"kc\">False<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">ax<\/span><span class=\"o\">.<\/span><span class=\"n\">get_yaxis<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><span class=\"n\">set_visible<\/span><span class=\"p\">(<\/span><span class=\"kc\">False<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">ax<\/span><span class=\"o\">.<\/span><span class=\"n\">set_title<\/span><span class=\"p\">(<\/span><span class=\"n\">title<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">25<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">savefig<\/span><span class=\"p\">(<\/span><span class=\"n\">img_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">bbox_inches<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"tight\"<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># pad_inches=-0.1 to remove border<\/span>\r\n <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">f<\/span><span class=\"p\">)<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nLoad COVID data into a pandas DataFrame<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[7]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">cov<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pd<\/span><span class=\"o\">.<\/span><span class=\"n\">read_csv<\/span><span class=\"p\">(<\/span><span class=\"n\">covid_url<\/span><span class=\"p\">,<\/span> <span class=\"n\">sep<\/span><span class=\"o\">=<\/span><span class=\"s2\">\";\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">index_col<\/span><span class=\"o\">=<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"n\">parse_dates<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">,)<\/span>\r\n<span class=\"n\">cov<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"sexe == 0\"<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># sum of male\/female<\/span>\r\n<span class=\"n\">cov<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"dep not in @filter_dep\"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">dropna<\/span><span class=\"p\">(<\/span><span class=\"n\">inplace<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">head<\/span><span class=\"p\">()<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"output_wrapper\">\n<div class=\"output\">\n<div class=\"output_area\">\n<div class=\"prompt output_prompt\">Out[7]:<\/div>\n<div class=\"output_html rendered_html output_subarea output_execute_result\">\n<div>\n<table class=\"dataframe\" border=\"1\">\n<thead>\n<tr>\n<th><\/th>\n<th>dep<\/th>\n<th>sexe<\/th>\n<th>hosp<\/th>\n<th>rea<\/th>\n<th>rad<\/th>\n<th>dc<\/th>\n<\/tr>\n<tr>\n<th>jour<\/th>\n<th><\/th>\n<th><\/th>\n<th><\/th>\n<th><\/th>\n<th><\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>2020-03-18<\/td>\n<td>01<\/td>\n<td>0<\/td>\n<td>2<\/td>\n<td>0<\/td>\n<td>1<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>2020-03-18<\/td>\n<td>02<\/td>\n<td>0<\/td>\n<td>41<\/td>\n<td>10<\/td>\n<td>18<\/td>\n<td>11<\/td>\n<\/tr>\n<tr>\n<td>2020-03-18<\/td>\n<td>03<\/td>\n<td>0<\/td>\n<td>4<\/td>\n<td>0<\/td>\n<td>1<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>2020-03-18<\/td>\n<td>04<\/td>\n<td>0<\/td>\n<td>3<\/td>\n<td>1<\/td>\n<td>2<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>2020-03-18<\/td>\n<td>05<\/td>\n<td>0<\/td>\n<td>8<\/td>\n<td>1<\/td>\n<td>9<\/td>\n<td>0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nAdd geometry data to COVID DataFrame<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[8]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">cov<\/span><span class=\"p\">[<\/span><span class=\"s2\">\"geometry\"<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cov<\/span><span class=\"p\">[<\/span><span class=\"s2\">\"dep\"<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">map<\/span><span class=\"p\">(<\/span><span class=\"n\">met<\/span><span class=\"p\">)<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nParse recorded days and save one image for each day<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[9]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"k\">def<\/span> <span class=\"nf\">daterange<\/span><span class=\"p\">(<\/span><span class=\"n\">date1<\/span><span class=\"p\">,<\/span> <span class=\"n\">date2<\/span><span class=\"p\">):<\/span>\r\n <span class=\"k\">for<\/span> <span class=\"n\">n<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"nb\">int<\/span><span class=\"p\">((<\/span><span class=\"n\">date2<\/span> <span class=\"o\">-<\/span> <span class=\"n\">date1<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">days<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">):<\/span>\r\n <span class=\"k\">yield<\/span> <span class=\"n\">date1<\/span> <span class=\"o\">+<\/span> <span class=\"n\">timedelta<\/span><span class=\"p\">(<\/span><span class=\"n\">n<\/span><span class=\"p\">)<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>Create the folder img at the root of the notebook<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[10]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">vmax<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">hosp<\/span><span class=\"o\">.<\/span><span class=\"n\">max<\/span><span class=\"p\">()<\/span>\r\n<span class=\"k\">for<\/span> <span class=\"n\">i<\/span><span class=\"p\">,<\/span> <span class=\"n\">dt<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">enumerate<\/span><span class=\"p\">(<\/span><span class=\"n\">daterange<\/span><span class=\"p\">(<\/span><span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">index<\/span><span class=\"o\">.<\/span><span class=\"n\">min<\/span><span class=\"p\">(),<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">index<\/span><span class=\"o\">.<\/span><span class=\"n\">max<\/span><span class=\"p\">())):<\/span>\r\n <span class=\"n\">title<\/span> <span class=\"o\">=<\/span> <span class=\"n\">dt<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"<\/span><span class=\"si\">%d<\/span><span class=\"s2\">-%b-%Y\"<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">df<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">query<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"jour == @dt\"<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">df<\/span> <span class=\"o\">=<\/span> <span class=\"n\">df<\/span><span class=\"o\">.<\/span><span class=\"n\">drop_duplicates<\/span><span class=\"p\">(<\/span><span class=\"n\">subset<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s2\">\"dep\"<\/span><span class=\"p\">],<\/span> <span class=\"n\">keep<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"first\"<\/span><span class=\"p\">)<\/span>\r\n <span class=\"n\">img_name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"img\/\"<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"s2\">\".png\"<\/span>\r\n <span class=\"n\">save_img<\/span><span class=\"p\">(<\/span><span class=\"n\">df<\/span><span class=\"p\">,<\/span> <span class=\"n\">title<\/span><span class=\"p\">,<\/span> <span class=\"n\">img_name<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">vmax<\/span><span class=\"p\">)<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"prompt input_prompt\"><\/div>\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h4>\nCompile images in animated gif<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In\u00a0[11]:<\/div>\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"n\">frames<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\r\n<span class=\"k\">for<\/span> <span class=\"n\">i<\/span><span class=\"p\">,<\/span> <span class=\"n\">dt<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">enumerate<\/span><span class=\"p\">(<\/span><span class=\"n\">daterange<\/span><span class=\"p\">(<\/span><span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">index<\/span><span class=\"o\">.<\/span><span class=\"n\">min<\/span><span class=\"p\">(),<\/span> <span class=\"n\">cov<\/span><span class=\"o\">.<\/span><span class=\"n\">index<\/span><span class=\"o\">.<\/span><span class=\"n\">max<\/span><span class=\"p\">())):<\/span>\r\n <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"img\/\"<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"s2\">\".png\"<\/span>\r\n <span class=\"n\">frames<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">Image<\/span><span class=\"o\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">))<\/span>\r\n\r\n<span class=\"n\">frames<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">save<\/span><span class=\"p\">(<\/span>\r\n <span class=\"s2\">\"covid.gif\"<\/span><span class=\"p\">,<\/span>\r\n <span class=\"nb\">format<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"GIF\"<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">append_images<\/span><span class=\"o\">=<\/span><span class=\"n\">frames<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">:],<\/span>\r\n <span class=\"n\">save_all<\/span><span class=\"o\">=<\/span><span class=\"kc\">True<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">duration<\/span><span class=\"o\">=<\/span><span class=\"n\">frame_duration<\/span><span class=\"p\">,<\/span>\r\n <span class=\"n\">loop<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">)<\/span>\r\n\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">IPython.display<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">HTML<\/span>\r\n\r\n<span class=\"n\">HTML<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"&lt;img src='covid.gif'&gt;\"<\/span><span class=\"p\">)<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre>\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6570\u636e\u5f00\u6e90\u6765\u6e90\uff1ahttps:\/\/github.com\/lvwuwei\/covid-france \u6f14\u793a\u56fe http [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[58,57,33,352],"class_list":["post-582","post","type-post","status-publish","format-standard","hentry","category-python","tag-anaconda","tag-jupter-notebook","tag-python"],"_links":{"self":[{"href":"https:\/\/byy3.com\/index.php?rest_route=\/wp\/v2\/posts\/582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byy3.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byy3.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byy3.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/byy3.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=582"}],"version-history":[{"count":0,"href":"https:\/\/byy3.com\/index.php?rest_route=\/wp\/v2\/posts\/582\/revisions"}],"wp:attachment":[{"href":"https:\/\/byy3.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byy3.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byy3.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}