{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"Army\"Army\n", "\n", "

Calculating and Comparing Product Production Time for VS One-Health Products

\n", "Sheldon Waugh MSc, PhD
\n", "Epidemiologist
\n", "One-Health Division
\n", "Veterinary Services and Public Health Sanitation Directorate
\n", "US Army Public Health Center
\n", "\n", "### This Python notebook is a workable and scalable example on how to make a notebook that cleans and analyzes data in a transparent way.\n", "We have an excel workbook that details the progress of all One-Health/Veterinary Services products to include posters, brochures and newsletters. \n", "Taking a look at the initial structure of this spreadsheet, we have missing dates or progress for certain products. This may be due to certain products not needing certain levels of approval. It may be advantageous for us to split the data by product and then look at the time related to each product.
\n", "For my sanity, I will be getting rid of the incomplete records." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First let's go ahead and load the .csv into python" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TypeDraft ReviewSME Content ReviewPMD Content ReviewVID Design Work/EditsSubmitted to CRCCRC Review Complete
0BrochureNaNNaN5/17/20165/23/20166/1/20166/7/2016
1BrochureNaNNaN5/17/20165/23/20166/3/20166/13/2016
2BrochureNaNNaN5/17/201610/20/201611/1/201612/20/2016
3BrochureNaNNaN7/5/20167/5/20168/19/20169/2/2016
4Brochure5/9/20175/16/20176/6/20176/23/20178/4/201710/10/2017
\n", "
" ], "text/plain": [ " Type Draft Review SME Content Review PMD Content Review \\\n", "0 Brochure NaN NaN 5/17/2016 \n", "1 Brochure NaN NaN 5/17/2016 \n", "2 Brochure NaN NaN 5/17/2016 \n", "3 Brochure NaN NaN 7/5/2016 \n", "4 Brochure 5/9/2017 5/16/2017 6/6/2017 \n", "\n", " VID Design Work/Edits Submitted to CRC CRC Review Complete \n", "0 5/23/2016 6/1/2016 6/7/2016 \n", "1 5/23/2016 6/3/2016 6/13/2016 \n", "2 10/20/2016 11/1/2016 12/20/2016 \n", "3 7/5/2016 8/19/2016 9/2/2016 \n", "4 6/23/2017 8/4/2017 10/10/2017 " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd # import the module and alias it as pd\n", "\n", "timedateVOH_data = pd.read_csv('C:\\Users\\waugh\\Dropbox\\Documents\\One_Health\\VS_Product_Analysis_dates.csv', parse_dates=True)\n", "timedateVOH_data.head()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TypeDraft ReviewSME Content ReviewPMD Content ReviewVID Design Work/EditsSubmitted to CRCCRC Review Complete
count81524862707569
unique3362931333321
topNewsletter6/1/20174/20/20167/11/20164/20/20168/29/20178/15/2016
freq41458689
\n", "
" ], "text/plain": [ " Type Draft Review SME Content Review PMD Content Review \\\n", "count 81 52 48 62 \n", "unique 3 36 29 31 \n", "top Newsletter 6/1/2017 4/20/2016 7/11/2016 \n", "freq 41 4 5 8 \n", "\n", " VID Design Work/Edits Submitted to CRC CRC Review Complete \n", "count 70 75 69 \n", "unique 33 33 21 \n", "top 4/20/2016 8/29/2017 8/15/2016 \n", "freq 6 8 9 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timedateVOH_data.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the dates we have on the csv file did not read into python as a datetime object. Without this, we're unable to determine the elapsed time for each column.\n", "\n", "Lets fix for the CRC columns at least so since the product wouldn't exist without CRC approval." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TypeDraft ReviewSME Content ReviewPMD Content ReviewVID Design Work/EditsSubmitted to CRCCRC Review CompleteCRCtime
0BrochureNaNNaN5/17/20165/23/20162016-06-012016-06-076 days
1BrochureNaNNaN5/17/20165/23/20162016-06-032016-06-1310 days
2BrochureNaNNaN5/17/201610/20/20162016-11-012016-12-2049 days
3BrochureNaNNaN7/5/20167/5/20162016-08-192016-09-0214 days
4Brochure5/9/20175/16/20176/6/20176/23/20172017-08-042017-10-1067 days
\n", "
" ], "text/plain": [ " Type Draft Review SME Content Review PMD Content Review \\\n", "0 Brochure NaN NaN 5/17/2016 \n", "1 Brochure NaN NaN 5/17/2016 \n", "2 Brochure NaN NaN 5/17/2016 \n", "3 Brochure NaN NaN 7/5/2016 \n", "4 Brochure 5/9/2017 5/16/2017 6/6/2017 \n", "\n", " VID Design Work/Edits Submitted to CRC CRC Review Complete CRCtime \n", "0 5/23/2016 2016-06-01 2016-06-07 6 days \n", "1 5/23/2016 2016-06-03 2016-06-13 10 days \n", "2 10/20/2016 2016-11-01 2016-12-20 49 days \n", "3 7/5/2016 2016-08-19 2016-09-02 14 days \n", "4 6/23/2017 2017-08-04 2017-10-10 67 days " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_clean = timedateVOH_data[pd.notnull(timedateVOH_data['Submitted to CRC '])]\n", "df_clean_1 = df_clean[pd.notnull(df_clean['CRC Review Complete'])]\n", "df_clean_1\n", "df_clean_2 = df_clean_1.copy()\n", "\n", "df_clean_2['CRC Review Complete'] = pd.to_datetime(df_clean_2['CRC Review Complete'], format = '%m/%d/%Y')\n", "df_clean_2['Submitted to CRC '] = pd.to_datetime(df_clean_2['Submitted to CRC '], format = '%m/%d/%Y')\n", "\n", "df_clean_2['CRCtime'] = df_clean_2['CRC Review Complete'] - df_clean_2['Submitted to CRC ']\n", "\n", "df_clean_2.head()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we finished the column, we now have the calculated the elapsed time!\n", "We see, however, that certain products don't have full processing times through all columns. \n", "This probably means that certain products may not need certain approvals. \n", "So from now on, let's go ahead and split the created data.frame by the two main One-Health Products (Newsletters and Brochures)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TypeDraft ReviewSME Content ReviewPMD Content ReviewVID Design Work/EditsSubmitted to CRCCRC Review CompleteCRCtimeVID_EdittimePMD_ReviewtimeSME_ReviewtimeDraft_Reviewtime
40Newsletter2016-04-132016-04-202016-04-202016-04-202016-04-282016-05-0911 days8 days0 days0 days7 days
41Newsletter2016-04-152016-04-202016-04-202016-04-202016-04-282016-05-0911 days8 days0 days0 days5 days
42Newsletter2016-04-152016-04-202016-04-202016-04-202016-04-282016-05-0911 days8 days0 days0 days5 days
43Newsletter2016-04-152016-04-202016-04-202016-04-202016-04-282016-05-0911 days8 days0 days0 days5 days
48Newsletter2016-05-172016-05-172016-05-172016-05-172016-06-032016-06-074 days17 days0 days0 days0 days
54Newsletter2016-07-012016-07-052016-07-112016-07-112016-07-222016-08-1524 days11 days0 days6 days4 days
56Newsletter2016-06-272016-06-272016-07-112016-07-112016-07-222016-08-1524 days11 days0 days14 days0 days
58Newsletter2016-11-172016-11-232016-11-282016-11-292017-01-272017-03-3062 days59 days1 days5 days6 days
59Newsletter2016-11-082016-11-232016-11-282016-11-292017-01-272017-03-3062 days59 days1 days5 days15 days
61Newsletter2017-02-252017-03-152017-03-152017-03-172017-03-172017-05-0852 days0 days2 days0 days18 days
62Newsletter2017-02-102017-03-132017-03-152017-03-202017-04-042017-06-0158 days15 days5 days2 days31 days
63Newsletter2017-02-102017-03-102017-03-132017-03-152017-04-042017-06-0158 days20 days2 days3 days28 days
64Newsletter2017-03-012017-03-162017-03-162017-03-202017-04-042017-06-0158 days15 days4 days0 days15 days
66Newsletter2017-06-012017-06-232017-06-292017-07-252017-08-292017-08-290 days35 days26 days6 days22 days
68Newsletter2017-06-012017-06-232017-06-282017-07-252017-08-292017-08-290 days35 days27 days5 days22 days
70Newsletter2016-07-012016-07-052016-07-112017-08-282017-08-292017-08-290 days1 days413 days6 days4 days
71Newsletter2016-06-072016-06-302016-07-112017-08-282017-08-292017-08-290 days1 days413 days11 days23 days
72Newsletter2016-06-272016-06-272016-07-112017-08-282017-08-292017-08-290 days1 days413 days14 days0 days
77Newsletter2018-08-152018-08-242018-08-242018-08-292018-08-302018-09-045 days1 days5 days0 days9 days
78Newsletter2018-08-192018-08-302018-08-292018-08-292018-08-302018-09-045 days1 days0 days-1 days11 days
79Newsletter2018-08-152018-08-242018-08-242018-08-292018-08-302018-09-045 days1 days5 days0 days9 days
80Newsletter2018-08-162018-08-232018-08-242018-08-292018-08-302018-09-045 days1 days5 days1 days7 days
\n", "
" ], "text/plain": [ " Type Draft Review SME Content Review PMD Content Review \\\n", "40 Newsletter 2016-04-13 2016-04-20 2016-04-20 \n", "41 Newsletter 2016-04-15 2016-04-20 2016-04-20 \n", "42 Newsletter 2016-04-15 2016-04-20 2016-04-20 \n", "43 Newsletter 2016-04-15 2016-04-20 2016-04-20 \n", "48 Newsletter 2016-05-17 2016-05-17 2016-05-17 \n", "54 Newsletter 2016-07-01 2016-07-05 2016-07-11 \n", "56 Newsletter 2016-06-27 2016-06-27 2016-07-11 \n", "58 Newsletter 2016-11-17 2016-11-23 2016-11-28 \n", "59 Newsletter 2016-11-08 2016-11-23 2016-11-28 \n", "61 Newsletter 2017-02-25 2017-03-15 2017-03-15 \n", "62 Newsletter 2017-02-10 2017-03-13 2017-03-15 \n", "63 Newsletter 2017-02-10 2017-03-10 2017-03-13 \n", "64 Newsletter 2017-03-01 2017-03-16 2017-03-16 \n", "66 Newsletter 2017-06-01 2017-06-23 2017-06-29 \n", "68 Newsletter 2017-06-01 2017-06-23 2017-06-28 \n", "70 Newsletter 2016-07-01 2016-07-05 2016-07-11 \n", "71 Newsletter 2016-06-07 2016-06-30 2016-07-11 \n", "72 Newsletter 2016-06-27 2016-06-27 2016-07-11 \n", "77 Newsletter 2018-08-15 2018-08-24 2018-08-24 \n", "78 Newsletter 2018-08-19 2018-08-30 2018-08-29 \n", "79 Newsletter 2018-08-15 2018-08-24 2018-08-24 \n", "80 Newsletter 2018-08-16 2018-08-23 2018-08-24 \n", "\n", " VID Design Work/Edits Submitted to CRC CRC Review Complete CRCtime \\\n", "40 2016-04-20 2016-04-28 2016-05-09 11 days \n", "41 2016-04-20 2016-04-28 2016-05-09 11 days \n", "42 2016-04-20 2016-04-28 2016-05-09 11 days \n", "43 2016-04-20 2016-04-28 2016-05-09 11 days \n", "48 2016-05-17 2016-06-03 2016-06-07 4 days \n", "54 2016-07-11 2016-07-22 2016-08-15 24 days \n", "56 2016-07-11 2016-07-22 2016-08-15 24 days \n", "58 2016-11-29 2017-01-27 2017-03-30 62 days \n", "59 2016-11-29 2017-01-27 2017-03-30 62 days \n", "61 2017-03-17 2017-03-17 2017-05-08 52 days \n", "62 2017-03-20 2017-04-04 2017-06-01 58 days \n", "63 2017-03-15 2017-04-04 2017-06-01 58 days \n", "64 2017-03-20 2017-04-04 2017-06-01 58 days \n", "66 2017-07-25 2017-08-29 2017-08-29 0 days \n", "68 2017-07-25 2017-08-29 2017-08-29 0 days \n", "70 2017-08-28 2017-08-29 2017-08-29 0 days \n", "71 2017-08-28 2017-08-29 2017-08-29 0 days \n", "72 2017-08-28 2017-08-29 2017-08-29 0 days \n", "77 2018-08-29 2018-08-30 2018-09-04 5 days \n", "78 2018-08-29 2018-08-30 2018-09-04 5 days \n", "79 2018-08-29 2018-08-30 2018-09-04 5 days \n", "80 2018-08-29 2018-08-30 2018-09-04 5 days \n", "\n", " VID_Edittime PMD_Reviewtime SME_Reviewtime Draft_Reviewtime \n", "40 8 days 0 days 0 days 7 days \n", "41 8 days 0 days 0 days 5 days \n", "42 8 days 0 days 0 days 5 days \n", "43 8 days 0 days 0 days 5 days \n", "48 17 days 0 days 0 days 0 days \n", "54 11 days 0 days 6 days 4 days \n", "56 11 days 0 days 14 days 0 days \n", "58 59 days 1 days 5 days 6 days \n", "59 59 days 1 days 5 days 15 days \n", "61 0 days 2 days 0 days 18 days \n", "62 15 days 5 days 2 days 31 days \n", "63 20 days 2 days 3 days 28 days \n", "64 15 days 4 days 0 days 15 days \n", "66 35 days 26 days 6 days 22 days \n", "68 35 days 27 days 5 days 22 days \n", "70 1 days 413 days 6 days 4 days \n", "71 1 days 413 days 11 days 23 days \n", "72 1 days 413 days 14 days 0 days \n", "77 1 days 5 days 0 days 9 days \n", "78 1 days 0 days -1 days 11 days \n", "79 1 days 5 days 0 days 9 days \n", "80 1 days 5 days 1 days 7 days " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Create the dataframe subset\n", "df_clean_2_News = df_clean_2.loc[df_clean_2['Type'] == 'Newsletter']\n", "df_clean_2_News.head()\n", "\n", "#Erase rows with NaN values\n", "df_clean_3_News = df_clean_2_News[pd.notnull(df_clean_2_News['VID Design Work/Edits'])]\n", "df_clean_4_News = df_clean_3_News[pd.notnull(df_clean_3_News['PMD Content Review'])]\n", "df_clean_5_News = df_clean_4_News[pd.notnull(df_clean_4_News['SME Content Review'])]\n", "df_clean_6_News = df_clean_5_News[pd.notnull(df_clean_5_News['Draft Review'])]\n", "\n", "#Cenvert strings to datetime objects\n", "df_clean_6_News['VID Design Work/Edits'] = pd.to_datetime(df_clean_6_News['VID Design Work/Edits'], format = '%m/%d/%Y')\n", "df_clean_6_News['PMD Content Review'] = pd.to_datetime(df_clean_6_News['PMD Content Review'], format = '%m/%d/%Y')\n", "df_clean_6_News['SME Content Review'] = pd.to_datetime(df_clean_6_News['SME Content Review'], format = '%m/%d/%Y')\n", "df_clean_6_News['Draft Review'] = pd.to_datetime(df_clean_6_News['Draft Review'], format = '%m/%d/%Y')\n", "\n", "df_clean_6_News.head()\n", "\n", "#Create the elapsed time columns\n", "df_clean_6_News['VID_Edittime'] = df_clean_6_News['Submitted to CRC '] - df_clean_6_News['VID Design Work/Edits']\n", "df_clean_6_News['PMD_Reviewtime'] = df_clean_6_News['VID Design Work/Edits'] - df_clean_6_News['PMD Content Review']\n", "df_clean_6_News['SME_Reviewtime'] = df_clean_6_News['PMD Content Review'] - df_clean_6_News['SME Content Review']\n", "df_clean_6_News['Draft_Reviewtime'] = df_clean_6_News['SME Content Review'] - df_clean_6_News['Draft Review']\n", "\n", "df_clean_7_News = df_clean_6_News.drop(df_clean_6_News[df_clean_6_News.PMD_Reviewtime == '-10 days'].index)\n", "df_clean_8_News = df_clean_7_News.drop(df_clean_7_News[df_clean_7_News.PMD_Reviewtime == '-6 days'].index)\n", "#df_clean_6_News['PMD_Reviewtime'].total_seconds()\n", "\n", "#Good to go!\n", "df_clean_8_News" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets take a look at the summary data....." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CRCtimeVID_EdittimePMD_ReviewtimeSME_ReviewtimeDraft_Reviewtime
count2222222222
mean21 days 04:21:49.09090914 days 08:43:38.18181860 days 02:10:54.5454543 days 12:00:0011 days 04:21:49.090909
std24 days 06:22:33.47901917 days 14:47:37.238031143 days 17:24:49.0944714 days 14:02:38.9291469 days 05:32:01.438379
min0 days 00:00:000 days 00:00:000 days 00:00:00-1 days +00:00:000 days 00:00:00
25%4 days 06:00:001 days 00:00:000 days 00:00:000 days 00:00:005 days 00:00:00
50%11 days 00:00:008 days 00:00:002 days 00:00:001 days 12:00:008 days 00:00:00
75%45 days 00:00:0016 days 12:00:005 days 00:00:005 days 18:00:0017 days 06:00:00
max62 days 00:00:0059 days 00:00:00413 days 00:00:0014 days 00:00:0031 days 00:00:00
\n", "
" ], "text/plain": [ " CRCtime VID_Edittime \\\n", "count 22 22 \n", "mean 21 days 04:21:49.090909 14 days 08:43:38.181818 \n", "std 24 days 06:22:33.479019 17 days 14:47:37.238031 \n", "min 0 days 00:00:00 0 days 00:00:00 \n", "25% 4 days 06:00:00 1 days 00:00:00 \n", "50% 11 days 00:00:00 8 days 00:00:00 \n", "75% 45 days 00:00:00 16 days 12:00:00 \n", "max 62 days 00:00:00 59 days 00:00:00 \n", "\n", " PMD_Reviewtime SME_Reviewtime \\\n", "count 22 22 \n", "mean 60 days 02:10:54.545454 3 days 12:00:00 \n", "std 143 days 17:24:49.094471 4 days 14:02:38.929146 \n", "min 0 days 00:00:00 -1 days +00:00:00 \n", "25% 0 days 00:00:00 0 days 00:00:00 \n", "50% 2 days 00:00:00 1 days 12:00:00 \n", "75% 5 days 00:00:00 5 days 18:00:00 \n", "max 413 days 00:00:00 14 days 00:00:00 \n", "\n", " Draft_Reviewtime \n", "count 22 \n", "mean 11 days 04:21:49.090909 \n", "std 9 days 05:32:01.438379 \n", "min 0 days 00:00:00 \n", "25% 5 days 00:00:00 \n", "50% 8 days 00:00:00 \n", "75% 17 days 06:00:00 \n", "max 31 days 00:00:00 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_clean_8_News.describe()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11 days 00:00:00\n", "8 days 00:00:00\n", "2 days 00:00:00\n", "1 days 12:00:00\n", "8 days 00:00:00\n" ] } ], "source": [ "print(df_clean_8_News.CRCtime.median())\n", "print(df_clean_8_News.VID_Edittime.median())\n", "print(df_clean_8_News.PMD_Reviewtime.median())\n", "print(df_clean_8_News.SME_Reviewtime.median())\n", "print(df_clean_8_News.Draft_Reviewtime.median())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yikes, we have some weird data that led to some negative elapsed times. \n", "We could do one of three things:\n", "- Delete the records (rows) with the offending dates.\n", "- Delete the PMD_Reviewtime column and analyze the other criteria.\n", "- Leave the data unedited and ask MAJ Watkins about the dates.\n", "Let's go ahead and do the other products.\n", "\n", "This type of discrepancy also demonstrates the lack of an effective way of recording data. In order to effectively produce an analysis and report of any substance, our data must be reliable.
\n", "\n", "A recommendation for the future is that an accurate working document MUST be established in order to produce reliable production time data and reports.
\n", "\n", "For this analysis, I've decided to delete the offending products with a negative elapsed time." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TypeDraft ReviewSME Content ReviewPMD Content ReviewVID Design Work/EditsSubmitted to CRCCRC Review CompleteCRCtimeVID_EdittimePMD_ReviewtimeSME_ReviewtimeDraft_Reviewtime
4Brochure2017-05-092017-05-162017-06-062017-06-232017-08-042017-10-1067 days42 days17 days21 days7 days
7Brochure2016-11-232016-12-012016-12-022016-12-062017-01-302017-03-3059 days55 days4 days1 days8 days
9Brochure2016-12-072017-02-092017-02-102017-05-172017-06-062017-06-3024 days20 days96 days1 days64 days
10Brochure2016-12-092017-01-262017-01-272017-01-302017-02-022017-03-3056 days3 days3 days1 days48 days
11Brochure2016-09-062016-09-092016-09-092016-09-102016-11-292017-01-0234 days80 days1 days0 days3 days
13Brochure2017-03-012017-03-102017-03-132017-04-102017-06-052017-06-2722 days56 days28 days3 days9 days
\n", "
" ], "text/plain": [ " Type Draft Review SME Content Review PMD Content Review \\\n", "4 Brochure 2017-05-09 2017-05-16 2017-06-06 \n", "7 Brochure 2016-11-23 2016-12-01 2016-12-02 \n", "9 Brochure 2016-12-07 2017-02-09 2017-02-10 \n", "10 Brochure 2016-12-09 2017-01-26 2017-01-27 \n", "11 Brochure 2016-09-06 2016-09-09 2016-09-09 \n", "13 Brochure 2017-03-01 2017-03-10 2017-03-13 \n", "\n", " VID Design Work/Edits Submitted to CRC CRC Review Complete CRCtime \\\n", "4 2017-06-23 2017-08-04 2017-10-10 67 days \n", "7 2016-12-06 2017-01-30 2017-03-30 59 days \n", "9 2017-05-17 2017-06-06 2017-06-30 24 days \n", "10 2017-01-30 2017-02-02 2017-03-30 56 days \n", "11 2016-09-10 2016-11-29 2017-01-02 34 days \n", "13 2017-04-10 2017-06-05 2017-06-27 22 days \n", "\n", " VID_Edittime PMD_Reviewtime SME_Reviewtime Draft_Reviewtime \n", "4 42 days 17 days 21 days 7 days \n", "7 55 days 4 days 1 days 8 days \n", "9 20 days 96 days 1 days 64 days \n", "10 3 days 3 days 1 days 48 days \n", "11 80 days 1 days 0 days 3 days \n", "13 56 days 28 days 3 days 9 days " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Create the dataframe subset\n", "df_clean_2_1 = df_clean_2.copy()\n", "df_clean_2_bro = df_clean_2_1.loc[df_clean_2['Type'] == 'Brochure']\n", "df_clean_2_bro.head()\n", "pd.options.mode.chained_assignment = None\n", "\n", "#Erase rows with NaN values\n", "df_clean_3_bro = df_clean_2_bro[pd.notnull(df_clean_2_bro['VID Design Work/Edits'])]\n", "df_clean_4_bro = df_clean_3_bro[pd.notnull(df_clean_3_bro['PMD Content Review'])]\n", "df_clean_5_bro = df_clean_4_bro[pd.notnull(df_clean_4_bro['SME Content Review'])]\n", "df_clean_6_bro = df_clean_5_bro[pd.notnull(df_clean_5_bro['Draft Review'])]\n", "\n", "#Cenvert strings to datetime objects\n", "df_clean_6_bro['VID Design Work/Edits'] = pd.to_datetime(df_clean_6_bro['VID Design Work/Edits'], format = '%m/%d/%Y')\n", "df_clean_6_bro['PMD Content Review'] = pd.to_datetime(df_clean_6_bro['PMD Content Review'], format = '%m/%d/%Y')\n", "df_clean_6_bro['SME Content Review'] = pd.to_datetime(df_clean_6_bro['SME Content Review'], format = '%m/%d/%Y')\n", "df_clean_6_bro['Draft Review'] = pd.to_datetime(df_clean_6_bro['Draft Review'], format = '%m/%d/%Y')\n", "\n", "df_clean_6_News.head()\n", "\n", "#Create the elapsed time columns\n", "df_clean_6_bro['VID_Edittime'] = df_clean_6_bro['Submitted to CRC '] - df_clean_6_bro['VID Design Work/Edits']\n", "df_clean_6_bro['PMD_Reviewtime'] = df_clean_6_bro['VID Design Work/Edits'] - df_clean_6_bro['PMD Content Review']\n", "df_clean_6_bro['SME_Reviewtime'] = df_clean_6_bro['PMD Content Review'] - df_clean_6_bro['SME Content Review']\n", "df_clean_6_bro['Draft_Reviewtime'] = df_clean_6_bro['SME Content Review'] - df_clean_6_bro['Draft Review']\n", "\n", "#Good to go!\n", "df_clean_6_bro" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CRCtimeVID_EdittimePMD_ReviewtimeSME_ReviewtimeDraft_Reviewtime
count66666
mean43 days 16:00:0042 days 16:00:0024 days 20:00:004 days 12:00:0023 days 04:00:00
std19 days 09:32:32.15206127 days 14:37:12.91165336 days 08:56:33.3952708 days 03:25:10.37519026 days 00:15:41.341229
min22 days 00:00:003 days 00:00:001 days 00:00:000 days 00:00:003 days 00:00:00
25%26 days 12:00:0025 days 12:00:003 days 06:00:001 days 00:00:007 days 06:00:00
50%45 days 00:00:0048 days 12:00:0010 days 12:00:001 days 00:00:008 days 12:00:00
75%58 days 06:00:0055 days 18:00:0025 days 06:00:002 days 12:00:0038 days 06:00:00
max67 days 00:00:0080 days 00:00:0096 days 00:00:0021 days 00:00:0064 days 00:00:00
\n", "
" ], "text/plain": [ " CRCtime VID_Edittime \\\n", "count 6 6 \n", "mean 43 days 16:00:00 42 days 16:00:00 \n", "std 19 days 09:32:32.152061 27 days 14:37:12.911653 \n", "min 22 days 00:00:00 3 days 00:00:00 \n", "25% 26 days 12:00:00 25 days 12:00:00 \n", "50% 45 days 00:00:00 48 days 12:00:00 \n", "75% 58 days 06:00:00 55 days 18:00:00 \n", "max 67 days 00:00:00 80 days 00:00:00 \n", "\n", " PMD_Reviewtime SME_Reviewtime \\\n", "count 6 6 \n", "mean 24 days 20:00:00 4 days 12:00:00 \n", "std 36 days 08:56:33.395270 8 days 03:25:10.375190 \n", "min 1 days 00:00:00 0 days 00:00:00 \n", "25% 3 days 06:00:00 1 days 00:00:00 \n", "50% 10 days 12:00:00 1 days 00:00:00 \n", "75% 25 days 06:00:00 2 days 12:00:00 \n", "max 96 days 00:00:00 21 days 00:00:00 \n", "\n", " Draft_Reviewtime \n", "count 6 \n", "mean 23 days 04:00:00 \n", "std 26 days 00:15:41.341229 \n", "min 3 days 00:00:00 \n", "25% 7 days 06:00:00 \n", "50% 8 days 12:00:00 \n", "75% 38 days 06:00:00 \n", "max 64 days 00:00:00 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_clean_6_bro.describe()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "45 days 00:00:00\n", "48 days 12:00:00\n", "10 days 12:00:00\n", "1 days 00:00:00\n", "8 days 12:00:00\n" ] } ], "source": [ "print(df_clean_6_bro.CRCtime.median())\n", "print(df_clean_6_bro.VID_Edittime.median())\n", "print(df_clean_6_bro.PMD_Reviewtime.median())\n", "print(df_clean_6_bro.SME_Reviewtime.median())\n", "print(df_clean_6_bro.Draft_Reviewtime.median())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Plots and Figures


\n", "Now lets go ahead and produce some figures to visualize our data and demonstrate which production stage takes the most and least amount of time.
\n", "First let's take a look at the brochure products..." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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2XTu3DnNmDHDvk0y153Toahvv/1WjRo1kr+/vwICAtSyZcssh+YyD7ts27ZNjz/+uAIDAxUaGqrevXsrMTHRqe3sjOwORTVt2lS1atXSunXrFBUVJT8/P1WoUEHTpk2TJC1evFj16tWTv7+/IiMjtWTJkizrdWYfz62mtLS0bD/zshMYGCjJ7KXIlF/7WW77xJXee+89RUREqFixYmrUqJHWr1/vMN/Z993V9oekpCQNHDhQERER8vb21q233qqYmBidO3fOYb3e3t7q0qWLPv74Yxk32Hdle7q7AKvq3bu3xowZo6lTp2r8+PH29u3bt2vDhg0aPHiwPDw8JEmNGjWSJD355JMaOnSoGjdurODgYKefKzU1VcuWLVO/fv0c2n/66SelpaWpffv2OT62ffv2Gjp0qGJjY9WxY0d7+x9//KEBAwZo8ODBCg0N1f/93/8pOjpalSpV0r333ivJDDV33nmnihQpomHDhum2227TunXr9NZbb2nv3r32D7KrMQwj2yCUnp6epW379u2KiopSuXLl9N///lelS5fW0qVL9cILL+jEiRMaPny4JPMPysmTJzVw4EDdeuut9m3UoUMHTZs2TU8++WS2tdSrV0/Tpk1Tr1699Nprr6lt27aSpLJly9qXuXjxoh566CFFR0drwIABWr16td58800FBgZq2LBhDutr2rSphgwZotOnT+uWW25xantcLvODNDMUZBoyZIgaNWqkyZMnq0iRIipVqpR27typqKgolSpVSh9++KGCg4M1a9Ys9ezZU0ePHtWgQYMkSUePHlWTJk3k5eWliRMnKjQ0VLNnz9bzzz/vcn2Zzpw5o3vuuUd79+7VK6+8ooYNG+rs2bNavXq1jhw5oqioKC1ZskQPPPCAoqOj9dRTT2X7uq5lm3z44YeqUqWK3n33XRUvXlyVK1fW8ePHFRUVpdTUVL355puqUKGCvvvuOw0cOFC7d+/WxIkTJUnnz59XixYtdPjwYY0ePVpVqlTR4sWLnf7jmJ20tDS1bt1aP//8s2JiYnTfffcpLS1N69ev1/79+xUVFaV169bpvvvuU7NmzfT6669LkooXL57jOj///HN169ZNrVq10pw5c5SSkqJx48apadOmWr58ue655x6H5Tt27KguXbooOjpaW7Zs0ZAhQyQp239S8lN8fLx69eqlQYMGqWzZspowYYJ69+6tAwcO6KuvvtLQoUMVGBioN954Q+3bt9e///6rsLAwSc7v4zlZvHix6tatm+P+lp6errS0NGVkZGj//v167bXX5OPjo06dOmVZ9lr2s6vtE9WqVbM/z0cffaRq1arZx7S8/vrratOmjfbs2WMPXq7Kbn9ITk5WkyZNdPDgQQ0dOlS1a9fWtm3bNGzYMG3ZskXLli2zj5+SzM+vSZMmaevWrYqMjMxTHW7h7i4jK2vSpIkREhJipKam2tsGDBhgSDL+/vtvh2XfeOMNw9vb25BkSDIiIiKMPn36GH/88cdVn+fXX3/N9nDTmDFjDEnGkiVLcnzs+fPnDUlG69at7W3ly5c3fH19jX379jksFxQUZDzzzDP2tmeeecYoVqyYw3KGYRjvvvuuIcnYtm3bVWsvX768/TXnNF1+GOD+++83ypYtayQmJjqs5/nnnzd8fX2NkydPZvs8aWlpxsWLF43o6Gijbt26WWpw5VCUJOOLL75waG/Tpo1RtWrVLMvHxsYakowffvgh1+2QeRho3rx5xsWLF43k5GRj9erVRqVKlQwPDw/7+yBzuXvvvTfLOh577DHDx8fH2L9/v0N769atDX9/f+P06dOGYRjGK6+8YthsNmPz5s0Oy7Vs2TLLoagrt02mJk2aGE2aNLHff+ONNwxJRmxsbI6vMa+HosaOHWtcvHjRuHDhghEXF2fccccdhiRj8eLFDsvddtttDvuaYRjG4MGDDUnGr7/+6tD+7LPPGjabzdi5c6dhGJcOD3/zzTcOy/3nP//J8l648rVn6tGjh1G+fHn7/ZkzZxqSjE8++STX15nToagrDw2mp6cbYWFhRmRkpMPh6TNnzhilSpUyoqKi7G2Zh13GjRvnsM7nnnvO8PX1NTIyMnKt6XK5HYqaNm2aIcnYs2ePva1JkyaGJGPjxo32toSEBMPDw8Pw8/MzDh06ZG/fvHmzIcn48MMP7W153ccz+fv7G3369MnSnrlNrpyKFy9uLFiwwGHZ/NjPnNknMt+7kZGRDsMBNmzYYEgy5syZY29z9n2X2/4wevRoo0iRIsZvv/3m0P7VV18Zkozvv//eoX3Xrl2GJGPSpEk5vobCiENRBSg6OlonTpzQt99+K8n8D27WrFlq3LixKleu7LDs66+/rv3792vq1Kl65plnVKxYMU2ePFn169fXnDlzcn2ew4cPS5JKlSqV51ovT+mSVKdOHZUrV85+39fXV1WqVHE44+q7775Ts2bNFBYWprS0NPuUeYht1apVki79h5Q5XXkI4J577tFvv/2WZZo5c6bDchcuXNDy5cv1yCOPyN/f32Gdbdq00YULFxy6b7/88kvdfffdKlasmDw9PeXl5aVPP/30ms8ystlsevDBBx3aateuneVsNOnS78TZwb9dunSRl5eX/P39de+99yo9PV1fffWVateu7bDc5b1rmVasWKHmzZsrPDzcob1nz55KTk62H6746aefVLNmTd1+++0Oy3Xt2tWpGrPzww8/qEqVKmrRokWe15GTV155RV5eXvL19VX9+vW1f/9+TZkyRW3atHFY7qGHHnI4nCCZ26RGjRq68847Hdp79uwpwzC0YsUKSeY2CQgI0EMPPeSw3LVuE19fX/Xu3TvP67jczp07dfjwYXXv3t3h8HSxYsXUsWNHrV+/XsnJyQ6PufL11K5dWxcuXNCxY8fypaaclClTRvXr17ffDwoKUqlSpVSnTh17z4wkVa9eXdKlw4qu7uNXOn36tJKTk3P9LFy2bJl+++03bdiwQd99951atGihxx57TAsXLsyy7LXsZ67sE23btrX34Euy7+/ZfaY4K7v94bvvvlOtWrVUp04dh217//33Z3vY09XPr8KCQ1EFqFOnTurXr5+mTZumjh076vvvv9fRo0c1duzYbJcPDQ1Vr1691KtXL0nS6tWr1bp1a7344ot6/PHHc3ye8+fPSzLDx+Uyg8mePXtyfGzmvCt30uwOhfn4+NifSzIPaSxatCjLzpPpxIkTkqTmzZvbQ44k9ejRw+H02cDAQDVo0CDHGjMlJCQoLS1NEyZM0IQJE3J9zgULFqhz58569NFH9fLLL6t06dLy9PTUpEmTrrkb3t/fP8u29vHx0YULF7Ism7nc5dstN2PHjtV9990nDw8PhYSEZPm9ZMpuPFZCQkK27Zl/SDLHciUkJCgiIiLLcqVLl3aqxuwcP37cIQjnpxdffFFPPPGEihQpoltuuUURERFZgriU8za5ctyLlP02CQ0NzbLctW6TsLAwp8bIOSO3sXhhYWHKyMjQqVOn5O/vb2+/cj/28fGR5Pz7Ma+CgoKytHl7e2dp9/b2liT7vuPKPp6dnD4LL3f77bcrJCTEfr9169aKjIxU37599cgjjzgsey37mSv7REH8nrKr8ejRo/rnn3+u+pmdydXPr8KCYFOA/Pz89Pjjj+uTTz7RkSNHNHXqVAUEBOjRRx916vH33nuvWrVqpa+//lrHjh3L8b+QzJ305MmTDu3NmjWTp6envv76a/Xp0yfbx2YOGm7ZsqWzL8vheWvXrq2333472/mZO/qUKVMcBqZe/qHiihIlSsjDw0Pdu3dX3759s10m8w/2rFmzFBERoXnz5jn8EbxygG9By/ydOPuaK1as6FTIy+4Pe3BwsI4cOZKlPbNHL7OG4ODgbAfFZtfm6+ub7TY7ceKEw2sqWbKkDh48eNW686Js2bLXZZts2LAhy3I5bZPsBuBe+UehZMmSWrNmjTIyMvIl3GT+8cvp9RQpUkQlSpS45udxJ1f28exkbqMrPwtzU6RIEdWsWVNffvllls/Za3lP5fc+4ez7LlN2tYeEhMjPzy/Hf+6u/Jxy9fOrsOBQVAGLjo5Wenq63nnnHX3//fd67LHHHP6jkswUfeXhGck8hLNr1y75+/vnOvA0szt39+7dDu2lS5dW7969tXTpUs2bNy/L4/7++2+NHTtWNWvWzHWAcU7atWunrVu36rbbblODBg2yTJnBpmrVqg7t2f0H7Qx/f3/79Utq166d7XNmfrDZbDZ5e3s77Nzx8fFXPStKyt//av/9919JUo0aNa55XVfTvHlzrVixwv4Bm2nmzJny9/e3n03UrFkzbdu2TX/88YfDctldd6lChQpZLhD5999/Z7n2UevWrfX333/bD+1k53r1FlyuefPm2r59e5ZrlMycOVM2m03NmjWTZG6TM2fO2A8bZ8ppm/z9998OgS8hIcF+plOm1q1b68KFC1e9uN+VPaE5qVq1qm699VZ9/vnnDmepnDt3TvPnz7efKXUjc2Ufz463t7cqVqyY5bMwN+np6dqyZYt8fHxyHbidydn9zJl9whXOvu9y065dO+3evVvBwcHZbtsrP5uv5+dXfqLHpoA1aNBAtWvX1vvvvy/DMBQdHZ1lmc8++0xTpkxR165ddccddygwMFAHDx7U//3f/9lHrGd22WanbNmyqlixotavX68XXnjBYd57772nnTt36oknntDq1av14IMPysfHR+vXr9e7776rgIAAzZ8/3+H4rrPeeOMNxcbGKioqSi+88IKqVq2qCxcuaO/evfr+++81efJkh7OJ8sMHH3yge+65R40bN9azzz6rChUq6MyZM/rnn3+0aNEi+4dIu3bttGDBAj333HPq1KmTDhw4oDfffFNlypTRrl27cn2O2267TX5+fpo9e7aqV6+uYsWKKSwszGFsgLPWr1+v4ODg63JGwfDhw+3jnoYNG6agoCDNnj1bixcv1rhx4+xnV8TExGjq1Klq27at3nrrLftZUdmdgtq9e3c98cQTeu6559SxY0ft27dP48aNy3JGUkxMjObNm6eHH35YgwcP1p133qnz589r1apVateunZo1a6aAgACVL19e33zzjZo3b66goCCFhITkOeg6o3///po5c6batm2rN954Q+XLl9fixYs1ceJEPfvss6pSpYok84zE8ePH68knn9Tbb7+typUr6/vvv9fSpUuz3SZTpkzRE088of/85z9KSEjQuHHjsvxRfPzxxzVt2jT16dNHO3fuVLNmzZSRkaFff/1V1atX12OPPSZJioyM1MqVK7Vo0SKVKVNGAQEBDpdtyFSkSBGNGzdO3bp1U7t27fTMM88oJSVF77zzjk6fPq0xY8YUwBa8/pzdx3PStGlT/fDDDznOj4uLs+8LR48e1dSpU7Vjxw71798/10NYmVzZz662T7jC2fddbmJiYjR//nzde++96t+/v2rXrm0/O+zHH3/UgAED1LBhQ/vy69evl4eHh/1M2BuGmwcv3xQ++OADQ5JRo0aNbOdv377dGDBggNGgQQOjZMmShqenp1GiRAmjSZMmxmeffebUc7z++utGiRIlsr0IU2pqqvHRRx8ZDRs2NIoVK2b4+PgYVatWNQYNGmScOHEiy/I5nQWR3aj848ePGy+88IIRERFheHl5GUFBQUb9+vWNV1991Th79uxV687LBfr27Nlj9O7d27j11lsNLy8vo2TJkkZUVFSWi9iNGTPGqFChguHj42NUr17d+OSTT+xnRlxZw5VnpcyZM8eoVq2a4eXl5XAmT04X6MtuvRkZGUb58uWNfv36XXU75HSBPleX27Jli/Hggw8agYGBhre3t3H77bdne3bX9u3bjZYtWxq+vr5GUFCQER0dbXzzzTdZzorKyMgwxo0bZ1SsWNHw9fU1GjRoYKxYsSLb98KpU6eMF1980ShXrpzh5eVllCpVymjbtq3DRSOXLVtm1K1b1/Dx8TEk5XphOmcvXna15fbt22d07drVCA4ONry8vIyqVasa77zz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AABYBsEGAABYBsEGAABYBsEGAABYBsEGAABYRqEJNqNHj5bNZlNMTIy9LSUlRf369VNISIiKFi2qhx56SAcPHnRjlQAAoDArFMHmt99+08cff6zatWs7tMfExGjhwoWaO3eu1qxZo7Nnz6pdu3ZKT093U6UAAKAwc3uwOXv2rLp166ZPPvlEJUqUsLcnJibq008/1X//+1+1aNFCdevW1axZs7RlyxYtW7bMjRUDAIDCyu3Bpm/fvmrbtq1atGjh0B4XF6eLFy+qVatW9rawsDDVqlVLa9euzXF9KSkpSkpKcpgAAMDNwdOdTz537lzFxcVp48aNWebFx8fL29vboRdHkkJDQxUfH5/jOkePHq2RI0fme60AAKDwc1uPzYEDB/Tiiy9q9uzZ8vX1dfpxhmHIZrPlOH/IkCFKTEy0TwcOHMiPcgEAwA3AbcEmLi5Ox44dU/369eXp6SlPT0+tWrVKH374oTw9PRUaGqrU1FSdOnXK4XHHjh1TaGhojuv18fFR8eLFHSYAAHBzcFuwad68ubZs2aLNmzfbpwYNGqhbt272215eXoqNjbU/5siRI9q6dauioqLcVTYAACjE3DbGJiAgQLVq1XJoK1q0qIKDg+3t0dHRGjBggIKDgxUUFKSBAwcqMjIyy0BjAAAAyc2Dh69m/Pjx8vT0VOfOnXX+/Hk1b95c06dPl4eHh7tLAwAAhVChCjYrV650uO/r66sJEyZowoQJ7ikIAADcUNx+HRsAAID8QrABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACWQbABAACW4enqA1JSUrRhwwbt3btXycnJKlmypOrWrauIiIiCqA8AAMBpTgebtWvXasKECfr666+VmpqqW265RX5+fjp58qRSUlJUsWJFPf300+rTp48CAgIKsmYAAIBsOXUo6uGHH1anTp106623aunSpTpz5owSEhJ08OBBJScna9euXXrttde0fPlyValSRbGxsQVdNwAAQBZO9di0atVKX375pby9vbOdX7FiRVWsWFE9evTQtm3bdPjw4XwtEgAAwBlOBZu+ffs6vcKaNWuqZs2aeS4IAAAgr1wePJwpNTVVx44dU0ZGhkN7uXLlrrkoAACAvHA52OzatUu9e/fW2rVrHdoNw5DNZlN6enq+FQcAAOAKl4NNz5495enpqe+++05lypSRzWYriLoAAABc5nKw2bx5s+Li4lStWrWCqAcAACDPXL7ycI0aNXTixImCqAUAAOCauBxsxo4dq0GDBmnlypVKSEhQUlKSwwQAAOAuLh+KatGihSSpefPmDu0MHgYAAO7mcrD56aef8u3JJ02apEmTJmnv3r2SzGvgDBs2TK1bt5Zkfi/VwIEDNWfOHJ0/f17NmzfXxIkTVbZs2XyrAQAAWIfLwaZJkyb59uRly5bVmDFjVKlSJUnSjBkz9PDDD+v3339XzZo1FRMTo0WLFmnu3LkKDg7WgAED1K5dO8XFxcnDwyPf6gAAANaQ5wv0JScna//+/UpNTXVor127ttPrePDBBx3uv/3225o0aZLWr1+vsmXL6tNPP9Vnn31mP/w1a9YshYeHa9myZbr//vvzWjoAALAol4PN8ePH1atXL/3www/Zzs/rGJv09HR9+eWXOnfunBo1aqS4uDhdvHhRrVq1si8TFhamWrVqae3atTkGm5SUFKWkpNjvM6AZAICbh8tnRcXExOjUqVNav369/Pz8tGTJEs2YMUOVK1fWt99+63IBW7ZsUbFixeTj46M+ffpo4cKFqlGjhuLj4+Xt7a0SJUo4LB8aGqr4+Pgc1zd69GgFBgbap/DwcJdrAgAANyaXe2xWrFihb775RnfccYeKFCmi8uXLq2XLlipevLhGjx6ttm3burS+qlWravPmzTp9+rTmz5+vHj16aNWqVTkun3n2VU6GDBmil156yX4/KSmJcAMAwE3C5WBz7tw5lSpVSpIUFBSk48ePq0qVKoqMjNSmTZtcLsDb29s+eLhBgwb67bff9MEHH6hLly5KTU3VqVOnHHptjh07pqioqBzX5+PjIx8f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AK4qz1+pEBwcrP79++uPP/7Qe++9p2XLlqlTp04KCwvTsGHDlJycnJ91AgAAXJXLg4czxcfHa+bMmZo2bZr279+vTp06KTo6WocPH9aYMWO0fv16/fjjj/lZKwAAQK5cDjYLFizQtGnTtHTpUtWoUUN9+/bVE088oVtuucW+TJ06dVS3bt18LRQAAOBqXA42vXr10mOPPaZffvlFd9xxR7bLVKxYUa+++uo1FwcAAOCKPH1XlL+/f67L+Pn5afjw4XkuCgAAIC9cDjaXh5rz58/r4sWLDvOLFy9+7VUBAADkgctnRZ07d07PP/+8SpUqpWLFiqlEiRIOEwAAgLu4HGwGDRqkFStWaOLEifLx8dH//d//aeTIkQoLC9PMmTMLokYAAACnuBxsFi1apIkTJ6pTp07y9PRU48aN9dprr2nUqFGaPXu2S+saPXq07rjjDgUEBKhUqVJq3769du7c6bBMSkqK+vXrp5CQEBUtWlQPPfSQDh486GrZAADgJuBysDl58qQiIiIkmeNpTp48KUm65557tHr1apfWtWrVKvXt21fr169XbGys0tLS1KpVK507d86+TExMjBYuXKi5c+dqzZo1Onv2rNq1a6f09HRXSwcAABbn8uDhihUrau/evSpfvrxq1KihL774QnfeeacWLVrkcC0bZyxZssTh/rRp01SqVCnFxcXp3nvvVWJioj799FN99tlnatGihSRp1qxZCg8P17Jly3T//fe7Wj4AALAwl3tsevXqpT/++EOSNGTIEPtYm/79++vll1++pmISExMlSUFBQZKkuLg4Xbx4Ua1atbIvExYWplq1amnt2rXZriMlJUVJSUkOEwAAuDm43GPTv39/++1mzZppx44d2rhxo2677TbdfvvteS7EMAy99NJLuueee1SrVi1J5tc2eHt7ZznbKjQ0VPHx8dmuZ/To0Ro5cmSe6wAAADeuPH9XVKZy5cqpXLly11zI888/rz///FNr1qy56rKGYchms2U7b8iQIXrppZfs95OSkhQeHn7N9QEAgMLPpWCTkZGh6dOna8GCBdq7d69sNpsiIiLUqVMnde/ePcewcTX9+vXTt99+q9WrV6ts2bL29tKlSys1NVWnTp1y6LU5duyYoqKisl2Xj4+PfHx88lQHAAC4sTk9xsYwDD300EN66qmndOjQIUVGRqpmzZrat2+fevbsqUceecTlJzcMQ88//7wWLFigFStW2M+2ylS/fn15eXkpNjbW3nbkyBFt3bo1x2ADAABuXk732EyfPl2rV6/W8uXL1axZM4d5K1asUPv27TVz5kw9+eSTTj9537599fnnn+ubb75RQECAfdxMYGCg/Pz8FBgYqOjoaA0YMEDBwcEKCgrSwIEDFRkZaT9LCgAAIJPTPTZz5szR0KFDs4QaSbrvvvs0ePBgly/QN2nSJCUmJqpp06YqU6aMfZo3b559mfHjx6t9+/bq3Lmz7r77bvn7+2vRokXy8PBw6bkAAID1Od1j8+eff2rcuHE5zm/durU+/PBDl57cMIyrLuPr66sJEyZowoQJLq0bAADcfJzusTl58qRCQ0NznB8aGqpTp07lS1EAAAB54XSwSU9Pl6dnzh08Hh4eSktLy5eiAAAA8sLpQ1GGYahnz545nkqdkpKSb0UBAADkhdPBpkePHlddxpUzogAAAPKb08Fm2rRpBVkHAADANXP5SzABAAAKK4INAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINAACwDIINgEJj9WqpTRupZEnJZjOnyZMdl7l4URo+XKpYUfL2lsqWlWJipDNnrr7+ChUurffy6YknCuTlAHADT3cXAACZNm2SYmPN0HLiRPbL9OghzZkjFSkiVa4s/fuv9MEH5mNXrjTbr6Z6dal48Uv3K1XKl/IBFAL02AAoNLp3l5KSpKVLs58fF2eGGskMMzt2SPPnm/d//llauNC555k4UVq//tI0YsQ1lw6gkCDYACg0goMlP7+c5y9Zcul2x47mz7ZtJV9f83ZOgehKHTuaj6lSRRo0yAxTAKyBYAPghnHgwKXbpUqZP4sUkUJCzNv79199HYGB5ricwEBp1y7pnXek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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt; plt.rcdefaults()\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "objects = ('CRC', 'VID', 'PMD Review', 'SME Review', 'Draft Review')\n", "y_pos = np.arange(len(objects))\n", "performance = [df_clean_6_bro.CRCtime.dt.days.median(),df_clean_6_bro.VID_Edittime.dt.days.median(),df_clean_6_bro.PMD_Reviewtime.dt.days.median(),df_clean_6_bro.SME_Reviewtime.dt.days.median(),df_clean_6_bro.Draft_Reviewtime.dt.days.median()]\n", "\n", "plt.bar(y_pos, performance, align='center', alpha=0.5)\n", "plt.xticks(y_pos, objects)\n", "plt.ylabel('Days (Median)')\n", "plt.title('VS (One-Health) Product Production Time (Brochure)')\n", "for i, v in enumerate(performance):\n", " plt.text(i-.15, v+1 , str(v), color='blue', fontweight='bold', va='center')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's take a look at the Newsletters..." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAGxCAYAAABx6/zIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XlcVPX+x/H3iDCAIgoKiilC7vvaopUQ7kub3hbNXKg0l3LLJUvRzIUs7dZ16/7cyq2ue6bmbqWWS1qZmZWIqaS54Yoi5/fHPBgdGXAGQcbj6/l4nAdnvud7znzmMHN4c7axGIZhCAAAwATy5XUBAAAAOYVgAwAATINgAwAATINgAwAATINgAwAATINgAwAATINgAwAATINgAwAATINgAwAATINgk01PPvmk/Pz8dPr06Uz7tG/fXt7e3vr7778lSSdOnNDgwYNVuXJlFShQQIGBgapYsaI6dOigH3/80aXn/frrr2W1WnXw4EGH9itXrmjSpEl68MEHFRgYKD8/P1WqVEmDBg3SiRMnsv9Cc0CZMmXUqlUrp9O2b98ui8WiGTNm5HoNnTp1sj8+cuSI4uLitGvXrgx9O3XqpIIFC950madOnVLhwoW1ePFil2rYsGGDLBaLffDy8lJoaKj+9a9/ae/evS6/lluRXsOGDRtyZfkXLlxQXFycy8tPSEhwWCf58uVTcHCwWrRooS1btuRKjZnVkJvvwVGjRjl9n+T278OZG9+HWQ2SNGPGDFksFiUkJNy2Gl1x+vRpFS1aVPPmzbO3xcXFyWKxKCQkRGfPns0wT1bborxyK+t38+bNiouLc/p3aOLEibn2nnZ323e7EWyyKTY2VpcuXdKcOXOcTj9z5owWLVqkVq1aKTQ0VOfOndMDDzygGTNm6MUXX9TSpUs1e/Zsvfzyyzpw4IDTP7A3MgxDvXv31ksvvaTw8HB7+4ULF9S4cWP16tVLtWrV0ty5c/Xll1+qQ4cOmjp1qmrVqqV9+/bl2Gs3gyNHjmj48OEurffMFClSRH369NHrr7+uy5cvuzzfqFGjtGXLFq1fv14DBw7U6tWr1aBBAx0+fDjbtXiKCxcuaPjw4W7/oe7Vq5e2bNmir7/+WqNHj9bu3bsVHR2tH374IXcKvc0yCza1a9fWli1bVLt27dtWS/pzXj8UL15cDRo0yNAuSS1bttSWLVtUokSJ21ajK4YPH66wsDA988wzGaYdP35c8fHxeVDV7bV582YNHz78tgeb7G77bpf8eV3Anap58+YKCwvTtGnT1L179wzT586dq4sXLyo2NlaS9Pnnn+v333/XunXrFB0d7dC3b9++SktLu+lzrly5Ujt37swQpvr06aONGzdq3rx5Dh/y6OhotW3bVvfdd5/atGmj3bt3y8vLKzsvF5no1q2bRo4cqf/9739q166dS/OUK1dODzzwgCTpkUceUeHChRUbG6sZM2ZoyJAhTue5cuWKLBaL8uc350e2dOnS9nXSoEEDlS1bVjExMZo4caI+/vhjp/NcvXpVqampslqtt7PUHFWoUCH7687L57RarSpcuLDTWooVK6ZixYrdrvJccvLkSU2ZMkXjx4+371m6XrNmzTR+/Hj16NFDxYsXz4MKzckwDF26dEl+fn7Z2vbdLuyxySYvLy917NhRO3bs0E8//ZRh+vTp01WiRAk1b95ckuyHgzL7rydfvpv/KiZNmqR69eqpQoUK9rakpCRNmzZNTZs2dfqfS/ny5TVw4EDt2bPH4T/G9F2yK1euVO3ateXn56eKFStq2rRpGZaRlJSkrl276p577pGPj48iIiI0fPhwpaam3rTm7Nq/f7/atWunkJAQWa1WVapUSf/5z38c+ly6dEn9+vVTzZo1FRgYqKCgID344INasmRJlsvesGGD6tWrJ0nq3Lmzfbd7XFycQ7/ff/9dLVq0UMGCBVWqVCn169dPKSkpDn1CQ0PVuHFjTZ48OduvNf2PSfrhxfRDBZ988on69eunkiVLymq16vfff5ck/fzzz3r88cdVpEgR+fr6qmbNmpo5c2aG5f76669q1qyZ/P39VbRoUXXr1i3T3fPXH6ZLFxUVpaioKIe206dPq1+/foqMjJTValVISIhatGihX3/9VQkJCfY/gMOHD7evV2fLdnedpB8uio+P18iRIxURESGr1ar169dLkhITE/X88887vF/ee++9DP8wHDlyRE8//bQCAgIUGBioZ555RklJSS69dsl2mLJMmTIObSkpKRoxYoQqVaokX19fBQcHKzo6Wps3b5YkWSwWnT9/XjNnzrSvk/RlZ3YoaunSpXrwwQfl7++vgIAANW7cOMOhufTDLnv27NFzzz2nwMBAhYaGqkuXLjpz5oxL69kVzg6VREVFqWrVqtqyZYvq168vPz8/lSlTRtOnT5ckLV++XLVr15a/v7+qVaumlStXZliuK5/xrGpKTU11us2TpJEjRyo1NTXDZ9qZy5cva+TIkapYsaKsVquKFSumzp076/jx4/Y+r7/+ugIDA3X16lV7W69evWSxWPTuu+/a206cOKF8+fLpww8/lCSlpaVp5MiRqlChgvz8/FS4cGFVr15dH3zwwU3rWrNmjWJiYlSoUCH5+/urQYMGWrt2rX16XFycXn/9dUlSRESE/b21YcMGlSlTRnv27NHGjRvt7de/b5OTk9W/f39FRETIx8dHJUuWVO/evXX+/HmHGiwWi3r27KnJkyerUqVKslqt9m1NTmz7cgvB5hZ06dJFFoslQxj45Zdf9P3336tjx472PSQPPvigJOmFF17Q4sWL3T7v5fLly1qzZk2GvT3r169XamqqnnjiiUznTZ+2evVqh/bdu3erX79+6tOnj5YsWaLq1asrNjZWmzZtsvdJSkrSfffdp1WrVmno0KFasWKFYmNjNXr0aL300ksu128YhlJTUzMM128o0v3yyy+qV6+efv75Z7333nv64osv1LJlS7366qsaPny4vV9KSopOnjyp/v37a/HixZo7d64eeughPfXUU5o1a1amtdSuXdu+AX7zzTftu91ffPFFe58rV67oscceU0xMjJYsWaIuXbpo/PjxGjt2bIblRUVF6dtvv83yfKuspAeWG/8rHjx4sBITEzV58mQtW7ZMISEh2rdvn+rXr689e/bo3//+txYuXKjKlSurU6dODrve//77bzVs2FA///yzJk6cqE8++UTnzp1Tz549s1WjJJ09e1YPPfSQpkyZos6dO2vZsmWaPHmyypcvr6NHj6pEiRL2P2CxsbH29frWW2/l2Dr597//rXXr1mncuHFasWKFKlasqOPHj6t+/fr66quv9Pbbb2vp0qVq1KiR+vfv7/B6L168qEaNGumrr77S6NGj9fnnn6t48eKZ/nF0RWpqqpo3b663335brVq10qJFizRjxgzVr19fiYmJkqQtW7bIz8/Pft7Qli1bNHHixEyXOWfOHD3++OMqVKiQ5s6dq//7v//TqVOnFBUVpW+++SZD/zZt2qh8+fJasGCBBg0apDlz5qhPnz7Zfk2uSkpKUufOnfXiiy9qyZIlqlatmrp06aIRI0Zo8ODBGjBg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6aKpU6dq/vz5GU6E/O233zR27FhVqVIlyxOMM9OqVSt9+eWXuvfee7PcoF5/pdat8Pf3t9+/pHr16vb/9pyxWCzy8fFx+OAlJSXd9KooKWf/q/3zzz8lSZUrV77lZd1MTEyMFi1apCNHjjjs7p81a5b8/f3tG8Lo6GjFx8dr9+7dDoejnN13qUyZMhluEPnbb79p3759Dhus5s2ba+jQoVq3bp0effRRp/Xdrr0F14uJidHo0aO1c+dOh/vBzJo1SxaLxX7CfXR0tD777DMtXbrU4fBNZuvk888/V0pKiv01nThxQps3b1ahQoXs/Zo3b665c+dqxowZWR6OunFPaGYqVKigkiVLas6cOerfv7/9vX3+/HktWLDAfqXUncydz7gzPj4+ioyMzLAtzEz6if+DBg3KcIi8VatWmjdvnq5evar7778/y+Xcd999KlSokCZMmKCkpCT7P4qNGjXS2LFj9dlnn6ly5coOn8vrFS5cWG3bttXhw4fVu3dvJSQkON1mNGjQQIULF9Yvv/xy05P9s/q8Zfaea9WqlUaNGqXg4OAsA6Qrbue2zx0EmxxQt25dVa9eXRMmTJBhGE4PQ33yySeaMmWK2rVrp3r16ikwMFB//fWX/vvf/2rPnj0aOnRolh/we+65R5GRkdq6dateffVVh2nvv/++9u3bp+eff16bNm1S69atZbVatXXrVo0bN04BAQFasGBBtu5hM2LECK1evVr169fXq6++qgoVKujSpUtKSEjQl19+qcmTJ+f44YkPPvhADz30kB5++GG98sorKlOmjM6ePavff/9dy5Yts58z0apVKy1cuFDdu3dX27ZtdejQIb399tsqUaKE9u/fn+Vz3HvvvfLz89Ps2bNVqVIlFSxYUGFhYZlulLKydetWBQcHq1q1atl6ve4YNmyY/bynoUOHKigoSLNnz9by5csVHx+vwMBASbZd8NOmTVPLli01cuRIhYaGavbs2fr1118zLLNDhw56/vnn1b17d7Vp00YHDx5UfHx8hiuSevfurfnz5+vxxx/XoEGDdN999+nixYvauHGjWrVqpejoaAUEBCg8PFxLlixRTEyMgoKCVLRo0QyXSOekPn36aNasWWrZsqVGjBih8PBwLV++XBMnTtQrr7yi8uXLS7JdkTh+/Hi98MILeuedd1SuXDl9+eWXWrVqldN1MmXKFD3//PN66aWXdOLECcXHxzuEGkl67rnnNH36dHXr1k379u1TdHS00tLS9N1336lSpUp69tlnJUnVqlXThg0btGzZMpUoUUIBAQFO/xnIly+f4uPj1b59e7Vq1Updu3ZVSkqK3n33XZ0+fVpjxozJhTV4+7n6Gc9MVFSUVqxY4dJzeXl5adSoUXryySclyeFctmeffVazZ89WixYt9Nprr+m+++6Tt7e3/vrrL61fv16PP/64fT4vLy81bNhQy5YtU0REhO69915JtiBitVq1du3aDNvm1q1bq2rVqqpbt66KFSumgwcPasKECQoPD89wDma6ggUL6sMPP1THjh118uRJtW3bViEhITp+/Lh2796t48ePa9KkSZJk3+Z88MEH6tixo7y9vVWhQgUFBASoWrVqmjdvnubPn6/IyEj5+vqqWrVq6t27txYsWKBHHnlEffr0UfXq1ZWWlqbExER99dVX6tev301DXrrbue1zS96eu2weH3zwgSHJqFy5stPpv/zyi9GvXz+jbt26RrFixYz8+fMbRYoUMRo2bGh88sknLj3HW2+9ZRQpUsR+Bv71Ll++bPznP/8x7r//fqNgwYKG1Wo1KlSoYAwYMMD4559/MvTP7CoIZ1eDHD9+3Hj11VeNiIgIw9vb2wgKCjLq1KljDBkyxDh37txN687qiovMrk46cOCA0aVLF6NkyZKGt7e3UaxYMaN+/frGyJEjHfqNGTPGKFOmjGG1Wo1KlSoZH3/8sf3KiBtruPGqlLlz5xoVK1Y0vL29Ha7k6dixo1GgQIEMtTpbblpamhEeHm706tXrpush/QqYzz///Jb6/fTTT0br1q2NwMBAw8fHx6hRo4bTq7t++eUXo3Hjxoavr68RFBRkxMbGGkuWLMlwVVRaWpoRHx9vREZGGr6+vkbdunWNdevWOX0vnDp1ynjttdeM0qVLG97e3kZISIjRsmVL49dff7X3WbNmjVGrVi3DarUakpxeDZQu/Wqnd999N8t1crN+Bw8eNNq1a2cEBwcb3t7eRoUKFYx3333X4coiw7BdzdKmTRujYMGCRkBAgNGmTRtj8+bNTt+DM2fONCpVqmT4+voalStXNubPn5/hqijDsF1NOHToUKNcuXKGj4+PERwcbDz66KPG5s2b7X127dplNGjQwPD39zck2dfrjVdFpVu8eLFx//33G76+vkaBAgWM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AABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADAABMg2ADZOL8eWnAAKl8ealAAalQIalaNWnUKOnq1aznnTNHql1b8vOTgoKktm2l/ftvT90A7hxsZ3Je/rwuAPBUPXpIM2faxitXls6dk37+WRoyRPL2ll5/3fl8U6dKXbvaxiMipBMnpAULpE2bpF27pLCw21M/AM/HdibnsccGyMQ339h+Nmki7dlj+08oIMDWdvCg83lSUqQ33rCNt2kj/fmntHevbb7jx6XRo3O/bgB3DrYzOY9gA2Ti4YdtP7/6SqpSRSpXTjp7VqpfXxo40Pk827fb/nOSbBscyfaf0wMP2MZXrcrdmgHcWdjO5DwORQGZmDxZSkuTZs2SfvnF1ubjI9WsKRUr5nyeQ4eujYeEXBsPDbX9TEzMnVoB3JnYzuQ89tgAmRg/XvrkE6lBA+nYMdtu4oAAaeJEadAg5/MYRtbtFkvu1ArgzsR2JucRbAAnLlyQ3nrLtqFo08b2n1PlyraNjyStWeN8vtKlr43//fe18WPHbD9LlcqdegHcedjO5A6PDjapqal68803FRERIT8/P0VGRmrEiBFKS0vL69JgchcuSKmptvEdO2w/L12y/Tcl2S7LlKSYGKliRWnwYNvjevWk4GDb+IIFtp+HD0tbttjGmzXL/doB3BnYzuQOjw42Y8eO1eTJk/XRRx9p7969io+P17vvvqsPP/wwr0uDyRUtKj3yiG189mzbCX1lykh//GFr69jR9vOPP6R9+6SjR22PfXxs95+QpIULpcjIa5dwFi2a+a5lAHcftjO5w6ODzZYtW/T444+rZcuWKlOmjNq2basmTZpo+/bteV0a7gKLF1+7cdaRI9Lly9L990uffip17575fC+/bOtTs6ZtPotFeuopafPmu/veEgAyYjuT8yyGkdlpSHlvzJgxmjx5sr766iuVL19eu3fvVpMmTTRhwgQ9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DdZ73mC95w3W+81ZDMPd66gAAAA8k0efYwMAAOAOgg0AADANgg0AADANgg0AADANgg0AXKdTp0564okn8rqMu8qMGTNMfyPVuLg4hYaGymKxaPHixXldTgYbNmyQxWLR6dOn87qUW0awuQMkJSWpV69eioyMlNVqValSpdS6dWutXbtWklSmTBlZLBZZLBb5+fmpYsWKevfdd51+cdiCBQsUFRWlwMBAFSxYUNWrV9eIESN08uTJ2/2yPF7r1q3VqFEjp9O2bNkii8WinTt3ymKxaNeuXZKkhIQE++/CYrEoICBAVapUUY8ePbR///7bWf4t69Spk/11eHt7KzIyUv3799f58+clXXut+fPn1+HDhx3mPXr0qPLnzy+LxaKEhASH/tldN9fPW7BgQdWoUUMzZszI6ZetDz74IFeW645jx46pa9euKl26tKxWq4oXL66mTZtqy8aW3uEAABNZSURBVJYt9j7pn/t58+ZlmL9KlSqyWCwOr+P67cT1w5gxYzKtIyoqyt7Px8dH9957rwYPHuzwRcM54ZlnntFvv/2Wo8t01Y3v89DQUDVu3FjTpk1TWlpajjzH3r17NXz4cE2ZMkVHjx5V8+bNXQ7Q19eXP39+lS5dWq+88opOnTqVI7Wlq1+/vo4ePZqtO/16GoKNh0tISFCdOnW0bt06xcfH66efftLKlSsVHR2tHj162PuNGDFCR48e1d69e9W/f3+98cYbmjp1qsOyhgwZomeeeUb16tXTihUr9PPPP+u9997T7t279cknn9zul+bxYmNjtW7dOh08eDDDtGnTpqlmzZoKCgpyOu+aNWt09OhR7d69W6NGjdLevXtVo0YNexi9UzRr1kxHjx7Vn3/+qZEjR2rixInq37+/Q5+wsDDNmjXLoW3mzJkqWbKk02XeyrqZPn26fd5nnnlGnTt31qpVq7L/Ap0IDAzM870Hbdq00e7duzVz5kz99ttvWrp0qaKiojL8A1KqVClNnz7doW3r1q1KSkpSgQIFMiw3fTtx/dCrV68sa3nppZd09OhR/f7774qPj9d//vMf5fTtz/z8/BQSEpKjy3RH+vs8ISFBK1asUHR0tF577TW1atVKqampmc535coVl5b/xx9/SJIef/xxFS9ePMPX/rhT33//+18tW7ZM3bt3d2sZN+Pj46PixYub4zsVs/Ot27h9mjdvbpQs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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt; plt.rcdefaults()\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "objects = ('CRC', 'VID', 'PMD Review', 'SME Review', 'Draft Review')\n", "y_pos = np.arange(len(objects))\n", "performance = [df_clean_8_News.CRCtime.dt.days.median(),df_clean_8_News.VID_Edittime.dt.days.median(),df_clean_8_News.PMD_Reviewtime.dt.days.median(),df_clean_8_News.SME_Reviewtime.dt.days.median(),df_clean_8_News.Draft_Reviewtime.dt.days.median()]\n", "\n", "plt.bar(y_pos, performance, align='center', alpha=0.5, color=['green','green','green','green','green'])\n", "plt.xticks(y_pos, objects)\n", "plt.ylabel('Days (Median)')\n", "plt.title('VS (One-Health) Product Production Time (Newsletter)')\n", "for i, v in enumerate(performance):\n", " plt.text(i-.15, v+.18 , str(v), color='blue', fontweight='bold', va='center')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Discussion\n", "

So what can we say about these graphs and analyses?


\n", " With a first look, the data analysis and subsequent graphs, doesn't really tell us much about spent time due to the large discrepancies. We can see that VID processing and Review and the CRC Review process takes up the majority of time of One-Health Product development, with a wait time of 48.5 and 45 days, respectively.
\n", "
\n", " We see that comparing the brochures and newsletters, the newsletters take a shorter median amount of production time. The reasoning behind this may possibly be due to the higher frequency of newsletter production, increasing the potential efficiency of the newsletter production process.
\n", "
\n", " With a potential brochure program utilizing First Year Graduate Veterinary Education (FYGVE) students as potential authors, a strong and defined review process is necessary to eliminate potential hang up in the review process. \n", "\n", "#### This shows that our processing time is really dependent on the work and collaboration of other directorates regarding visual output and CRC review. \n", "\n", " With the subject matter, draft and PMD review lasting roughly 75% less than VID and CRC time, recommendations should:\n", "- Include discussions, focus groups and meetings to potentially streamline the CRC process; potentially decreasing the time at certain approval levels\n", "- Require submitters of VS One-Health products to have a clear visual outline of what their product should look like before VID work order submission\n", " - A clear and defined endstate by the customer will assist the VID designer in obtaining a product that the VID directorate and the customer will agree upon, potentially decreasing the production and processing time. Additionally, focus groups, surveys and interviews should be done within VID to discuss other potential bottlenecks during the production process.\n", " \n", " - Additionally, with our aforementioned FYGVE brochure program, a dedicated person within the One-Health Division should be responsible for the overall setup and design of the brochures. With this, this would increase positive interaction with VID and decrease the VID production time potentially decreasing the overall production time, significantly. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conclusion\n", "In conclusion, my analysis shows that VID production and CRC approval take up more than 50 percent of the total production time in both One-health newsletters and brochures. I recommend the One-Health Division to open communication between VID and CRC to develop potential ideas to decrease processing and approval times. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }