{"id":46702,"date":"2022-05-25T00:00:00","date_gmt":"2022-05-25T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/using-data-science-to-catch-criminals\/"},"modified":"2025-11-13T12:56:01","modified_gmt":"2025-11-13T20:56:01","slug":"using-data-science-to-catch-criminals","status":"publish","type":"post","link":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/","title":{"rendered":"Using Data Science to Catch Criminals"},"content":{"rendered":"<p>The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies, target ads to consumers, and maximize profits and sales in business. The concept of open science has led organizations to use data to handle social problems. It can offer a statistical and data-driven solution to hidden human behavior and cultural patterns.<\/p>\n<p><a href=\"https:\/\/github.com\/griddbnet\/Blogs\/tree\/main\/Using%20Data%20Science%20to%20Catch%20Criminals\"> Full code for article found here<\/a><\/p>\n<p>We will be using data from the San Francisco crime department to understand the relation between civilian-reported incidents of crime and police-reported incidents of crime. To store and readily access a large amount of data, we will be using GridDB as our database platform.<\/p>\n<h2>Exporting and Import dataset using GridDB:<\/h2>\n<p>Because GridDB is a highly scalable and in-memory database, it allows parallel processing for higher performance and efficiency. Using GridDB&#8217;s python client, we can easily connect GridDB to python and use it to import or export data in real-time.<\/p>\n<p>Libraries:<\/p>\n<p>We will be using some python libraries to preprocess and analyze the data visually.<\/p>\n<ol>\n<li>Pandas: Vastly used python library, especially when dealing with data frames.<\/li>\n<li>Matplotlib: Primary library to present data visually using basic plots<\/li>\n<li>Numpy: Python library to handle data involving mathematical calculations<\/li>\n<\/ol>\n<p>Preprocessing:<\/p>\n<p>We have two datasets available for crime data, one containing information about police-reported crimes while the other contains information about the calls received by the police department by people to report those crimes.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">incidents = pd.read_csv(\"datasets\/downsample_police-department-incidents.csv\")\ncalls = pd.read_csv(\"datasets\/downsample_police-department-calls-for-service.csv\")<\/code><\/pre>\n<\/div>\n<p>The datasets are now saved in the form of a data frame into the variables &#8220;incidents&#8221; and &#8220;calls&#8221;.<\/p>\n<p>The datasets contain a few columns that are not significant in our analysis so we would be removing them from the data frames to minimize the memory consumption and maximize the time efficiency of our analysis.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">incidents = incidents.drop(['IncidntNum', 'Time', 'X', 'Y', 'Location', 'PdId'], axis = 1)\ncalls = calls.drop(['Crime Id', 'Report Date', 'Offense Date', 'Call Time', 'Call Date Time', \n                        'Disposition', 'Address', 'City', 'State', 'Agency Id','Address Type', \n                        'Common Location'], axis = 1)<\/code><\/pre>\n<\/div>\n<p>These are the columns remaining in the data frames that we would be using in our analysis:<\/p>\n<p>Incident dataframe:<\/p>\n<ol>\n<li>Category: The type of crime<\/li>\n<li>Descript: Description of the crime incident that occurred<\/li>\n<li>DayOfWeek: The day on which the crime took place<\/li>\n<li>Date: The date on which the crime took place<\/li>\n<li>PdDistrict: The district of San Francisco where the crime took place<\/li>\n<li>Resolution: The action taken against the crime<\/li>\n<li>Address: Exact location where the crime took place<\/li>\n<\/ol>\n<p>Calls dataframe:<\/p>\n<ol>\n<li>Descript: Description of the crime as described by the reporter<\/li>\n<li>Date: The date of receiving the reporting call.<\/li>\n<\/ol>\n<p>We will also need to introduce a primary key column in both of the dataframes so that we can track each row individually. We will reset the index and rename it to &#8216;ID&#8217;.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">incidents.reset_index(drop=True, inplace=True)\nincidents.index.name = 'ID'\nincidents.dropna(inplace = True)\n    \n    \ncalls.reset_index(drop=True, inplace=True)\ncalls.index.name = 'ID'\ncalls.dropna(inplace = True)<\/code><\/pre>\n<\/div>\n<p>After completing our cleaning process, we will save the dataframes as CSV files on our local drive that would be then uploaded to GridDB.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#save it into csv\nincidents.to_csv(\"preprocessed_incidents.csv\")\ncalls.to_csv(\"preprocessed_calls.csv\")<\/code><\/pre>\n<\/div>\n<p>Exporting Dataset into GridDB:<\/p>\n<p>The next step is to upload the data to GridDB. For that, we will read the preprocessed CSV file using pandas and save it to individual dataframes.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#read the cleaned data from csv\nincident_processed = pd.read_csv(\"preprocessed_incidents.csv\")\ncalls_processed = pd.read_csv(\"preprocessed_calls.csv\")<\/code><\/pre>\n<\/div>\n<p>We will create two different containers to pass our column info to the GridDB to be able to generate the design of the two databases before inserting the row information.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Create container \nincident_container = \"incident_container\"\n\n# Create containerInfo\nincident_containerInfo = griddb.ContainerInfo(incident_container,\n                    [[\"ID\", griddb.Type.INTEGER],\n                    [\"Category\", griddb.Type.STRING],\n                    [\"Descript\", griddb.Type.STRING],\n                    [\"DayOfWeek\", griddb.Type.STRING],\n                    [\"Date\", griddb.Type.TIMESTAMP],\n                    [\"PdDistrict\", griddb.Type.STRING],\n                    [\"Resolution\", griddb.Type.STRING]],\n                    griddb.ContainerType.COLLECTION, True)\n    \nincident_columns = gridstore.put_container(incident_containerInfo)<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Create container \ncalls_container = \"calls_container\"\n\n# Create containerInfo\ncalls_containerInfo = griddb.ContainerInfo(calls_container,\n                    [[\"ID\", griddb.Type.INTEGER],\n                    [\"Descript\", griddb.Type.STRING],\n                    [\"Date\", griddb.Type.TIMESTAMP]],\n                    griddb.ContainerType.COLLECTION, True)\n    \ncalls_columns = gridstore.put_container(calls_containerInfo)<\/code><\/pre>\n<\/div>\n<p>Finally, we will insert the rows into the schema created.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Put rows\nincident_columns.put_rows(incident_processed)\n    \nprint(\"Data Inserted using the DataFrame\")<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Put rows\ncalls_columns.put_rows(calls_processed)\n    \nprint(\"Data Inserted using the DataFrame\")<\/code><\/pre>\n<\/div>\n<p>Importing Dataset from GridDB:<\/p>\n<p>We will use TQL to query the data from the GridDB database that is similar to SQL commands. Before fetching the data, we would create the containers to extract rows of data before saving it into dataframes.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Define the container names\n    incident_container = \"incident_container\"\n\n    # Get the containers\n    obtained_data = gridstore.get_container(incident_container)\n    \n    # Fetch all rows - language_tag_container\n    query = obtained_data.query(\"select *\")\n    \n    rs = query.fetch(False)\n    print(f\"{incident_container} Data\")<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Define the container names\n    call_container = \"call_container\"\n\n    # Get the containers\n    obtained_data = gridstore.get_container(call_container)\n    \n    # Fetch all rows - language_tag_container\n    query = obtained_data.query(\"select *\")\n    \n    rs = query.fetch(False)\n    print(f\"{call_container} Data\")<\/code><\/pre>\n<\/div>\n<p>The last step for our extraction of data would be to query the rows in order of the column info and save it into the dataframes to use for data visualization and analysis.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Iterate and create a list\n    retrieved_data= []\n    while rs.has_next():\n        data = rs.next()\n        retrieved_data.append(data)\n\n# Convert the list to a pandas data frame\n    incidents = pd.DataFrame(retrieved_data,\n                        columns=['ID', 'Category', 'Descript', 'DayOfWeek', 'Date', \n                                 'PdDistrict', 'Resolution','Address'])<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Iterate and create a list\n    retrieved_data= []\n    while rs.has_next():\n        data = rs.next()\n        retrieved_data.append(data)\n\n    # Convert the list to a pandas data frame\n    calls = pd.DataFrame(retrieved_data,\n                        columns=['ID', 'Descript', 'Date'])<\/code><\/pre>\n<\/div>\n<p>Our cleaned data is now available for data analysis saved as two dataframes, &#8220;incidents&#8221; and &#8220;calls&#8221;.<\/p>\n<h2>Data Analysis and Visualization<\/h2>\n<p>We will begin our analysis by introducing a column consisting of Null or zero values that will help us in keeping a count of our grouping data.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">incidents['NumOfIncidents'] = np.zeros(len(incidents))\ncalls['NumOfCalls'] = np.zeros(len(calls))<\/code><\/pre>\n<\/div>\n<p>The crimes reported belong to different categories while reported by the police themselves. Let&#8217;s dive into the data and take a look at some major crimes that take place in San Francisco.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">incident_categories = incidents.groupby([\"Category\"]).count()\nn_largest = incident_categories['NumOfIncidents'].nlargest(n=10)\nincident_categories.reset_index(inplace = True)\nincident_categories = incident_categories[[\"Category\",\"NumOfIncidents\"]]\nn_largest.plot(kind = 'barh')\nplt.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot1.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot1.png\" alt=\"\" width=\"459\" height=\"262\" class=\"aligncenter size-full wp-image-28178\" srcset=\"\/wp-content\/uploads\/2022\/04\/plot1.png 459w, \/wp-content\/uploads\/2022\/04\/plot1-300x171.png 300w, \/wp-content\/uploads\/2022\/04\/plot1-150x85.png 150w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/a><\/p>\n<p>We can see that most of the crimes that take place in San Francisco are related to Theft. Taking this investigation further, we can also explore the areas where this particular crime takes place mostly.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">Theft_address = incidents[incidents['Category']==\"LARCENY\/THEFT\"]\nTheft_address = Theft_address.groupby([\"Address\"]).count()\nn_largest = Theft_address['NumOfIncidents'].nlargest(n=10)\nTheft_address.reset_index(inplace = True)\nTheft_address = Theft_address[[\"Address\",\"NumOfIncidents\"]]\nn_largest.plot(kind = 'barh')\nplt.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot2.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot2.png\" alt=\"\" width=\"531\" height=\"248\" class=\"aligncenter size-full wp-image-28180\" srcset=\"\/wp-content\/uploads\/2022\/04\/plot2.png 531w, \/wp-content\/uploads\/2022\/04\/plot2-300x140.png 300w\" sizes=\"(max-width: 531px) 100vw, 531px\" \/><\/a><\/p>\n<p>We will now explore the daily calls and daily incidents reported by the police individually to get an insight into how the values of daily incidents and daily calls are changing over time. By removing the Date column from the key, the result is a long and narrow data frame with multiple rows for each date observation in both cases.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">daily_incidents = incidents.groupby([\"Date\"]).count()\ndaily_incidents.reset_index(inplace = True)\ndaily_incidents = daily_incidents[[\"Date\",\"NumOfIncidents\"]]\n\n\ndaily_calls = calls.groupby([\"Date\"]).count()\ndaily_calls.reset_index(inplace = True)\ndaily_calls = daily_calls[[\"Date\",\"NumOfCalls\"]]<\/code><\/pre>\n<\/div>\n<p>Next, we will merge both dataframes on the Date column to get the values of calls and incidents over a particular date in a single dataframe.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">shared_dates = pd.merge(daily_incidents, daily_calls, on='Date', how = 'inner')<\/code><\/pre>\n<\/div>\n<p>Let&#8217;s plot both the columns on a scatterplot and apply a linear regression model to get a line of the pattern shown by our data. For that we will fit or data to the regression model first, plot a scatter plot using the data points, and then plot a line using the data points obtained by our model and saved as &#8220;Treg1&#8221;.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">d1 = np.polyfit(shared_dates.index,shared_dates['NumOfCalls'],1)\nf1 = np.poly1d(d1)\nshared_dates.insert(3,'Treg1',f1(shared_dates.index))\nax = shared_dates.plot.scatter(x = 'Day', y='NumOfCalls')\nshared_dates.plot(y='Treg1',color='Red',ax=ax)<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot3.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot3.png\" alt=\"\" width=\"393\" height=\"262\" class=\"aligncenter size-full wp-image-28181\" srcset=\"\/wp-content\/uploads\/2022\/04\/plot3.png 393w, \/wp-content\/uploads\/2022\/04\/plot3-300x200.png 300w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><\/a><\/p>\n<p>Similarly, we will create another linear model for our second column and save the model data points in the column &#8220;Treg2&#8221;<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">d2 = np.polyfit(shared_dates.index,shared_dates['NumOfIncidents'],1)\nf2 = np.poly1d(d2)\nshared_dates.insert(4,'Treg2',f2(shared_dates.index))\nax = shared_dates.plot.scatter(x='Day' ,y='NumOfIncidents')\nshared_dates.plot(y='Treg2',color='Red',ax=ax)<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/plot4.png\" alt=\"\" width=\"393\" height=\"262\" class=\"aligncenter size-full wp-image-28182\" srcset=\"\/wp-content\/uploads\/2022\/04\/plot4.png 393w, \/wp-content\/uploads\/2022\/04\/plot4-300x200.png 300w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><\/a><\/p>\n<p>To further investigate and quantify the relationship between the two variables, we will use the correlation coefficient technique. We will be using the Pearson correlation coefficient which is the most simple and used coefficient in statistics. It varies from -1 to +1, -1 being a strong negative correlation and +1 being a strong positive correlation. It is used as the default variable by the python function &#8216;corr&#8217;.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">correlation = shared_dates['NumOfIncidents'].corr(shared_dates['NumOfCalls'])<\/code><\/pre>\n<\/div>\n<p>The correlation coefficient is 0.1469688, which indicates a very weak positive correlation between the two variables.<\/p>\n<h2>Conclusion<\/h2>\n<p>We can conclude that statistically, the number of incidents that are reported by the police is not dependent on the calls received by them reporting the crime. Also, we extracted some highly insecure areas of San Francisco that requires extra security by the police. All of the analysis was done using the GridDB database at the backend which made the integration seamless and efficient.<\/p>\n<p><a href=\"https:\/\/github.com\/griddbnet\/Blogs\/tree\/main\/Using%20Data%20Science%20to%20Catch%20Criminals\"> Full code for article found here<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies, target ads to consumers, and maximize profits and sales in business. The concept of open science has led organizations to use data to handle social problems. It can offer [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":28276,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46702","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>Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,\" \/>\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.net\/en\/blog\/using-data-science-to-catch-criminals\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\" \/>\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-05-25T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:56:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Using Data Science to Catch Criminals\",\"datePublished\":\"2022-05-25T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\"},\"wordCount\":1036,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\",\"name\":\"Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg\",\"datePublished\":\"2022-05-25T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:01+00:00\",\"description\":\"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg\",\"contentUrl\":\"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg\",\"width\":1920,\"height\":1440},{\"@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.net\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT","description":"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,","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.net\/en\/blog\/using-data-science-to-catch-criminals\/","og_locale":"en_US","og_type":"article","og_title":"Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT","og_description":"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,","og_url":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2022-05-25T07:00:00+00:00","article_modified_time":"2025-11-13T20:56:01+00:00","og_image":[{"width":1920,"height":1440,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg","type":"image\/jpeg"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"griddb-admin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Using Data Science to Catch Criminals","datePublished":"2022-05-25T07:00:00+00:00","dateModified":"2025-11-13T20:56:01+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/"},"wordCount":1036,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/","url":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/","name":"Using Data Science to Catch Criminals | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg","datePublished":"2022-05-25T07:00:00+00:00","dateModified":"2025-11-13T20:56:01+00:00","description":"The power of data science is not limited to solving technical or business issues. Its usage is not limited to data analytics to create new technologies,","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/using-data-science-to-catch-criminals\/#primaryimage","url":"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg","contentUrl":"\/wp-content\/uploads\/2022\/04\/san-francisco_1920x1440.jpg","width":1920,"height":1440},{"@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.net\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46702"}],"version-history":[{"count":1,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46702\/revisions"}],"predecessor-version":[{"id":51376,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46702\/revisions\/51376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media\/28276"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}