Gestionnaire de graphe social avec import CSV et export JSON. Supporte l'analyse FOAF (Friend of a Friend).
- â Import CSV avec gestion automatique des espaces et doublons
- â Relations bidirectionnelles ou unidirectionnelles
- â Export JSON du graphe complet
- â Export GraphML (Gephi, yEd, Cytoscape)
- â Analyse FOAF (Friend of a Friend)
- â Statistiques du rĂ©seau social
- â Rapport dĂ©taillĂ© FOAF pour tous les utilisateurs
- Python 3.12+
Note: Ce projet n'utilise que des modules Python standards. Aucune installation de dépendances n'est requise.
Chaque ligne du fichier CSV représente un utilisateur et ses amis:
Utilisateur,Ami1,Ami2,Ami3,...
Alice,Bob,Charlie,David
Bob,Alice,Eve,Frank
Charlie,Alice,David,George
Notes:
- Les espaces avant/aprÚs les noms sont automatiquement supprimés
- Les doublons sont automatiquement éliminés
- Les lignes vides sont ignorées
Le script utilise uniquement des modules Python standards, aucune installation n'est requise.
./social-graph <fichier_csv> [options]| Option | Description |
|---|---|
--no-bidirectional |
Relations unidirectionnelles (défaut: bidirectionnelles) |
--output <fichier> |
Fichier JSON de sortie (défaut: social_graph.json) |
--foaf-report <fichier> |
GénÚre un rapport FOAF détaillé |
--graphml <fichier> |
Export GraphML pour visualisation (Gephi, yEd, Cytoscape) |
--stats |
Affiche les statistiques du graphe |
--query-user <nom> |
Affiche les amis et FOAF d'un utilisateur |
./social-graph data/input/friends.csvSortie: social_graph.json
./social-graph data/input/friends.csv --statsđ Statistiques du graphe:
- Nombre d'utilisateurs: 9
- Nombre de relations: 12
- Mode: bidirectionnel
- Moyenne d'amis par utilisateur: 2.67
- Maximum d'amis: 3
- Minimum d'amis: 2
./social-graph data/input/friends.csv --foaf-report data/output/foaf_report.json --stats./social-graph data/input/friends.csv --query-user Aliceđ€ Informations pour 'Alice':
- Amis directs (3): Bob, Charlie, David
- Amis d'amis (4): Eve, Frank, George, Helen
./social-graph data/input/friends.csv --graphml data/output/friends.graphml --statsLe fichier .graphml peut ĂȘtre ouvert avec:
- Gephi - Visualisation et analyse de graphes
- yEd - Ăditeur de diagrammes
- Cytoscape - Analyse de réseaux biologiques et sociaux
./social-graph data/input/friends.csv --no-bidirectional --output data/output/graph_unidirectional.jsonfrom social_graph import SocialGraph
# Créer un graphe bidirectionnel
graph = SocialGraph(bidirectional=True)
# Charger depuis CSV
graph.load_from_csv('data/input/friends.csv')
# Obtenir les amis d'un utilisateur
friends = graph.get_friends('Alice')
print(f"Amis d'Alice: {friends}")
# Obtenir les amis d'amis
foaf = graph.get_foaf('Alice')
print(f"FOAF d'Alice: {foaf}")
# Statistiques
stats = graph.get_statistics()
print(f"Total utilisateurs: {stats['total_users']}")
# Export JSON
graph.to_json('data/output/my_graph.json')
# Export GraphML (pour visualisation)
graph.to_graphml('data/output/my_graph.graphml')
# Rapport FOAF
graph.export_foaf_report('data/output/foaf_report.json')graph = SocialGraph(bidirectional=True)
# Ajouter des relations
graph.add_friendship('Alice', 'Bob')
graph.add_friendship('Alice', 'Charlie')
# Export
graph.to_json('custom_graph.json'){
"Alice": ["Bob", "Charlie", "David"],
"Bob": ["Alice", "Eve", "Frank"],
"Charlie": ["Alice", "David", "George"]
}{
"Alice": {
"direct_friends": ["Bob", "Charlie", "David"],
"friends_of_friends": ["Eve", "Frank", "George", "Helen", "Ivan"],
"total_foaf": 5
}
}Exécuter les exemples d'utilisation:
python examples/advanced_usage.py data/input/friends.csvRésultat:
đ ======================================================== đ
EXEMPLES AVANCĂS - Social Graph Manager
đ ======================================================== đ
đ Fichier CSV utilisĂ©: data/input/friends.csv
============================================================
Exemple 1: Recommandations d'amis
============================================================
đ€ Suggestions d'amis pour Alice:
Vous pourriez connaĂźtre: Eve, Frank, George, Helen
============================================================
Exemple 2: Analyse du réseau
============================================================
đ Statistiques globales:
- Total utilisateurs: 9
- Total relations: 12
- Moyenne d'amis: 2.67
đ Utilisateurs les plus connectĂ©s:
- Eve: 3 amis
- Alice: 3 amis
- Bob: 3 amis
- Charlie: 3 amis
- Helen: 3 amis
============================================================
Exemple 3: Portée du réseau
============================================================
đ PortĂ©e du rĂ©seau pour chaque utilisateur:
Alice:
- Amis directs: 3
- Amis d'amis: 4
- Portée totale: 7 personnes
[... output continues for all 9 users ...]
============================================================
Exemple 4: Amis communs
============================================================
đ„ Amis communs entre Alice et Bob:
Aucun ami commun
============================================================
Exemple 5: Graphe personnalisé
============================================================
đ± Graphe de followers (unidirectionnel):
Alice suit: Bob, Charlie
Bob suit: Alice
Charlie suit: David
đŸ Graphe exportĂ© vers 'data/output/custom_followers.json'
============================================================
Exemple 6: Force des connexions
============================================================
đȘ Force des connexions pour Alice:
- Charlie: 1 amis communs
- David: 1 amis communs
- Bob: 0 amis communs
============================================================
⚠Tous les exemples ont été exécutés!
============================================================
Exemples inclus:
- â Recommandations d'amis (FOAF)
- â Analyse du rĂ©seau et statistiques
- â PortĂ©e du rĂ©seau (amis + FOAF)
- â Amis communs entre utilisateurs
- â Graphe personnalisĂ© (unidirectionnel)
- â Force des connexions
| Méthode | Description |
|---|---|
__init__(bidirectional=True) |
Initialise le graphe |
load_from_csv(filepath) |
Charge depuis CSV |
add_friendship(user, friend) |
Ajoute une relation |
get_friends(user) |
Retourne les amis d'un utilisateur |
get_foaf(user) |
Retourne les amis d'amis |
get_all_users() |
Retourne tous les utilisateurs |
get_statistics() |
Retourne les statistiques |
to_json(filepath) |
Export en JSON |
to_graphml(filepath) |
Export en GraphML (visualisation) |
export_foaf_report(filepath) |
Export rapport FOAF |
python-social-graph/
âââ src/social_graph/ # Package source
â âââ __init__.py
â âââ cli.py # Interface CLI
â âââ graph.py # Classe SocialGraph
âââ data/
â âââ input/ # Fichiers CSV sources
â â âââ friends.csv # Exemple
â âââ output/ # Fichiers gĂ©nĂ©rĂ©s (ignorĂ©s par git)
âââ docs/
â âââ gephi-guide.md # Guide Gephi
âââ examples/
â âââ advanced_usage.py # Exemples d'utilisation
âââ social-graph # Script wrapper (point d'entrĂ©e)
âââ setup.py # Configuration du package
âââ pyproject.toml # Configuration moderne
âââ requirements.txt # Aucune dĂ©pendance requise
âââ CLAUDE.md # Guide pour Claude Code
âââ README.md # Ce fichier
graph = SocialGraph()
graph.load_from_csv('mon_reseau.csv')
# Trouver les utilisateurs les plus connectés
stats = graph.get_statistics()
for user in graph.get_all_users():
friend_count = len(graph.get_friends(user))
if friend_count >= stats['avg_friends_per_user']:
print(f"{user}: {friend_count} amis")# Suggérer des amis potentiels (FOAF)
user = "Alice"
suggestions = graph.get_foaf(user)
print(f"Suggestions d'amis pour {user}: {suggestions}")# Export GraphML pour Gephi, yEd, Cytoscape
graph.to_graphml('network.graphml')
# Export JSON pour D3.js ou autres outils web
graph.to_json('network_data.json')Ouvrez le fichier .graphml dans Gephi pour:
- Visualiser le réseau social
- Détecter les communautés
- Calculer les métriques de centralité
- Générer des mises en page automatiques
MIT