{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "bbfa9fa9-7275-4a00-ad8c-a156298b18e9",
   "metadata": {
    "tags": []
   },
   "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 boto3 \n",
    "from datetime import datetime, date, timedelta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e53e9553-fb5e-478f-b4fb-5b9db154a703",
   "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": "79cfbf19",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['0_1699950909254637.0_20231115-013731.csv',\n",
       " '0_1699951409939404.8_20231114-234630.csv',\n",
       " '0_1699951945653548.0_20231115-023201.csv',\n",
       " '0_1699952549238271.5_20231115-011730.csv',\n",
       " '0_1699953126859277.0_20231115-010223.csv',\n",
       " '1_1699950909254637.0_20231115-020749.csv',\n",
       " '1_1699951409939404.8_20231115-001457.csv',\n",
       " '1_1699951945653548.0_20231115-022322.csv',\n",
       " '1_1699952549238271.5_20231115-002149.csv',\n",
       " '1_1699953126859277.0_20231115-014013.csv',\n",
       " '2_1699950909254637.0_20231115-003410.csv',\n",
       " '2_1699951409939404.8_20231114-235756.csv',\n",
       " '2_1699951945653548.0_20231115-012500.csv',\n",
       " '2_1699952549238271.5_20231115-013542.csv',\n",
       " '2_1699953126859277.0_20231115-012113.csv',\n",
       " '3_1699950909254637.0_20231115-022310.csv',\n",
       " '3_1699951409939404.8_20231115-000000.csv',\n",
       " '3_1699951945653548.0_20231115-021032.csv',\n",
       " '3_1699952549238271.5_20231115-015400.csv',\n",
       " '3_1699953126859277.0_20231115-020156.csv',\n",
       " '4_1699950909254637.0_20231115-022112.csv',\n",
       " '4_1699951409939404.8_20231115-001028.csv',\n",
       " '4_1699951945653548.0_20231115-023559.csv',\n",
       " '4_1699952549238271.5_20231115-015458.csv',\n",
       " '4_1699953126859277.0_20231115-014848.csv',\n",
       " '5_1699950909254637.0_20231115-022119.csv',\n",
       " '5_1699951409939404.8_20231115-001115.csv',\n",
       " '5_1699951945653548.0_20231115-022856.csv',\n",
       " '5_1699952549238271.5_20231115-020633.csv',\n",
       " '5_1699953126859277.0_20231115-015538.csv',\n",
       " '6_1699950909254637.0_20231115-020356.csv',\n",
       " '6_1699951409939404.8_20231114-234401.csv',\n",
       " '6_1699951945653548.0_20231115-021034.csv',\n",
       " '6_1699952549238271.5_20231115-015149.csv',\n",
       " '6_1699953126859277.0_20231115-015827.csv',\n",
       " '7_1699950909254637.0_20231115-013828.csv',\n",
       " '7_1699951409939404.8_20231115-001804.csv',\n",
       " '7_1699951945653548.0_20231115-011502.csv',\n",
       " '7_1699952549238271.5_20231115-021005.csv',\n",
       " '7_1699953126859277.0_20231115-015357.csv',\n",
       " '8_1699950909254637.0_20231115-020000.csv',\n",
       " '8_1699951409939404.8_20231115-000607.csv',\n",
       " '8_1699951945653548.0_20231115-021855.csv',\n",
       " '8_1699952549238271.5_20231115-015255.csv',\n",
       " '8_1699953126859277.0_20231114-225335.csv',\n",
       " '9_1699950909254637.0_20231115-005916.csv',\n",
       " '9_1699951409939404.8_20231115-000603.csv',\n",
       " '9_1699951945653548.0_20231115-022320.csv',\n",
       " '9_1699952549238271.5_20231115-005040.csv',\n",
       " '9_1699953126859277.0_20231115-005134.csv']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = 'eimpara/Moments_2023_batches/ARIMA_chunks/Prediction_chunks/'\n",
    "table_names = []\n",
    "\n",
    "table_names = [obj.key.split('/')[-1] for obj in bucket.objects.filter(Prefix=path) if '/' not in obj.key.replace(path,'')]\n",
    "table_names = list(filter(lambda x: len(x) > 0, table_names))\n",
    "table_names\n",
    "# for obj in bucket.objects.filter(Prefix=path):\n",
    "#     table_name = obj.key.split('/')[-1]\n",
    "#     print(obj.key)\n",
    "#     if len(table_name) > 0:\n",
    "#         table_names.append(table_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6f889031",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(table_names)\n",
    "#  'Fourier_table_NEW_DATA_0_20231108-111429.csv', (1207220, 6)\n",
    "#  'Fourier_table_NEW_DATA_1_20231109-122151.csv', (1207220, 6)\n",
    "#  'Fourier_table_NEW_DATA_6_20231108-191354.csv', (1207220, 6)\n",
    "#  'Fourier_table_NEW_DATA_7_20231109-090411.csv', (1207220, 6)\n",
    "#  'Fourier_table_NEW_DATA_8_20231109-091534.csv'(1207220, 6)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8b1d4caa",
   "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": 6,
   "id": "34637e13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1137500, 5)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0d146b13",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 1137500 entries, 0 to 22119\n",
      "Data columns (total 5 columns):\n",
      " #   Column         Non-Null Count    Dtype  \n",
      "---  ------         --------------    -----  \n",
      " 0   ISRC           1137500 non-null  object \n",
      " 1   ACTIVITY_DATE  1137500 non-null  object \n",
      " 2   STREAMS        1137500 non-null  int64  \n",
      " 3   Predicted      1129375 non-null  float64\n",
      " 4   len_df         1137500 non-null  int64  \n",
      "dtypes: float64(1), int64(2), object(2)\n",
      "memory usage: 52.1+ MB\n"
     ]
    }
   ],
   "source": [
    "merged_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a219581d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def save_dataframe_s3(df):\n",
    "    s3 = boto3.client('s3')\n",
    "    bucket_name = 'dev-cucumbers'\n",
    "    chunks = 'CHUNKS_0178_V2'\n",
    "    table_name = 'PREDICTION_TABLE'\n",
    "    today = datetime.today().strftime('%Y%m%d-%H%M%S')\n",
    "    filepath =  path + table_name + '_{}_{}.csv'.format(chunks, today)\n",
    "    csv_buffer = df.to_csv(index=False).encode('utf-8')\n",
    "    # Save the CSV file to S3\n",
    "    s3.put_object(Body=csv_buffer, Bucket=bucket_name, Key=filepath)\n",
    "    print(f\"Table saved to S3 bucket: {bucket_name}, with file name: {filepath}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "758c2b1d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Table saved to S3 bucket: dev-cucumbers, with file name: eimpara/Moments_2023_batches/ARIMA_chunks/Prediction_chunks/PREDICTION_TABLE_CHUNKS_0178_V2_20231115-072405.csv\n"
     ]
    }
   ],
   "source": [
    "save_dataframe_s3(merged_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c10c888d",
   "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.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
