# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3 (ipykernel)
#     language: python
#     name: python3
# ---

# # Importation de librairies et lectures de fichiers 

import pandas as pd
import numpy as np
import re
import matplotlib.pyplot as plt
import seaborn as sns

# lecture fichiers
web=pd.read_excel('C:\\Users\\agued\\OneDrive\\Escritorio\\web.xlsx')
liaison=pd.read_excel ('C:\\Users\\agued\\OneDrive\\Escritorio\\liaison.xlsx')
erp=pd.read_excel('C:\\Users\\agued\\OneDrive\\Escritorio\\erp.xlsx')

# # Preparation de données
# ## web

# + tags=[]
web.head()
# -

web.shape

# + tags=[]
web.isnull().sum()


# + tags=[]
web.nunique().tolist

# + active=""
# Suppresion de colonnes vides, et des colonnes sans aucun manquant et un seul valeur unique
# -

web.drop(['tax_class', 'post_content','post_password','post_content_filtered','virtual','downloadable','rating_count'], axis = 1, inplace = True)

# ### *on a vu que la colonne 'guid' peut servir de clé aussi avec 1430 valeurs uniques, donc je constate combien de lignes il y a avec un valeur pour 'guid' avec sku null

# + tags=[]
web[(web['guid'].notnull())& (web['sku'].isnull())]
# -

# il y a deux lignes mais sans aucune ventes (total_sales), 

# la colonne Sku sera notre cle pour les jointures, donc je supprime les valeurs nulls, et verifie les doublons

# + tags=[]
web=web.dropna(subset=['sku'])
# -

web.duplicated('sku').sum() 

# Analyse de differences entre les doublons. 

# + tags=[]
values=[15296,19814]
web[web.sku.isin(values)]
# -

# La difference est que la premiere ligne correspond au produit(post_type=product) et la deuxieme corresponde à l'image (post_type=attachement). On supprime les lignes que correspondent à l'image. Et le deux colonne liées à elle(post_type et post_mime_type)

web.drop(web[web['post_type']=='attachment'].index, inplace=True)

web.nunique().tolist

# On supprime aussi toutes les colonnes qui nous reste avec un valeur unique

web.drop(['average_rating','tax_status','post_status','comment_status','ping_status','post_parent','menu_order','post_type','post_mime_type','comment_count'],axis=1, inplace=True)

web.head()

# ## erp

erp.head()

erp.shape

erp.isnull().sum()

erp.nunique().tolist

erp.dtypes

round(erp.describe(),2)

# ## liaison

liaison.head()

# + tags=[]
liaison.rename(columns={'id_web': 'sku'}, inplace=True)
# -

liaison.shape

liaison.isnull().sum()

# # Merge

lia_web=pd.merge(liaison,web, on='sku', how='inner')

lia_web.isnull().sum()

lia_web.shape

final=pd.merge(lia_web,erp, on='product_id', how='inner')

# + tags=[]
final.isnull().sum()
# -

final.shape

final.head()

final.nunique().tolist

final[(final['stock_quantity']==0 )& (final['stock_status']=='instock')]

final['CA']=(final['total_sales']*final['price'])

final.sort_values(by = 'CA', ascending = False).head()

final['CA'].sum()

final[final['total_sales']>5]

round(final['price'].describe(),2)





StarcoderdataJupyterScriptsDedupFiltered