{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6a5f234f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ec2-user/anaconda3/envs/python3/lib/python3.10/site-packages/pandas/core/computation/expressions.py:21: UserWarning: Pandas requires version '2.8.0' or newer of 'numexpr' (version '2.7.3' currently installed).\n",
      "  from pandas.core.computation.check import NUMEXPR_INSTALLED\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import boto3 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e62f1239",
   "metadata": {},
   "outputs": [],
   "source": [
    "s3 = boto3.resource('s3')\n",
    "bucket_name = 'dev-cucumbers'\n",
    "bucket = s3.Bucket(bucket_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4d13d74d",
   "metadata": {},
   "outputs": [],
   "source": [
    "path = 'eimpara/TikTok_analysis/Rap/Hip-hop'\n",
    "table_names = []\n",
    "\n",
    "for obj in bucket.objects.filter(Prefix=path):\n",
    "    table_name = obj.key.split('/')[-1]\n",
    "    if len(table_name) > 0:\n",
    "        table_names.append(table_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0a2e9805",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Expected 56 files: 2 chunks * 28 parallel processes\n",
    "\n",
    "len(table_names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2ea55271",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for table_name in table_names:\n",
    "#     print(f'{path}/{table_name}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "15efa1b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "s3.Object(bucket_name='dev-cucumbers', key='eimpara/TikTok_analysis/Rap/Hip-hop/Rap_TIKTOK_VIDEO_VIEWS_20231212-133458_1_1702373134112732.8.csv')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obj = bucket.Object(f'{path}/{table_name}')\n",
    "obj\n",
    "#table_data = pd.read_csv(obj.get()['Body'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "27640424",
   "metadata": {},
   "outputs": [],
   "source": [
    "merged_df = pd.DataFrame() \n",
    "\n",
    "for table_name in table_names:\n",
    "    obj = bucket.Object(f'{path}/{table_name}')\n",
    "    table_data = pd.read_csv(obj.get()['Body'])\n",
    "    merged_df = pd.concat([merged_df,table_data])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7dd7c99b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5290, 3)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "878333c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5290"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rock should have 5294 unique ISRCs (4 missing)\n",
    "\n",
    "merged_df['ISRC'].nunique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6f13af77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .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></th>\n",
       "      <th>ISRC</th>\n",
       "      <th>exog_coeff</th>\n",
       "      <th>pvalue</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>GBKPL2147316</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>GBKPL2147317</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>GBKPL2147318</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GBKPL2147319</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>GBKPL2147320</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>QMDA62107078</td>\n",
       "      <td>-0.000302</td>\n",
       "      <td>0.686774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>91</th>\n",
       "      <td>QMDA62108332</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>92</th>\n",
       "      <td>QMDA62109750</td>\n",
       "      <td>-0.000056</td>\n",
       "      <td>0.278924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93</th>\n",
       "      <td>QMDA62110235</td>\n",
       "      <td>0.001879</td>\n",
       "      <td>0.501992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94</th>\n",
       "      <td>QMDA62110459</td>\n",
       "      <td>-0.000210</td>\n",
       "      <td>0.916158</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5290 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ISRC  exog_coeff    pvalue\n",
       "0   GBKPL2147316    0.000000  1.000000\n",
       "1   GBKPL2147317    0.000000       NaN\n",
       "2   GBKPL2147318    0.000000  1.000000\n",
       "3   GBKPL2147319    0.000000  1.000000\n",
       "4   GBKPL2147320    0.000000       NaN\n",
       "..           ...         ...       ...\n",
       "90  QMDA62107078   -0.000302  0.686774\n",
       "91  QMDA62108332    0.000000       NaN\n",
       "92  QMDA62109750   -0.000056  0.278924\n",
       "93  QMDA62110235    0.001879  0.501992\n",
       "94  QMDA62110459   -0.000210  0.916158\n",
       "\n",
       "[5290 rows x 3 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9b2230a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 5290 entries, 0 to 94\n",
      "Data columns (total 3 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   ISRC        5290 non-null   object \n",
      " 1   exog_coeff  5290 non-null   float64\n",
      " 2   pvalue      4814 non-null   float64\n",
      "dtypes: float64(2), object(1)\n",
      "memory usage: 165.3+ KB\n"
     ]
    }
   ],
   "source": [
    "merged_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "0c9187d7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NaAs in coeff:  0\n",
      "NaAs in pvalue:  476\n"
     ]
    }
   ],
   "source": [
    "print('NaAs in coeff: ', merged_df['exog_coeff'].isnull().sum())\n",
    "print('NaAs in pvalue: ', merged_df['pvalue'].isnull().sum())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3d039dfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4814"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "no_nans_pval = len(merged_df) - (merged_df['pvalue'].isnull().sum())\n",
    "no_nans_pval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a3ae500e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "243"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_pval_sig = len(merged_df[~(merged_df['pvalue'].isnull()) & (merged_df['pvalue'] <= 0.05)])\n",
    "len_pval_sig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f83b6bc6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Proportion of significant p-values:  0.05\n"
     ]
    }
   ],
   "source": [
    "print('Proportion of significant p-values: ', round(len_pval_sig/no_nans_pval, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "e08b78a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "subset = merged_df[~merged_df['pvalue'].isnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4c6ddfa0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    4814.000000\n",
       "mean        0.018006\n",
       "std         1.191206\n",
       "min       -25.704359\n",
       "25%        -0.000374\n",
       "50%         0.000000\n",
       "75%         0.000583\n",
       "max        32.264690\n",
       "Name: exog_coeff, dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subset['exog_coeff'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "555376a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.FacetGrid at 0x7f4d0a45f8e0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 3000x4500 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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dXV1ysjICCvPyMhQeXl5zPeUl5fHvL+2tlb79u1T3759o95TXV2t6uqGlkdFRYWk+pZ1W63+y6daVfJVm38OTj5HJH1xuOlATO+arPRTUpSe2kWpKUn65nCNDlXXKr1rivqnpyrvnL66+Kze6nJshvfBg/H/g/EHfVL0g8sG6Y7R/fT2jn16d8d+lVUeUbJfqq2TKo8cVemBKh38tk77v437Y5pUdUjaVba//X8wcILceE7PZpdAtka3bsf/R3bCgjoksoLGmGYrHev+WOUhs2fP1qOPPhpVnpWV1dqqAp3G84muAHAS6zm3/X5WS4ZhExbUvXr1UlJSUlTree/evVGt5pDMzMyY9ycnJ6tnz54x31NYWKiCggLv+2AwqAMHDqhnz56t7iq0UWVlpbKysrR79+6Tckz+ZH9+id8Dnp/n78zP361bt+Pek7CgTklJUU5OjoqKinTttdd65UVFRZowYULM94wePVp/+MMfwsrWrl2rkSNHNjk+HQgEFAgEwspOO+20tlXeQmlpaZ3y/6Qd5WR/fonfA56f57f1+RO6PKugoEDPP/+8Fi1apO3bt+vee+9VaWmp8vPzJdW3hidNmuTdn5+fr127dqmgoEDbt2/XokWLtHDhQs2YMSNRjwAAwAmV0DHqiRMnav/+/Zo1a5bKyso0bNgwrVmzRoMGDZIklZWVha2pzs7O1po1a3Tvvffqt7/9rfr166enn35a119/faIeAQCAEyrhk8mmTZumadOmxby2ZMmSqLKLL75YmzdvPsG1ckcgENDDDz8c1f1/sjjZn1/i94Dn5/ltf/6EbngCAACal/C9vgEAQNMIagAAOjGCGgCAToygdtQXX3yhKVOmKDs7W127dtWZZ56phx9+WDU1NWH3lZaWavz48frOd76jXr16afr06VH32OoXv/iFxowZo1NOOaXJtfMuP7/U+mNkbbZ+/XqNHz9e/fr1k8/n0+rVq8OuG2P0yCOPqF+/furatasuueQSffihG8d8zp49W+eff766deumPn366JprrtHHH38cdo/Lz79gwQKdc8453lrp0aNH65VXXvGu2/7sBLWjPvroIwWDQT377LP68MMP9etf/1rPPPOMHnzwQe+euro6XX311aqqqtJbb72lF154Qb///e913333JbDm7aempkY33HCD7rjjjpjXXX/+1h4ja7uqqioN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/zCIdLzPX7hwoTn77LNNMBj0rldXV5uuXbua1157zRhjzKpVq6KOaY1VBriGMWrAAtu2bdORI0d0xRVXhJXX1NRoxIgRkqQbbrhBq1at0uzZs7VgwQKdddZZkqTKykp99dVXuvDCC8Pee+GFF+r999+XJH388cc655xzlJqa6l0fNWpUi+u3ZcsWjR07Vl26dIm61pLPLy4u1meffaZu3bqF3XPkyBGv+xw4WRHUgAWCwaAk6Y9//KP69+8fdi00y/nw4cMqLi5WUlKSPv3006ifETmGa4zxyhr/uvH1luratetx72nu84PBoHJycrRs2bKo9/Xu3bvF9QBcxGQywALf+973FAgEVFpaqsGDB4e9srKyJEn33Xef/H6/XnnlFT399NN6/fXXJUlpaWnq16+f3nrrrbCfuXHjRg0dOlSSNGTIEH3wwQeqrq72rm/atKnF9TvnnHO0YcMGHT16NOpaSz7/vPPO06effqo+ffpEPV96enqL6wE4KbE97wBaaubMmaZnz55myZIl5rPPPjObN2828+bNM0uWLDH/9V//ZVJSUkxxcbExxph//ud/NgMGDDAHDhwwxhjz61//2qSlpZkXXnjBfPTRR+b+++8Pm8xVUVFhevToYSZNmmS2bdtmXn31VTNkyBAjyWzZsuW4ddu3b5/p2bOnN5nsk08+MUuXLvUmkx3v80OTyS655BKzfv168/nnn5s333zTTJ8+3ezevdsYwxg1Tl78PxywRDAYNE899ZQ5++yzTZcuXUzv3r3NlVdead58802TkZFhHnvsMe/eo0ePmlGjRpkbb7zRGGNMXV2defTRR03//v1Nly5dzPDhw80rr7wS9vPffvttc84555iUlBSTk5Njfve73xlJXtgez/vvv29yc3PNKaecYrp162bGjh1rduzY0eLPLysrM5MmTTK9evUygUDAnHHGGeanP/2pqaioMMYQ1Dh5sTMZgJiWLVumW2+9VRUVFS0agwZwYjCZDIAkaenSpTrjjDPUv39/vf/++7r//vt14403EtJAgjGZDIAkqby8XD/5yU80dOhQ3Xvvvbrhhhv03HPPSZLy8/N16qmnxnzl5+cnuOaA2+j6BnBce/fuVWVlZcxraWlp6tOnTwfXCDh5ENQAAHRidH0DANCJEdQAAHRiBDUAAJ0YQQ0AQCdGUAMA0IkR1AAAdGIENQAAnRhBDQBAJ/b/Ac64RhLHe5KIAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(30, 45))\n",
    "\n",
    "sns.displot(subset, x='exog_coeff', kind='kde')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e2fa33ab",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "conda_python3",
   "language": "python",
   "name": "conda_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.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
