{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":31254,"databundleVersionId":3103714,"sourceType":"competition"}],"dockerImageVersionId":30839,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Charger les datasets\ntransactions = pd.read_csv('/kaggle/input/h-and-m-personalized-fashion-recommendations/transactions_train.csv')\narticles = pd.read_csv('/kaggle/input/h-and-m-personalized-fashion-recommendations/articles.csv')\ncustomers = pd.read_csv('/kaggle/input/h-and-m-personalized-fashion-recommendations/customers.csv')\n\n# Aperçu des premières lignes des datasets\nprint(\"Transactions Data:\")\nprint(transactions.head())\nprint(\"\\nArticles Data:\")\nprint(articles.head())\nprint(\"\\nCustomers Data:\")\nprint(customers.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:16:13.483742Z","iopub.execute_input":"2025-01-15T21:16:13.484202Z","iopub.status.idle":"2025-01-15T21:17:07.316064Z","shell.execute_reply.started":"2025-01-15T21:16:13.484161Z","shell.execute_reply":"2025-01-15T21:17:07.313914Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Informations générales sur les données**# ","metadata":{}},{"cell_type":"code","source":"# Afficher les 5 premières lignes de chaque DataFrame\nprint(\"Aperçu des articles:\")\nprint(articles.head(), \"\\n\")\n\nprint(\"Aperçu des clients:\")\nprint(customers.head(), \"\\n\")\n\nprint(\"Aperçu des transactions:\")\nprint(transactions.head(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:11:49.251853Z","iopub.execute_input":"2025-01-15T22:11:49.252383Z","iopub.status.idle":"2025-01-15T22:11:49.278479Z","shell.execute_reply.started":"2025-01-15T22:11:49.252351Z","shell.execute_reply":"2025-01-15T22:11:49.276722Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Statistiques descriptives**","metadata":{}},{"cell_type":"code","source":"# Statistiques descriptives pour les colonnes numériques\nprint(\"Statistiques descriptives des articles:\")\nprint(df_articles.describe(), \"\\n\")\n\nprint(\"Statistiques descriptives des clients:\")\nprint(df_customers.describe(), \"\\n\")\n\nprint(\"Statistiques descriptives des transactions:\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:12:34.491608Z","iopub.execute_input":"2025-01-15T22:12:34.492012Z","iopub.status.idle":"2025-01-15T22:12:39.158568Z","shell.execute_reply.started":"2025-01-15T22:12:34.491985Z","shell.execute_reply":"2025-01-15T22:12:39.157275Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Analyse des valeurs manquantes**","metadata":{}},{"cell_type":"code","source":"# Vérifier les valeurs manquantes\nprint(\"Valeurs manquantes dans les articles:\")\nprint(articles.isnull().sum(), \"\\n\")\n\nprint(\"Valeurs manquantes dans les clients:\")\nprint(customers.isnull().sum(), \"\\n\")\n\nprint(\"Valeurs manquantes dans les transactions:\")\nprint(transactions.isnull().sum(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:13:08.051868Z","iopub.execute_input":"2025-01-15T22:13:08.052424Z","iopub.status.idle":"2025-01-15T22:13:11.920242Z","shell.execute_reply.started":"2025-01-15T22:13:08.052392Z","shell.execute_reply":"2025-01-15T22:13:11.918805Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Remplacer les valeurs manquantes dans df_articles\narticles['detail_desc'] = articles['detail_desc'].fillna('Valeur Manquante')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:13:30.371581Z","iopub.execute_input":"2025-01-15T22:13:30.372102Z","iopub.status.idle":"2025-01-15T22:13:30.396555Z","shell.execute_reply.started":"2025-01-15T22:13:30.372065Z","shell.execute_reply":"2025-01-15T22:13:30.394767Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Remplacer les valeurs manquantes dans df_customers\ncustomers['FN'] = df_customers['FN'].fillna('Valeur Manquante')\ncustomers['Active'] = df_customers['Active'].fillna('Valeur Manquante')\ncustomers['club_member_status'] = df_customers['club_member_status'].fillna('Valeur Manquante')\ncustomers['fashion_news_frequency'] = df_customers['fashion_news_frequency'].fillna('Valeur Manquante')\ncustomers['age'] = df_customers['age'].fillna('Valeur Manquante')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:13:43.291522Z","iopub.execute_input":"2025-01-15T22:13:43.291930Z","iopub.status.idle":"2025-01-15T22:13:43.826338Z","shell.execute_reply.started":"2025-01-15T22:13:43.291898Z","shell.execute_reply":"2025-01-15T22:13:43.824798Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Remplacer les valeurs manquantes dans df_transactions (bien que toutes les colonnes aient des valeurs non manquantes)\ntransactions = transactions.fillna('Valeur Manquante')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:13:51.451477Z","iopub.execute_input":"2025-01-15T22:13:51.451867Z","iopub.status.idle":"2025-01-15T22:13:55.243429Z","shell.execute_reply.started":"2025-01-15T22:13:51.451840Z","shell.execute_reply":"2025-01-15T22:13:55.242207Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Vérifier les valeurs manquantes après remplacement\nprint(articles.isnull().sum())\nprint(customers.isnull().sum())\nprint(transactions.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:14:07.772514Z","iopub.execute_input":"2025-01-15T22:14:07.772996Z","iopub.status.idle":"2025-01-15T22:14:10.360007Z","shell.execute_reply.started":"2025-01-15T22:14:07.772962Z","shell.execute_reply":"2025-01-15T22:14:10.358700Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"***Distribution des valeurs dans certaines colonnes***","metadata":{}},{"cell_type":"code","source":"# Histogramme de la distribution des prix des articles\nplt.figure(figsize=(10, 6))\nsns.histplot(transactions['price'], kde=True, bins=50)\nplt.title('Distribution des prix des articles')\nplt.xlabel('Prix')\nplt.ylabel('Fréquence')\nplt.show()\n\n# Histogramme du nombre d'articles achetés par transaction\nplt.figure(figsize=(10, 6))\nsns.histplot(transactions.groupby('customer_id')['article_id'].count(), kde=True, bins=50)\nplt.title('Distribution du nombre d\\'articles achetés par transaction')\nplt.xlabel('Nombre d\\'articles achetés')\nplt.ylabel('Fréquence')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:14:27.403434Z","iopub.execute_input":"2025-01-15T22:14:27.403862Z","iopub.status.idle":"2025-01-15T22:17:05.085640Z","shell.execute_reply.started":"2025-01-15T22:14:27.403831Z","shell.execute_reply":"2025-01-15T22:17:05.084226Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Analyse du nombre total de transactions**\n","metadata":{}},{"cell_type":"code","source":"\n# Analyse du nombre total de transactions\ntotal_transactions = transactions.shape[0]\nprint(f\"Nombre total de transactions: {total_transactions}\")\n\n# Nombre d'articles uniques dans les transactions\nunique_articles = transactions['article_id'].nunique()\nprint(f\"Nombre d'articles uniques dans les transactions: {unique_articles}\")\n\n# Nombre de clients uniques\nunique_customers = transactions['customer_id'].nunique()\nprint(f\"Nombre de clients uniques: {unique_customers}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:17:10.035340Z","iopub.execute_input":"2025-01-15T22:17:10.035852Z","iopub.status.idle":"2025-01-15T22:17:18.967406Z","shell.execute_reply.started":"2025-01-15T22:17:10.035806Z","shell.execute_reply":"2025-01-15T22:17:18.966122Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Analyse des achats par couleur**","metadata":{}},{"cell_type":"code","source":"# Comptage des achats par couleur\ncolor_counts = transactions_with_articles['colour_group_name'].value_counts()\n\n# Visualisation de la répartition des achats par couleur\nplt.figure(figsize=(10,6))\nsns.barplot(x=color_counts.index, y=color_counts.values, palette='coolwarm')\nplt.title(\"Répartition des achats par couleur\")\nplt.xlabel('Couleur')\nplt.ylabel('Nombre d\\'achats')\nplt.show()\n\n# Conclusion: Afficher la couleur la plus populaire\nprint(f\"La couleur la plus populaire est : {color_counts.index[0]} avec {color_counts.values[0]} achats.\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:20:36.245188Z","iopub.execute_input":"2025-01-15T21:20:36.245779Z","iopub.status.idle":"2025-01-15T21:20:39.141963Z","shell.execute_reply.started":"2025-01-15T21:20:36.245711Z","shell.execute_reply":"2025-01-15T21:20:39.140189Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Comportement des clients : Fréquence des achats**\n","metadata":{}},{"cell_type":"code","source":"# Nombre d'achats par client\ncustomer_purchase_counts = transactions['customer_id'].value_counts()\n\n# Visualisation de la répartition des achats par client\nplt.figure(figsize=(10,6))\nsns.histplot(customer_purchase_counts, kde=True, color='blue')\nplt.title(\"Répartition du nombre d'achats par client\")\nplt.xlabel('Nombre d\\'achats')\nplt.ylabel('Fréquence')\nplt.show()\n\n# Conclusion: Analyser les clients avec le plus grand nombre d'achats\ntop_customers = customer_purchase_counts.head(10)\nprint(\"Top 10 des clients avec le plus grand nombre d'achats:\")\nprint(top_customers)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:22:06.389473Z","iopub.execute_input":"2025-01-15T21:22:06.390043Z","iopub.status.idle":"2025-01-15T21:22:27.214245Z","shell.execute_reply.started":"2025-01-15T21:22:06.390005Z","shell.execute_reply":"2025-01-15T21:22:27.212780Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Distribution des articles achetés**\n","metadata":{}},{"cell_type":"code","source":"# Comptage des articles les plus populaires\narticle_counts = transactions['article_id'].value_counts()\n\n# Visualisation des 10 articles les plus populaires\ntop_articles = article_counts.head(10)\n\n\n\nplt.figure(figsize=(10,6))\nsns.barplot(x=top_articles.index, y=top_articles.values, palette='plasma')\nplt.title(\"Top 10 des articles les plus populaires\")\nplt.xlabel('Article ID')\nplt.ylabel('Nombre d\\'achats')\nplt.show()\n\n# Conclusion: Afficher les IDs des 10 articles les plus populaires\nprint(\"Les 10 articles les plus populaires sont :\")\nprint(top_articles)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:57:34.531831Z","iopub.execute_input":"2025-01-15T21:57:34.532322Z","iopub.status.idle":"2025-01-15T21:57:36.740190Z","shell.execute_reply.started":"2025-01-15T21:57:34.532289Z","shell.execute_reply":"2025-01-15T21:57:36.738767Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(articles.columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:49:19.294042Z","iopub.execute_input":"2025-01-15T21:49:19.294501Z","iopub.status.idle":"2025-01-15T21:49:19.302366Z","shell.execute_reply.started":"2025-01-15T21:49:19.294471Z","shell.execute_reply":"2025-01-15T21:49:19.300919Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Analyse des clients ayant fait des achats récents**","metadata":{}},{"cell_type":"code","source":"\n# Conclusion: Afficher les noms des 10 articles les plus populaires\nprint(\"Les 10 articles les plus populaires sont :\")\nprint(top_articles_names_sorted[['prod_name']])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:58:06.771525Z","iopub.execute_input":"2025-01-15T21:58:06.771929Z","iopub.status.idle":"2025-01-15T21:58:06.780540Z","shell.execute_reply.started":"2025-01-15T21:58:06.771900Z","shell.execute_reply":"2025-01-15T21:58:06.779255Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Convertir la date de transaction en format datetime\ntransactions['t_dat'] = pd.to_datetime(transactions['t_dat'])\n\n# Trouver la date la plus récente dans les transactions\nrecent_date = transactions['t_dat'].max()\n\n# Calculer le nombre de clients ayant effectué un achat après une certaine période\nrecent_transactions = transactions[transactions['t_dat'] == recent_date]\nrecent_customers = recent_transactions['customer_id'].nunique()\n\nprint(f\"Nombre de clients ayant effectué des achats récemment ({recent_date}): {recent_customers}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:42:19.900656Z","iopub.execute_input":"2025-01-15T21:42:19.901117Z","iopub.status.idle":"2025-01-15T21:42:24.025577Z","shell.execute_reply.started":"2025-01-15T21:42:19.901085Z","shell.execute_reply":"2025-01-15T21:42:24.023902Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"\\nConclusion générale :\")\nprint(f\"- La catégorie la plus populaire est {category_counts.index[0]} avec {category_counts.values[0]} achats.\")\nprint(f\"- La couleur la plus populaire est {color_counts.index[0]} avec {color_counts.values[0]} achats.\")\nprint(f\"- Les 10 clients les plus actifs sont : {top_customers.index.tolist()}.\")\nprint(f\"- Les 10 articles les plus populaires sont : {top_articles.index.tolist()}.\")\nprint(f\"- Il y a {recent_customers} clients ayant effectué un achat récent le {recent_date}.\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T21:43:38.684043Z","iopub.execute_input":"2025-01-15T21:43:38.684535Z","iopub.status.idle":"2025-01-15T21:43:38.692746Z","shell.execute_reply.started":"2025-01-15T21:43:38.684506Z","shell.execute_reply":"2025-01-15T21:43:38.691131Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# 1. Distribution des ventes (histogramme)\nplt.figure(figsize=(10,6))\nsns.histplot(article_counts.values, kde=True, color='teal')\nplt.title(\"Distribution des ventes d'articles\")\nplt.xlabel(\"Nombre de ventes\")\nplt.ylabel(\"Fréquence\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-15T22:00:45.732478Z","iopub.execute_input":"2025-01-15T22:00:45.733057Z","iopub.status.idle":"2025-01-15T22:00:53.091202Z","shell.execute_reply.started":"2025-01-15T22:00:45.733018Z","shell.execute_reply":"2025-01-15T22:00:53.089695Z"}},"outputs":[],"execution_count":null}]}