<jupyter_start><jupyter_text>Technical Proof Model Analyst : Ejercicio \6<jupyter_code>%matplotlib inline


# Librerías y paquetes necesarios


#Trtamiento de datos

import pandas as pd
import numpy as np
import datetime as dt


#  Biblioteca para Regresión Lineal

from sklearn.linear_model import LinearRegression

#Graficas estáticas

import matplotlib
import matplotlib.pyplot as plt

#Graficas interactivas

import plotly
plotly.io.renderers.default = 'notebook_connected'
import plotly.express as px
import plotly.graph_objects as go
# Carga del conjunto de datos

path= './query1_sabana.csv'
df = pd.read_csv(path)


df.head(5)
df.shape
df.describe()
df.duplicated().sum() 
df.isnull().sum()
df['REGION_NAME'].value_counts()
df['GRUPO'].value_counts()
df['DET_1'].value_counts()<jupyter_output><empty_output><jupyter_text>Lo valores en cada departamento se repiten en una sola fecha, es decir, el 1 de enero esta amazona, antioquia, etc. El 2 de enero estarán los mismos departamentos amazonas, antioquia, etc. Además, cada departamento y fecha que se repiten tienen la misma cantidad en la columna llamada "VALUE".  PIB en Colombia<jupyter_code># Por lo dicho en el texto anterior hago extracción de valores únicos teniendo 
# como referncia la Fecha del dataset.

df_u1=df.copy()

df_u2=df_u1[['DATE', 'VALUE']]

#df_u2.head(5)

#df_u2.duplicated().sum() 

df_u2 = df_u2.drop_duplicates(subset=['DATE'])

df_u2.shape
df_pib_Fecha=df_u2.groupby('DATE').agg({ 'VALUE': 'sum'
   
                              })

df_pib_Fecha=df_pib_Fecha.reset_index()

df_pib_Fecha.head(5)

#df_pib_Fecha.describe()

# Serie de tiempo para el PIB total

fig = px.line(df_pib_Fecha, x='DATE', y='VALUE', title='Comportamiento del comercio en el tiempo',
             labels={
                     "DATE": "Fecha",
                     "VALUE": "Valor"
                 })

fig.update_xaxes(rangeslider_visible=True,   rangeselector=dict(
        buttons=list([
            dict(count=1, label="Días", step="month", stepmode="backward"),
            dict(count=6, label="Seis meses", step="month", stepmode="backward"),
            dict(count=1, label="Año", step="year", stepmode="backward"),
            dict(step="all")
        ])))
fig.show()
df_pib_Grupo=df.groupby('GRUPO').agg({ 'VALUE': 'count'
   
                              })

df_pib_Grupo=df_pib_Grupo.reset_index()

df_pib_Grupo.head(5)
# Barras PIB por grupo

fig = px.bar(df_pib_Grupo, x="GRUPO", y="VALUE", barmode="group", height=400, labels={
                     "GRUPO": "Grupo",
                     "VALUE": "Valor"
                 })
fig.update_layout(title_text="Comportamienot del comercio por indicador", plot_bgcolor='rgb(230, 230, 230)')

fig.show()
df_pib_det=df.groupby('DET_1').agg({ 'VALUE': 'count'
   
                              })

df_pib_det=df_pib_det.reset_index()

df_pib_det.head(5)
# Barras PIB por det_1

fig = px.bar(df_pib_det, x="DET_1", y="VALUE", barmode="group", height=400, labels={
                     "DET_1": "Segmento",
                     "VALUE": "Valor"
                 })
fig.update_layout(title_text="Comportamiento del comercio por segmento", plot_bgcolor='rgb(230, 230, 230)')

fig.show()<jupyter_output><empty_output><jupyter_text>Antioquia con indicador MERCADO CEMENTO DEPTO CANAL.<jupyter_code># Filtrado region e indicador

df1=df.copy()

df11=df1['REGION_NAME']=='Antioquia'

df111 = df1[df11]


dff=df111['GRUPO']=='MERCADO CEMENTO DEPTO CANAL'

df2 = df111[dff]



df2.head(5)

df2.duplicated().sum() 
df2.describe()
df2_pib_det=df2.groupby('DET_1').agg({ 'VALUE': 'sum'
   
                              })

df2_pib_det=df2_pib_det.reset_index()

df2_pib_det.head(5)
# Barras PIB por det_1

fig = px.bar(df2_pib_det, x="DET_1", y="VALUE", barmode="group", height=400,
             labels={
                     "DET_1": "Segmento",
                     "VALUE": "Valor"
             })
fig.update_layout(title_text="'Comportamiento del comercio por segmento en Antioquia con indicador específico'", plot_bgcolor='rgb(230, 230, 230)')

fig.show()
df3=df2.copy()


df3_seg=df3['DET_1']=='COMERCIALIZACION'

df3_seg2 = df3[df3_seg]


#df3_seg2.shape
df3_seg2.head(5)
df3_seg_Fecha=df3_seg2.groupby('DATE').agg({ 'VALUE': 'sum'
   
                              })

df3_seg_Fecha=df3_seg_Fecha.reset_index()

df3_seg_Fecha.head(5)
# Serie de tiempo para por segmento en Antioquia

fig = px.line(df3_seg_Fecha, x='DATE', y='VALUE', 
              title='Comportamiento del comercio por segmento en Antioquia con indicador específico',
             labels={
                     "DATE": "Fecha",
                     "VALUE": "Valor"
                 })

fig.update_xaxes(rangeslider_visible=True,   rangeselector=dict(
        buttons=list([
            dict(count=1, label="Días", step="month", stepmode="backward"),
            dict(count=6, label="Seis meses", step="month", stepmode="backward"),
            dict(count=1, label="Año", step="year", stepmode="backward"),
            dict(step="all")
        ])))
fig.show()<jupyter_output><empty_output><jupyter_text>Regresión lineal<jupyter_code>df_LR=df2.copy()
df_LR['DATE'] = pd.to_datetime(df_LR['DATE'])
df_LR['DATE']=df_LR['DATE'].map(dt.datetime.toordinal)

df_LR.head(5)
fig=plt.figure(figsize=(10,10))
plt.scatter(df_LR['DATE'],df_LR['VALUE'])
#plt.plot(df_LR['DATE'],df_LR['VALUE'])
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.grid()<jupyter_output><empty_output><jupyter_text>Los puntos estan bastante dispersos y concentrados en los valores entre cero y 200.000<jupyter_code>nVAL = df_LR['VALUE'].values.reshape(-1,1)
nDATE = df_LR['DATE'].values.reshape(-1,1)
linear_regressor = LinearRegression()
linear_regressor.fit(nDATE, nVAL)
val_pred = linear_regressor.predict(nVAL)
val_pred
# Ecuación regresión lineal y=mx+b
m = linear_regressor.coef_[0][0]
b = linear_regressor.intercept_[0]
label = r'$Valor = %0.4f*Fecha %+0.4f$'%(m,b)
print(label)
fig = plt.figure(figsize=(10,10))
plt.scatter(df_LR['DATE'],df_LR['VALUE'])
plt.plot(df_LR['DATE'],df_LR['VALUE'], label='Valor')
plt.plot(nVAL, val_pred, color='red', label=label)
plt.xlabel('Fecha')
plt.ylabel('Valor')
plt.legend()
plt.grid()
# Representación para diciembre y realizar la predicción para 

dic=['2019-12-01 00:00:00.0000000', '2019-12-02 00:00:00.0000000', '2019-12-03 00:00:00.0000000',
                   '2019-12-04 00:00:00.0000000', '2019-12-05 00:00:00.0000000','2019-12-06 00:00:00.0000000',
                   '2019-12-07 00:00:00.0000000','2019-12-08 00:00:00.0000000','2019-12-09 00:00:00.0000000',
                   '2019-12-10 00:00:00.0000000','2019-12-11 00:00:00.0000000','2019-12-12 00:00:00.0000000',
                   '2019-12-13 00:00:00.0000000','2019-12-14 00:00:00.0000000','2019-12-15 00:00:00.0000000',
                   '2019-12-16 00:00:00.0000000','2019-12-17 00:00:00.0000000','2019-12-18 00:00:00.0000000',
                   '2019-12-19 00:00:00.0000000','2019-12-20 00:00:00.0000000','2019-12-21 00:00:00.0000000',
                   '2019-12-22 00:00:00.0000000','2019-12-23 00:00:00.0000000','2019-12-24 00:00:00.0000000',
                   '2019-12-25 00:00:00.0000000','2019-12-26 00:00:00.0000000','2019-12-27 00:00:00.0000000',
                   '2019-12-28 00:00:00.0000000','2019-12-29 00:00:00.0000000','2019-12-30 00:00:00.0000000',
                   '2019-12-31 00:00:00.0000000']

df_dic=pd.DataFrame(dic,columns=['Mes'])

df_dic['Mes'] = pd.to_datetime(df_dic['Mes'])
df_dic['Mes']=df_dic['Mes'].map(dt.datetime.toordinal)

df_dic.tail(5)
Valor_diciembre=0.9666*df_dic-699687.2010

Valor_diciembre = Valor_diciembre.rename(columns={'Mes':'Predicción ventas para diciembre'})

Valor_diciembre.head(5)
dic2=pd.DataFrame(dic,columns=['Mes'])

vent_dic=pd.concat([dic2, Valor_diciembre], axis=1)

vent_dic.head(5)
# Predicción de ventas para Diciembre 2019

fig = px.line(vent_dic, x='Mes', y='Predicción ventas para diciembre', 
              title='Predicción de ventas para Diciembre 2019',
             labels={
                     "Mes": "Fecha",
                     "Predicción ventas para diciembre": "Predicción ventas"
                 })

fig.show()<jupyter_output><empty_output><jupyter_text>Dependencias<jupyter_code>%load_ext watermark

%watermark -v -m -p wget,pandas,numpy,datetime,plotly,scikit-learn,matplotlib,watermark

#Fecha

print(" ")

%watermark -u -n -t -z<jupyter_output>Python implementation: CPython
Python version       : 3.8.5
IPython version      : 7.13.0

wget        : not installed
pandas      : 1.2.3
numpy       : 1.18.4
datetime    : unknown
plotly      : 4.14.3
scikit-learn: 0.23.1
matplotlib  : 3.2.1
watermark   : 2.2.0

Compiler    : GCC 9.3.0
OS          : Linux
Release     : 5.8.0-44-generic
Machine     : x86_64
Processor   : x86_64
CPU cores   : 8
Architecture: 64bit

 
Last updated: Sun Mar 14 2021 21:20:37-05
{'fraction_non_alphanumeric': 0.15216900135562586, 'fraction_numerical': 0.10020334387708993, 'mean_word_length': 3.475733063700708, 'pattern_counts': {'":': 12, '<': 24, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 31, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '406716', 'license': 'MIT', 'n_tokens_mistral': 4059, 'n_tokens_neox': 3433, 'n_words': 588, 'path': 'Exercise6.ipynb', 'repo_name': 'LauraMUD/PruebaTecnica_Argos', 'size': '8852'}