libere-tes-chaine-de-mots/import_data/31_importation_linkedin_shares.py

57 lines
1.9 KiB
Python
Raw Normal View History

import pandas as pd
import datetime
import os
from pathlib import Path
from utils.documents_to_database import documents_to_database
2024-11-30 22:03:49 -05:00
## %% Obtenir le répertoire du fichier courant
# Obtenir le répertoire du fichier courant
try:
2024-11-30 22:03:49 -05:00
# Ceci fonctionnera lors de l'exécution en tant que script
script_dir = Path(__file__).parent.parent
except NameError:
2024-11-30 22:03:49 -05:00
# Ceci fonctionnera dans des environnements interactifs
script_dir = Path().absolute()
project_root = script_dir
linkedin_data_path = os.path.join(project_root, 'import_data', 'data', 'LinkedIn', 'shares', 'Shares.csv')
raw_shares = pd.read_csv(linkedin_data_path)
2024-11-30 22:03:49 -05:00
## %% Ajouter des colonnes d'identification au DataFrame
raw_shares['index'] = "rs_linkedin_shares"
raw_shares['type'] = "posts"
raw_shares['network'] = "LinkedIn"
raw_shares['chemin'] = linkedin_data_path
2024-11-30 22:03:49 -05:00
## %% Convertir la date en timestamp et supprimer la colonne originale
raw_shares["creation_timestamp"] = raw_shares["Date"].apply(
lambda x: int(datetime.datetime.fromisoformat(x).timestamp())
)
del raw_shares["Date"]
2024-11-30 22:03:49 -05:00
## %% Renommer les colonnes pour correspondre au format standard
raw_shares.rename(columns={"ShareLink": "uri", "ShareCommentary": "texte"}, inplace=True)
2024-11-30 22:03:49 -05:00
## %% Convertir la colonne 'texte' en type string
raw_shares["texte"] = raw_shares["texte"].apply(lambda x: str(x))
2024-11-30 22:03:49 -05:00
## %% Supprimer les colonnes non nécessaires
del raw_shares["SharedUrl"]
del raw_shares["MediaUrl"]
del raw_shares["Visibility"]
2024-11-30 22:03:49 -05:00
## %% Remplacer les valeurs NaN par des chaînes vides
raw_shares.fillna(value="", inplace=True)
2024-11-30 22:03:49 -05:00
## %% Supprimer les doublons basés sur le texte et la date de création
raw_shares.drop_duplicates(subset=['texte', 'creation_timestamp'], inplace=True)
2024-11-30 22:03:49 -05:00
## %% Filtrer les partages avec un texte vide
# Filtrer les textes vides
raw_shares = raw_shares[~raw_shares['texte'].str.strip('\n').str.strip().eq('')]
2024-11-30 22:03:49 -05:00
## %% Envoyer les données à la base de données
documents_to_database(raw_shares)