{"id":267942,"date":"2018-07-08T10:00:38","date_gmt":"2018-07-08T17:00:38","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=267942"},"modified":"2018-07-08T10:26:29","modified_gmt":"2018-07-08T17:26:29","slug":"a-year-in-the-life","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life","title":{"rendered":"The Year of the ArcGIS API for Python"},"author":5891,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23341,37101,23851],"tags":[43161,164102],"industry":[],"product":[36841,36571,36551],"class_list":["post-267942","blog","type-blog","status-publish","format-standard","hentry","category-analytics","category-announcements","category-data-management","tag-developer","tag-jupyter-notebook","product-api-python","product-arcgis-enterprise","product-arcgis-online"],"acf":{"short_description":"The ArcGIS API for Python 1.2 arrived in July 2017 with game-changing new modules, followed by a year of fixes, enhancements, and more additions.","flexible_content":[{"acf_fc_layout":"content","content":"<p>Introduced in December 2016, by July 2017 the ArcGIS API for Python team powered its way to the release of a second major version, version 1.2.\u00a0 Version 1.2 of the API changed your life in the areas of administration, visualization and analysis:<\/p>\n<h3>Administration<\/h3>\n<p style=\"padding-left: 60px;\">On top of the\u00a0already great time-saving automation capabilities in the API, additional changes to the code base increased your abilities to administer your Web GIS through managing credits and building an entire distributed GIS by creating gis <a href=\"http:\/\/enterprise.arcgis.com\/en\/portal\/latest\/administer\/windows\/about-distributed-collaboration.htm\">collaborations.<\/a>\u00a0 Two new modules provided a whole new set of capabilities for portal administrators. The <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.gis.admin.html\">arcgis.gis.admin<\/a>\u00a0module let you modify the\u00a0portal interface, providing a new user experience of the portal website. The\u00a0<a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.gis.server.html\">arcgis.gis.server<\/a>\u00a0module brought the capability to manage and automate any federated server to the table. The Feature Layer object eased management burden through overwriting functions and better support for attachments.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":271152,"id":271152,"title":"owrite_layers","filename":"owrite_layers.png","filesize":45970,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\/owrite_layers","alt":"","author":"5891","description":"","caption":"","name":"owrite_layers","status":"inherit","uploaded_to":267942,"date":"2018-07-06 21:33:12","modified":"2018-07-06 21:33:12","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":904,"height":274,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","thumbnail-width":213,"thumbnail-height":65,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","medium-width":464,"medium-height":141,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","medium_large-width":768,"medium_large-height":233,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","large-width":904,"large-height":274,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","1536x1536-width":904,"1536x1536-height":274,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","2048x2048-width":904,"2048x2048-height":274,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","card_image-width":826,"card_image-height":250,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/owrite_layers.png","wide_image-width":904,"wide_image-height":274}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Visualization and Analysis<\/h3>\n<p>All the data wrangling, time-series management, and merging power of the Pandas dataframe\u00a0was available through querying a Feature Layer, but 1.2 introduced the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.features.toc.html#spatialdataframe\">Spatial Dataframe<\/a>\u00a0class in the features module which allowed all that functionality to now be used with geometries. Direct instantiation of this lightning-fast processing structure from feature classes, cloud files and feature layers became reality, and in addtion to the complex data analysis and manipulations inherently suited to the dataframe, the plotting capability provided a way for Python enthusiasts to quickly map dataframes\u00a0in the entirely familiar format of the matplotlib library.<\/p>\n<p>The combination of ArcGIS geometry structures with Pandas dataframe processing now makes the Spatial Dataframe the perfect structure for integrating ArcGIS with the countless plotting, machine learning, and data science libraries of the whole Python data science ecosystem.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":270932,"id":270932,"title":"sdfplot_blog","filename":"sdfplot_blog.png","filesize":52903,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\/sdfplot_blog","alt":"","author":"5891","description":"","caption":"","name":"sdfplot_blog","status":"inherit","uploaded_to":267942,"date":"2018-07-06 21:01:38","modified":"2018-07-06 21:01:38","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1071,"height":685,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","thumbnail-width":213,"thumbnail-height":136,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","medium-width":408,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","medium_large-width":768,"medium_large-height":491,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","large-width":1071,"large-height":685,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","1536x1536-width":1071,"1536x1536-height":685,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","2048x2048-width":1071,"2048x2048-height":685,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","card_image-width":727,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/sdfplot_blog.png","wide_image-width":1071,"wide_image-height":685}},"image_position":"left-center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Versions 1.2.1 through 1.2.5<\/h3>\n<p>The following 6 months were dedicated to fine-tuning the powerful modular base of the API by cleaning up issues, fixing bugs, and bringing to its knees that most dreaded, despised and oft-ditched\u00a0software development task: Documentation. The team saw the room for improvement as too large a room in the house, so dedicated resources dug in to improve the overall set of instructions for using the API to get things done!\u00a0 Guides got published. <a href=\"https:\/\/developers.arcgis.com\/python\/guide\/\">Samples<\/a> got uploaded. New and improved function signatures to administer servers, customize portal banners, automate group creation in Enterprise and ArcGIS Online, and support the Living Atlas were just the beginning.\u00a0 Fixes to output locations and folder searches and error messages all inked and added to the right places to make the API better and more accessible.\u00a0 The <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/\">API Reference Documentation<\/a>\u00a0got made over, too, as additions like return results as\u00a0<em>FeatureSet<\/em>\u00a0objects from geocoding results were added to the record.<\/p>\n<p>It wasn&#8217;t all just fixes, because some support for previously unavailable operations like publishing hosted tile layers from features layers and updating Items from text sources and URLs made their debut in the API.\u00a0 These bug fixes, doc updates, and function additions added in releases 1.2.1 through 1.2.5 were all laying the groundwork for the next major release.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3>Version 1.3&#8230;Version 1.3! What to say about version 1.3?!?!<\/h3>\n<p><a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.gis.toc.html#arcgis.gis.ContentManager.clone_items\">Clone_items()<\/a>&#8230;that&#8217;s what! One of the more challenging aspects\u00a0of\u00a0managing a Web GIS can be\u00a0making exact copies of\u00a0the myriad of different items\u00a0contained within it. Many had the need to maintain\u00a0a QA portal for testing and development and\u00a0a straightforward way to\u00a0move the content\u00a0into a production portal. Clone_items() is a culmination of earlier scripts\u00a0that\u00a0copied content between portals wrapped up neatly into one function, simplifying fundamental tasks\u00a0necessary for mainting\u00a0multiple portals, whether\u00a0ArcGIS\u00a0Online\u00a0Organizations or on-premise Enterprises.<\/p>\n<p>While that may have been the big splash, it was not all that had them dancing in the aisles at release 1.3. The abilities to connect to stand-alone servers, search for categories, set and configure the Identity Provider, and fixes to the services.list() function and publishing from SD file operations increased the role the Python API could and should play in Web GIS management and analysis.<\/p>\n<p>Version 1.3 also introduced the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.mapping.html#vectortilelayer\">VectorTileLayer<\/a>\u00a0object so support for all the dynamic, interactive cartography that can be customized and personalized through published vector tile layers can be accessed with the API.\u00a0 Creating features from and writing features\u00a0to geojson\u00a0made the API that much more interoperable with numerous libraries and users familiar with that popular geometry storage format.<\/p>\n<p>To continue the API&#8217;s march toward the data analytics platform of choice, a whole slew of raster functions launched onto the scene. Just to name a few:<\/p>\n<ul>\n<li><em>complex<\/em> &#8211; computes magnitude from input raster with complex pixels<\/li>\n<li><em>colormap_to_rgb\u00a0<\/em>&#8211; converts single-band raster with colormap to 3-band raster<\/li>\n<li><em>grayscale<\/em> &#8211; convers multi-band image into a single-band grayscale image<\/li>\n<li><em>raster_calculator<\/em> &#8211; allows math functions for building expressions<\/li>\n<li>See more <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.raster.functions.html\"><em>here<\/em><\/a>!<\/li>\n<\/ul>\n<p>A new GeoEnrichment module, support for Hosted Feature Layer Views, and the ability to read and write Web Maps also showed up with version 1.3.\u00a0 With all these major additions, the API continued its march in the right direction and its nearly impossible to capture it all in a blog.<\/p>\n<h3>Version 1.4<\/h3>\n<p>The API provides an easily accessible, straightforward way to automate Web GIS management. As seen in the progressions through the releases, it thrives in data analytics through interoperating with Python analysis libraries and its own data structures like raster functions, the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.geoanalytics.toc.html#\">GeoAnalytics<\/a>\u00a0module\u00a0and the Spatial Dataframe. Version 1.4 integrated further with the Python data science ecosystem through support for the shapely library in the Spatial dataframe. All geometry operations are available on all platforms with the API through this support. Refinements and additions to the GeoAnalytics module make more data from more sources available for intense, distributed computing on big data. This module provides for quicker results using larger amounts of data from both file and cloud sources. The visualization of raster function chains on an <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.raster.toc.html?highlight=graph#imagerylayer\"><em>Imagery Layer<\/em><\/a>\u00a0make the analysis capabilities of the API all that more comprehensive.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":272792,"id":272792,"title":"raster_fxn_chain","filename":"raster_fxn_chain.png","filesize":36843,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\/raster_fxn_chain","alt":"","author":"5891","description":"","caption":"","name":"raster_fxn_chain","status":"inherit","uploaded_to":267942,"date":"2018-07-07 16:27:30","modified":"2018-07-07 16:27:30","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":975,"height":452,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","thumbnail-width":213,"thumbnail-height":99,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","medium-width":464,"medium-height":215,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","medium_large-width":768,"medium_large-height":356,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","large-width":975,"large-height":452,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","1536x1536-width":975,"1536x1536-height":452,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","2048x2048-width":975,"2048x2048-height":452,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","card_image-width":826,"card_image-height":383,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/raster_fxn_chain.png","wide_image-width":975,"wide_image-height":452}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Another huge breakthrough at 1.4 was the ability to install with <a href=\"https:\/\/developers.arcgis.com\/python\/guide\/install-and-set-up\/#Install-using-pipenv-or-pip\">pip<\/a>, allowing for lightweight installations and targeted functionality providing you with exactly what you need exactly how you want it&#8230;nothing less.<\/p>\n<h3>Version 1.4.1 and 1.4.2<\/h3>\n<p>These releases extended the API&#8217;s reach further with the<a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.mapping.html#offlinemapareamanager\"> Offline Map Area Manager<\/a> class neatly accessible as the <em>offline_areas<\/em> property on a Web Map. You can create items and packages for powering ArcGIS Runtime applications. An important new <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.apps.html#module-arcgis.apps\">apps module<\/a>\u00a0makes way for apps from the whole ArcGIS ecosystem.\u00a0 Two great apps inaugurate this module: the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.apps.workforce.html\"><em>workforce module<\/em><\/a>\u00a0intgrates <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.apps.workforce.html\">Workforce for ArcGIS<\/a>\u00a0and the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.apps.html#submodules\"><em>storymap module<\/em><\/a>\u00a0initaties with the JournalStoryMap class to represent a Journal Story Map with the API, bringing all the power of Python to working with these apps.<\/p>\n<p>These releases continued the trend of constant documentation improvements to both the <a href=\"https:\/\/esri.github.io\/arcgis-python-api\/apidoc\/html\/arcgis.gis.toc.html\">API reference<\/a> and <a href=\"https:\/\/developers.arcgis.com\/python\">Developer&#8217;s Guide<\/a>, relentless bug and issue fixes reported from you the users, and continual additions and enhancements to the classes, properties and methods establishing the ArcGIS API for Python as an integral tool in your GIS toolset.<\/p>\n<h3>What&#8217;s next?<\/h3>\n<p>Just around the corner awaits another major release of the API&#8230;as a foreshadowing since I know you can&#8217;t wait&#8230;I&#8217;ll tell you to think one thing: map widget! Wait&#8230;2 things: map widget and AI!<\/p>\n<p>Stay tuned as new functionality is added and current functionality is polished in the ArcGIS API for Python. Beta 1.5 release is soon to come! Be sure to check out all the latest blog posts <a href=\"https:\/\/community.esri.com\/groups\/arcgis-python-api\/content?filterID=contentstatus%5Bpublished%5D~objecttype~objecttype%5Bblogpost%5D\">here<\/a>\u00a0so you don&#8217;t miss a thing about the API.<\/p>\n"}],"authors":[{"ID":5891,"user_firstname":"John","user_lastname":"Yaist","nickname":"John Yaist","user_nicename":"john3092","display_name":"John Yaist","user_email":"jyaist@esri.com","user_url":"","user_registered":"2018-03-02 00:17:42","user_description":"Product Engineer on the ArcGIS API for Python team","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":[{"ID":67861,"post_author":"5141","post_date":"2015-06-10 09:00:34","post_date_gmt":"2015-06-10 09:00:34","post_content":"","post_title":"Accessing Multidimensional Scientific Data using Python","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"accessing-multidimensional-scientific-data-using-python","to_ping":"","pinged":"","post_modified":"2018-03-26 21:05:40","post_modified_gmt":"2018-03-26 21:05:40","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/accessing-multidimensional-scientific-data-using-python\/","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":false,"wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Year of the ArcGIS API for Python<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Year of the ArcGIS API for Python\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-07-08T17:26:29+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\"},\"author\":{\"name\":\"John Yaist\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d90b8b9a458a983df7952121acb4a465\"},\"headline\":\"The Year of the ArcGIS API for Python\",\"datePublished\":\"2018-07-08T17:00:38+00:00\",\"dateModified\":\"2018-07-08T17:26:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\"},\"wordCount\":8,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Developer\",\"Jupyter Notebook\"],\"articleSection\":[\"Analytics\",\"Announcements\",\"Data Management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\",\"name\":\"The Year of the ArcGIS API for Python\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-07-08T17:00:38+00:00\",\"dateModified\":\"2018-07-08T17:26:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Year of the ArcGIS API for Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d90b8b9a458a983df7952121acb4a465\",\"name\":\"John Yaist\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=96&d=blank&r=g\",\"caption\":\"John Yaist\"},\"description\":\"Product Engineer on the ArcGIS API for Python team\",\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"The Year of the ArcGIS API for Python","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life","og_locale":"en_US","og_type":"article","og_title":"The Year of the ArcGIS API for Python","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-07-08T17:26:29+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life"},"author":{"name":"John Yaist","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d90b8b9a458a983df7952121acb4a465"},"headline":"The Year of the ArcGIS API for Python","datePublished":"2018-07-08T17:00:38+00:00","dateModified":"2018-07-08T17:26:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life"},"wordCount":8,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Developer","Jupyter Notebook"],"articleSection":["Analytics","Announcements","Data Management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life","name":"The Year of the ArcGIS API for Python","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-07-08T17:00:38+00:00","dateModified":"2018-07-08T17:26:29+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/a-year-in-the-life#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"The Year of the ArcGIS API for Python"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d90b8b9a458a983df7952121acb4a465","name":"John Yaist","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6a77ea191f1ab53e3964ece6d1e69cef1b3560595b4ff42834b41fa770b98c39?s=96&d=blank&r=g","caption":"John Yaist"},"description":"Product Engineer on the ArcGIS API for Python team","url":""}]}},"text_date":"July 8, 2018","author_name":"John Yaist","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS API for Python","tag_data":[{"term_id":43161,"name":"Developer","slug":"developer","term_group":0,"term_taxonomy_id":43161,"taxonomy":"post_tag","description":"","parent":0,"count":39,"filter":"raw"},{"term_id":164102,"name":"Jupyter Notebook","slug":"jupyter-notebook","term_group":0,"term_taxonomy_id":164102,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"}],"category_data":[{"term_id":23341,"name":"Analytics","slug":"analytics","term_group":0,"term_taxonomy_id":23341,"taxonomy":"category","description":"","parent":0,"count":1329,"filter":"raw"},{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":1963,"filter":"raw"},{"term_id":23851,"name":"Data Management","slug":"data-management","term_group":0,"term_taxonomy_id":23851,"taxonomy":"category","description":"","parent":0,"count":920,"filter":"raw"}],"product_data":[{"term_id":36841,"name":"ArcGIS API for Python","slug":"api-python","term_group":0,"term_taxonomy_id":36841,"taxonomy":"product","description":"","parent":36601,"count":151,"filter":"raw"},{"term_id":36571,"name":"ArcGIS Enterprise","slug":"arcgis-enterprise","term_group":0,"term_taxonomy_id":36571,"taxonomy":"product","description":"","parent":0,"count":974,"filter":"raw"},{"term_id":36551,"name":"ArcGIS Online","slug":"arcgis-online","term_group":0,"term_taxonomy_id":36551,"taxonomy":"product","description":"","parent":0,"count":2426,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=api-python","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/267942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/5891"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=267942"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/267942\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=267942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=267942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=267942"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=267942"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=267942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}