{"id":46724,"date":"2022-09-29T00:00:00","date_gmt":"2022-09-29T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/analysing-global-climate-change-using-python-and-griddb\/"},"modified":"2025-11-13T12:56:15","modified_gmt":"2025-11-13T20:56:15","slug":"analysing-global-climate-change-using-python-and-griddb","status":"publish","type":"post","link":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/","title":{"rendered":"Analysing Global Climate change using Python and GridDB"},"content":{"rendered":"<p>The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning and development of feasible adaptation strategies.<\/p>\n<p>Climate change is without a doubt the most serious threat to humanity in the modern era. To have any hope of mitigating the harmful effects of climate change, the global mean temperature should be limited to 1.5 degrees Celsius above pre-industrial levels, according to the IPCC.<\/p>\n<p>In this article, I am going to analyse how to create map charts and animations of temperature variability, by using Python and the power of GridDB.<\/p>\n<p>A link to the full source code and jupyter file: <a href=\"https:\/\/github.com\/griddbnet\/Blogs\/tree\/analyzing-global-climate-change\">https:\/\/github.com\/griddbnet\/Blogs\/tree\/analyzing-global-climate-change<\/a><\/p>\n<p>The outline of the tutorial is as follows:<\/p>\n<ol>\n<li>Dataset overview<\/li>\n<li>Importing required libraries<\/li>\n<li>Loading the dataset<\/li>\n<li>Data Cleaning and Preprocessing<\/li>\n<li>Analysing with data visualization<\/li>\n<li>Conclusion<\/li>\n<\/ol>\n<h2>Prerequisites and Environment setup<\/h2>\n<p>This tutorial is carried out in Anaconda Navigator (Python version \u2013 3.8.5) on Windows Operating System. The following packages need to be installed before you continue with the tutorial \u2013<\/p>\n<ol>\n<li>\n<p>Pandas<\/p>\n<\/li>\n<li>\n<p>NumPy<\/p>\n<\/li>\n<li>\n<p>plotly<\/p>\n<\/li>\n<li>\n<p>Matplotlib<\/p>\n<\/li>\n<li>\n<p>Seaborn<\/p>\n<\/li>\n<li>\n<p>griddb_python<\/p>\n<\/li>\n<\/ol>\n<p>You can install these packages in Conda\u2019s virtual environment using <code>conda install package-name<\/code>. In case you are using Python directly via terminal\/command prompt, <code>pip install package-name<\/code> will do the work.<\/p>\n<h3>GridDB installation<\/h3>\n<p>While loading the dataset, this tutorial will cover two methods \u2013 Using GridDB as well as Using Pandas. To access GridDB using Python, the following packages also need to be installed beforehand:<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/griddb\/c_client\">GridDB C-client<\/a><\/li>\n<li>SWIG (Simplified Wrapper and Interface Generator)<\/li>\n<li><a href=\"https:\/\/github.com\/griddb\/python_client\">GridDB Python Client<\/a><\/li>\n<\/ol>\n<h2>Dataset Overview<\/h2>\n<p>The dataset contains information about visits to GStore (Google swag online store), each row is a unique visit and each user has a unique &#8216;fullVisitorId&#8217;.<\/p>\n<p>Global Land and Ocean-and-Land Temperatures (GlobalTemperatures.csv):<\/p>\n<p>Date: starts in 1750 for average land temperature and 1850 for max and min land temperatures and global ocean and land temperatures LandAverageTemperature: global average land temperature in celsius<\/p>\n<p>https:\/\/www.kaggle.com\/datasets\/berkeleyearth\/climate-change-earth-surface-temperature-data<\/p>\n<h2>Importing Required Libraries<\/h2>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># import griddb_python as griddb\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport plotly\nimport plotly.graph_objs as go\nimport plotly.tools as tls\nimport plotly.express as px\nimport plotly.graph_objs as go\nimport seaborn as sns\nimport time\nimport warnings\nwarnings.filterwarnings('ignore')\n%matplotlib inline<\/code><\/pre>\n<\/div>\n<h2>Loading the Dataset<\/h2>\n<p>Let\u2019s proceed and load the dataset into our notebook.<\/p>\n<h3>Using GridDB<\/h3>\n<p>Toshiba GridDB\u2122 is a highly scalable NoSQL database best suited for IoT and Big Data. The foundation of GridDB\u2019s principles is based upon offering a versatile data store that is optimized for IoT, provides high scalability, tuned for high performance, and ensures high reliability.<\/p>\n<p>To store large amounts of data, a CSV file can be cumbersome. GridDB serves as a perfect alternative as it in open-source and a highly scalable database. GridDB is a scalable, in-memory, No SQL database which makes it easier for you to store large amounts of data. If you are new to GridDB, a tutorial on <a href=\"https:\/\/griddb.net\/en\/blog\/using-pandas-dataframes-with-griddb\/\">reading and writing to GridDB<\/a> can be useful.<\/p>\n<p>Assuming that you have already set up your database, we will now write the SQL query in python to load our dataset.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">factory = griddb.StoreFactory.get_instance()\n\nInitialize the GridDB container (enter your database credentials)\ntry:\n    gridstore = factory.get_store(host=host_name, port=your_port, \n            cluster_name=cluster_name, username=admin, \n            password=admin)\n\n    info = griddb.ContainerInfo(\"GlobalTemperatures\",\n                    [[\"dt\", griddb.Type.TIMESTAMP],[\"LandAverageTemperature\", griddb.Type.DOUBLE],\n                     [\"LandAverageTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     [\"LandMaxTemperature\", griddb.Type.DOUBLE],\n                     [\"LandMaxTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     [\"LandMinTemperature\", griddb.Type.DOUBLE],\n                     [\"LandMinTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     [\"LandAndOceanAverageTemperature\", griddb.Type.DOUBLE],\n                     [\"LandAndOceanAverageTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     , True)\n                     \n    cont = gridstore.put_container(info) \n    data = pd.read_csv(\"GlobalTemperatures.csv\")\n    #Add data\n    for i in range(len(data)):\n        ret = cont.put(data.iloc[i, :])\n        print(\"Data added successfully\")\n                     \n                     \ntry:\n    gridstore = factory.get_store(host=host_name, port=your_port, \n            cluster_name=cluster_name, username=admin, \n            password=admin)\n\n    info = griddb.ContainerInfo(\"GlobalLandTemperaturesByCity\",\n                    [[\"dt\", griddb.Type.TIMESTAMP],[\"AverageTemperature\", griddb.Type.DOUBLE],\n                     [\"AverageTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     [\"City\", griddb.Type.STRING],[\"Country\", griddb.Type.STRING], \n                     [\"Latitude\", griddb.Type.STRING], [\"Longitude\", griddb.Type.STRING],True)\n                     \n    cont = gridstore.put_container(info) \n    data = pd.read_csv(\"GlobalLandTemperaturesByCity.csv\")\n    #Add data\n    for i in range(len(data)):\n        ret = cont.put(data.iloc[i, :])\n        print(\"Data added successfully\")\n                     \n                     \ntry:\n    gridstore = factory.get_store(host=host_name, port=your_port, \n            cluster_name=cluster_name, username=admin, \n            password=admin)\n\n    info = griddb.ContainerInfo(\"GlobalLandTemperaturesByState\",\n                    [[\"dt\", griddb.Type.TIMESTAMP],[\"AverageTemperature\", griddb.Type.DOUBLE],[\"AverageTemperatureUncertainty\", griddb.Type.DOUBLE],\n                     [\"State\", griddb.Type.STRING],[\"Country\", griddb.Type.STRING], True)\n    cont = gridstore.put_container(info) \n    data = pd.read_csv(\"GlobalLandTemperaturesByState.csv\")\n    #Add data\n    for i in range(len(data)):\n        ret = cont.put(data.iloc[i, :])\n        print(\"Data added successfully\")<\/code><\/pre>\n<\/div>\n<pre><code>Data added successfully\n<\/code><\/pre>\n<p>The read_sql_query function offered by the pandas library converts the data fetched into a panda data frame to make it easy for the user to work.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">sql_statement1 = ('SELECT * FROM GlobalTemperatures.csv')\ndf1 = pd.read_sql_query(sql_statement1, cont)\n\nsql_statement2 = ('SELECT * FROM GlobalLandTemperaturesByCity.csv')\ndf2 = pd.read_sql_query(sql_statement2, cont)\n\nsql_statement3 = ('SELECT * FROM GlobalLandTemperaturesByState.csv')\ndf3 = pd.read_sql_query(sql_statement3, cont)<\/code><\/pre>\n<\/div>\n<p>Note that the <code>cont<\/code> variable has the container information where our data is stored. Replace the <code>credit_card_dataset<\/code> with the name of your container. More info can be found in this tutorial <a href=\"https:\/\/griddb.net\/en\/blog\/using-pandas-dataframes-with-griddb\/\">reading and writing to GridDB<\/a>.<\/p>\n<p>When it comes to IoT and Big Data use cases, GridDB clearly stands out among other databases in the Relational and NoSQL space. Overall, GridDB offers multiple reliability features for mission-critical applications that require high availability and data retention.<\/p>\n<h3>Using pandas read_csv<\/h3>\n<p>We can also use Pandas&#8217; <code>read_csv<\/code> function to load our data. Both of the above methods will lead to the same output as the data is loaded in the form of a pandas dataframe using either of the methods.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp_country = pd.read_csv('GlobalLandTemperaturesByCity.csv')<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp_country.head()<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          dt\n        <\/th>\n<th>\n          AverageTemperature\n        <\/th>\n<th>\n          AverageTemperatureUncertainty\n        <\/th>\n<th>\n          City\n        <\/th>\n<th>\n          Country\n        <\/th>\n<th>\n          Latitude\n        <\/th>\n<th>\n          Longitude\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          1743-11-01\n        <\/td>\n<td>\n          6.068\n        <\/td>\n<td>\n          1.737\n        <\/td>\n<td>\n          \u00c5rhus\n        <\/td>\n<td>\n          Denmark\n        <\/td>\n<td>\n          57.05N\n        <\/td>\n<td>\n          10.33E\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          1743-12-01\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          \u00c5rhus\n        <\/td>\n<td>\n          Denmark\n        <\/td>\n<td>\n          57.05N\n        <\/td>\n<td>\n          10.33E\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          1744-01-01\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          \u00c5rhus\n        <\/td>\n<td>\n          Denmark\n        <\/td>\n<td>\n          57.05N\n        <\/td>\n<td>\n          10.33E\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          1744-02-01\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          \u00c5rhus\n        <\/td>\n<td>\n          Denmark\n        <\/td>\n<td>\n          57.05N\n        <\/td>\n<td>\n          10.33E\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          1744-03-01\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          \u00c5rhus\n        <\/td>\n<td>\n          Denmark\n        <\/td>\n<td>\n          57.05N\n        <\/td>\n<td>\n          10.33E\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp=pd.read_csv('GlobalTemperatures.csv')<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp.head()<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          dt\n        <\/th>\n<th>\n          LandAverageTemperature\n        <\/th>\n<th>\n          LandAverageTemperatureUncertainty\n        <\/th>\n<th>\n          LandMaxTemperature\n        <\/th>\n<th>\n          LandMaxTemperatureUncertainty\n        <\/th>\n<th>\n          LandMinTemperature\n        <\/th>\n<th>\n          LandMinTemperatureUncertainty\n        <\/th>\n<th>\n          LandAndOceanAverageTemperature\n        <\/th>\n<th>\n          LandAndOceanAverageTemperatureUncertainty\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          1750-01-01\n        <\/td>\n<td>\n          3.034\n        <\/td>\n<td>\n          3.574\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          1750-02-01\n        <\/td>\n<td>\n          3.083\n        <\/td>\n<td>\n          3.702\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          1750-03-01\n        <\/td>\n<td>\n          5.626\n        <\/td>\n<td>\n          3.076\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          1750-04-01\n        <\/td>\n<td>\n          8.490\n        <\/td>\n<td>\n          2.451\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          1750-05-01\n        <\/td>\n<td>\n          11.573\n        <\/td>\n<td>\n          2.072\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">GlobalTempState = pd.read_csv('GlobalLandTemperaturesByState.csv') <\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">GlobalTempState.head()<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          dt\n        <\/th>\n<th>\n          AverageTemperature\n        <\/th>\n<th>\n          AverageTemperatureUncertainty\n        <\/th>\n<th>\n          State\n        <\/th>\n<th>\n          Country\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          1855-05-01\n        <\/td>\n<td>\n          25.544\n        <\/td>\n<td>\n          1.171\n        <\/td>\n<td>\n          Acre\n        <\/td>\n<td>\n          Brazil\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          1855-06-01\n        <\/td>\n<td>\n          24.228\n        <\/td>\n<td>\n          1.103\n        <\/td>\n<td>\n          Acre\n        <\/td>\n<td>\n          Brazil\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          1855-07-01\n        <\/td>\n<td>\n          24.371\n        <\/td>\n<td>\n          1.044\n        <\/td>\n<td>\n          Acre\n        <\/td>\n<td>\n          Brazil\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          1855-08-01\n        <\/td>\n<td>\n          25.427\n        <\/td>\n<td>\n          1.073\n        <\/td>\n<td>\n          Acre\n        <\/td>\n<td>\n          Brazil\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          1855-09-01\n        <\/td>\n<td>\n          25.675\n        <\/td>\n<td>\n          1.014\n        <\/td>\n<td>\n          Acre\n        <\/td>\n<td>\n          Brazil\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Data Cleaning and Preprocessing<\/h2>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp_country.isna().sum()<\/code><\/pre>\n<\/div>\n<pre><code>dt                                    0\nAverageTemperature               364130\nAverageTemperatureUncertainty    364130\nCity                                  0\nCountry                               0\nLatitude                              0\nLongitude                             0\ndtype: int64\n<\/code><\/pre>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp_country.dropna(axis='index',how='any',subset=['AverageTemperature'],inplace=True)<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">def fetch_year(date):\n    return date.split('-')[0]\nglobal_temp['years']=global_temp['dt'].apply(fetch_year)\nglobal_temp.head()<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          dt\n        <\/th>\n<th>\n          LandAverageTemperature\n        <\/th>\n<th>\n          LandAverageTemperatureUncertainty\n        <\/th>\n<th>\n          LandMaxTemperature\n        <\/th>\n<th>\n          LandMaxTemperatureUncertainty\n        <\/th>\n<th>\n          LandMinTemperature\n        <\/th>\n<th>\n          LandMinTemperatureUncertainty\n        <\/th>\n<th>\n          LandAndOceanAverageTemperature\n        <\/th>\n<th>\n          LandAndOceanAverageTemperatureUncertainty\n        <\/th>\n<th>\n          years\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          1750-01-01\n        <\/td>\n<td>\n          3.034\n        <\/td>\n<td>\n          3.574\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          1750\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          1750-02-01\n        <\/td>\n<td>\n          3.083\n        <\/td>\n<td>\n          3.702\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          1750\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          1750-03-01\n        <\/td>\n<td>\n          5.626\n        <\/td>\n<td>\n          3.076\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          1750\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          1750-04-01\n        <\/td>\n<td>\n          8.490\n        <\/td>\n<td>\n          2.451\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          1750\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          1750-05-01\n        <\/td>\n<td>\n          11.573\n        <\/td>\n<td>\n          2.072\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          NaN\n        <\/td>\n<td>\n          1750\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Analyzing with Data Visualization<\/h2>\n<p>Let&#8217;s calculate the average temperature for each country<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">avg_temp=global_temp_country.groupby(['Country'])['AverageTemperature'].mean().to_frame().reset_index()\navg_temp<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          Country\n        <\/th>\n<th>\n          AverageTemperature\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          Afghanistan\n        <\/td>\n<td>\n          13.816497\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          Albania\n        <\/td>\n<td>\n          15.525828\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          Algeria\n        <\/td>\n<td>\n          17.763206\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          Angola\n        <\/td>\n<td>\n          21.759716\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          Argentina\n        <\/td>\n<td>\n          16.999216\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          &#8230;\n        <\/th>\n<td>\n          &#8230;\n        <\/td>\n<td>\n          &#8230;\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          154\n        <\/th>\n<td>\n          Venezuela\n        <\/td>\n<td>\n          25.482422\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          155\n        <\/th>\n<td>\n          Vietnam\n        <\/td>\n<td>\n          24.846825\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          156\n        <\/th>\n<td>\n          Yemen\n        <\/td>\n<td>\n          25.768408\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          157\n        <\/th>\n<td>\n          Zambia\n        <\/td>\n<td>\n          20.937623\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          158\n        <\/th>\n<td>\n          Zimbabwe\n        <\/td>\n<td>\n          19.822971\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\n    159 rows \u00d7 2 columns\n  <\/p>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">fig=px.choropleth(avg_temp,locations='Country',locationmode='country names',color='AverageTemperature')\nfig.update_layout(title='Choropleth map of average temperature')\nfig.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_16.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_16.png\" alt=\"\" width=\"813\" height=\"542\" class=\"aligncenter size-full wp-image-28666\" srcset=\"\/wp-content\/uploads\/2022\/08\/Screenshot_16.png 813w, \/wp-content\/uploads\/2022\/08\/Screenshot_16-300x200.png 300w, \/wp-content\/uploads\/2022\/08\/Screenshot_16-768x512.png 768w, \/wp-content\/uploads\/2022\/08\/Screenshot_16-600x400.png 600w\" sizes=\"(max-width: 813px) 100vw, 813px\" \/><\/a><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># The average temperature and Horizontal Bar sort by countries\n\nsns.barplot(x=avg_temp.sort_values(by='AverageTemperature',ascending=False)['AverageTemperature'][0:20],y=avg_temp.sort_values(by='AverageTemperature',ascending=False)['Country'][0:20])<\/code><\/pre>\n<\/div>\n<pre><code>&lt;AxesSubplot:xlabel='AverageTemperature', ylabel='Country'&gt;\n<\/code><\/pre>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_33_1.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_33_1.png\" alt=\"\" width=\"477\" height=\"262\" class=\"aligncenter size-full wp-image-28660\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_33_1.png 477w, \/wp-content\/uploads\/2022\/08\/output_33_1-300x165.png 300w\" sizes=\"(max-width: 477px) 100vw, 477px\" \/><\/a><\/p>\n<h3>Is there global warming?<\/h3>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data=global_temp.groupby('years').agg({'LandAverageTemperature':'mean','LandAverageTemperatureUncertainty':'mean'}).reset_index()\ndata.head()<\/code><\/pre>\n<\/div>\n<div style=\"overflow-x: scroll;overflow-y: hidden;\">\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          years\n        <\/th>\n<th>\n          LandAverageTemperature\n        <\/th>\n<th>\n          LandAverageTemperatureUncertainty\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          1750\n        <\/td>\n<td>\n          8.719364\n        <\/td>\n<td>\n          2.637818\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          1751\n        <\/td>\n<td>\n          7.976143\n        <\/td>\n<td>\n          2.781143\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          1752\n        <\/td>\n<td>\n          5.779833\n        <\/td>\n<td>\n          2.977000\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          1753\n        <\/td>\n<td>\n          8.388083\n        <\/td>\n<td>\n          3.176000\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          1754\n        <\/td>\n<td>\n          8.469333\n        <\/td>\n<td>\n          3.494250\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">data['Uncertainty top']=data['LandAverageTemperature']+data['LandAverageTemperatureUncertainty']\ndata['Uncertainty bottom']=data['LandAverageTemperature']-data['LandAverageTemperatureUncertainty']<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">fig=px.line(data,x='years',y=['LandAverageTemperature',\n       'Uncertainty top', 'Uncertainty bottom'],title='Average Land Tmeperature in World')\nfig.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_17.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_17.png\" alt=\"\" width=\"813\" height=\"539\" class=\"aligncenter size-full wp-image-28667\" srcset=\"\/wp-content\/uploads\/2022\/08\/Screenshot_17.png 813w, \/wp-content\/uploads\/2022\/08\/Screenshot_17-300x199.png 300w, \/wp-content\/uploads\/2022\/08\/Screenshot_17-768x509.png 768w, \/wp-content\/uploads\/2022\/08\/Screenshot_17-600x398.png 600w\" sizes=\"(max-width: 813px) 100vw, 813px\" \/><\/a><\/p>\n<p>The charts show that there is currently global warming. The average temperature of the Earth&#8217;s surface has reached its highest level in three centuries. Temperatures have risen at the fastest rate in the last 30 years. This concerns me; I hope that humanity will soon fully transition to ecological energy sources, which will reduce CO2. We will be in trouble if it does not happen. This chart also includes confidence intervals, indicating that temperature measurement has become more accurate in recent years.<\/p>\n<h3>Average temperature in each season<\/h3>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">global_temp = global_temp[['dt', 'LandAverageTemperature']]\n\nglobal_temp['dt'] = pd.to_datetime(global_temp['dt'])\nglobal_temp['year'] = global_temp['dt'].map(lambda x: x.year)\nglobal_temp['month'] = global_temp['dt'].map(lambda x: x.month)\n\ndef get_season(month):\n    if month >= 3 and month &lt;= 5:\n        return 'spring'\n    elif month >= 6 and month &lt;= 8:\n        return 'summer'\n    elif month >= 9 and month &lt;= 11:\n        return 'autumn'\n    else:\n        return 'winter'\n    \nmin_year = global_temp['year'].min()\nmax_year = global_temp['year'].max()\nyears = range(min_year, max_year + 1)\n\nglobal_temp['season'] = global_temp['month'].apply(get_season)\n\nspring_temps = []\nsummer_temps = []\nautumn_temps = []\nwinter_temps = []\n\nfor year in years:\n    curr_years_data = global_temp[global_temp['year'] == year]\n    spring_temps.append(curr_years_data[curr_years_data['season'] == 'spring']['LandAverageTemperature'].mean())\n    summer_temps.append(curr_years_data[curr_years_data['season'] == 'summer']['LandAverageTemperature'].mean())\n    autumn_temps.append(curr_years_data[curr_years_data['season'] == 'autumn']['LandAverageTemperature'].mean())\n    winter_temps.append(curr_years_data[curr_years_data['season'] == 'winter']['LandAverageTemperature'].mean())<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">sns.set(style=\"whitegrid\")\nsns.set_color_codes(\"pastel\")\nf, ax = plt.subplots(figsize=(10, 6))\n\nplt.plot(years, summer_temps, label='Summers average temperature', color='orange')\nplt.plot(years, autumn_temps, label='Autumns average temperature', color='r')\nplt.plot(years, spring_temps, label='Springs average temperature', color='g')\nplt.plot(years, winter_temps, label='Winters average temperature', color='b')\n\nplt.xlim(min_year, max_year)\n\nax.set_ylabel('Average temperature')\nax.set_xlabel('Year')\nax.set_title('Average temperature in each season')\nlegend = plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), frameon=True, borderpad=1, borderaxespad=1)<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_41_0.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_41_0.png\" alt=\"\" width=\"834\" height=\"388\" class=\"aligncenter size-full wp-image-28661\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_41_0.png 834w, \/wp-content\/uploads\/2022\/08\/output_41_0-300x140.png 300w, \/wp-content\/uploads\/2022\/08\/output_41_0-768x357.png 768w, \/wp-content\/uploads\/2022\/08\/output_41_0-600x279.png 600w\" sizes=\"(max-width: 834px) 100vw, 834px\" \/><\/a><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Statewise scenario of average temperature.\ncountry_state_temp = GlobalTempState.groupby(by = ['Country','State']).mean().reset_index().sort_values('AverageTemperature',ascending=False).reset_index()\ncountry_state_temp\ncountry_state_temp[\"world\"] = \"world\" \nfig = px.treemap(country_state_temp.head(200), path=['world', 'Country','State'], values='AverageTemperature',\n                  color='State',color_continuous_scale='RdGr')\nfig.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_18.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/Screenshot_18.png\" alt=\"\" width=\"818\" height=\"538\" class=\"aligncenter size-full wp-image-28668\" srcset=\"\/wp-content\/uploads\/2022\/08\/Screenshot_18.png 818w, \/wp-content\/uploads\/2022\/08\/Screenshot_18-300x197.png 300w, \/wp-content\/uploads\/2022\/08\/Screenshot_18-768x505.png 768w, \/wp-content\/uploads\/2022\/08\/Screenshot_18-600x395.png 600w\" sizes=\"(max-width: 818px) 100vw, 818px\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>In this tutorial we analysed the global climate using Python and GridDB. We examined two ways to import our data, using (1) GridDB and (2) Pandas. For large datasets, GridDB provides an excellent alternative to import data in your notebook as it is open-source and highly scalable.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning and development of feasible adaptation strategies. Climate change is without a doubt the most serious threat to humanity in the modern era. To have any hope of mitigating the harmful effects of [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":27994,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46724","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-29T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:56:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2021\/12\/Screenshot_16.png\" \/>\n\t<meta property=\"og:image:width\" content=\"882\" \/>\n\t<meta property=\"og:image:height\" content=\"671\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Analysing Global Climate change using Python and GridDB\",\"datePublished\":\"2022-09-29T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\"},\"wordCount\":958,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\",\"name\":\"Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png\",\"datePublished\":\"2022-09-29T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:15+00:00\",\"description\":\"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png\",\"contentUrl\":\"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png\",\"width\":882,\"height\":671},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT","description":"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning","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:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning","og_url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2022-09-29T07:00:00+00:00","article_modified_time":"2025-11-13T20:56:15+00:00","og_image":[{"width":882,"height":671,"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2021\/12\/Screenshot_16.png","type":"image\/png"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"griddb-admin","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Analysing Global Climate change using Python and GridDB","datePublished":"2022-09-29T07:00:00+00:00","dateModified":"2025-11-13T20:56:15+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/"},"wordCount":958,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/","name":"Analysing Global Climate change using Python and GridDB | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png","datePublished":"2022-09-29T07:00:00+00:00","dateModified":"2025-11-13T20:56:15+00:00","description":"The understanding of climate change impacts and the associated climate extreme events at regional and local scales is of critical importance for planning","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/analysing-global-climate-change-using-python-and-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png","contentUrl":"\/wp-content\/uploads\/2021\/12\/Screenshot_16.png","width":882,"height":671},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/comments?post=46724"}],"version-history":[{"count":1,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46724\/revisions"}],"predecessor-version":[{"id":51396,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46724\/revisions\/51396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media\/27994"}],"wp:attachment":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media?parent=46724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/categories?post=46724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/tags?post=46724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}