IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Calcul distance avec Geopy


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut Calcul distance avec Geopy
    Bonjour à tous,
    Je suis débutant sur Python. Je suis sur MacOS en Python 3.
    Mon besoin consiste à calculer une distance entre une Lat, Long d'une adresse et une Latref, Longref qui est toujours la meme.
    Si j'utilise des données en dur dans le code ci dessous, cela fonctionne :

    from geopy import distance

    test = (48.8518282, 2.2025612)
    reference = (48.8939012, 2.3196774)

    print(distance.distance(test, reference).km)

    Voici mon tableau csv de test en fichier joint
    et mon fichier python aussi.
    J'arrive a créer une nouvelle colonne avec
    df['Distance'] = df['Lat'] * df['Long']

    Mais je ne parviens pas à concatener deux colonnes en une nouvelle avec "Lat,Long" pour créer une variable comme "test" dans mon exemple ci dessus.
    La formule ci-dessous ne marche pas :
    df['coor'] = (df['Lat'] + ',' + df['Long'])

    Quand je concatene sur excel (avant transformation en csv) la Lat,Long pour ensuite l'utiliser pour calculer la distance, je n'y arrive pas non plus.

    Une bonne âme aurait-elle la solution à mon problème ?
    Merci encore de m'avoir lu.
    LaurentArchive.zip

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Salut,

    Citation Envoyé par lolodeville Voir le message
    Mon besoin consiste à calculer une distance entre une Lat, Long d'une adresse et une Latref, Longref qui est toujours la meme.
    Un peu de recherche sur Internet montre que GeoPy vient avec son calcul de distance (voir: https://www.section.io/engineering-e...en-two-points/)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour
    Citation Envoyé par lolodeville Voir le message
    Mais je ne parviens pas à concatener deux colonnes en une nouvelle avec "Lat,Long" pour créer une variable comme "test" dans mon exemple ci dessus.
    La formule ci-dessous ne marche pas :
    df['coor'] = (df['Lat'] + ',' + df['Long'])
    ok, tu n'as en fait aucune base python ...

    Lorsque tu avais testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test = (48.8518282, 2.2025612)
    test est un tuple ! et tu ne sais pas créer un tuple c'est expliqué dans tous cours / tutos et dans la documentation de python.

    --------
    Et, utiliser pandas pour un csv de 4 lignes c'est comment utiliser un bulldozer lorsque python le fait très bien en natif. A moins que l'intérêt de ton code est de découvrir pandas et pas le calcul ... Mais avant de s'attaquer à pandas, la moindre des choses est de s'attaquer à python

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut ma réponse
    Merci wiztricks pour ton retour.
    Si tu avais été attentif à mon code d'exemple, il utilise bien le calcul de distance de Geopy...
    Et ca foncttionne.
    Mon probleme est d'utiliser la fonction avec des données issues d'un csv.

    Merci papajoker pour ta réponse
    En fait, je n'ai pas le temps de me plonger des semaines dans Python, mais tu as parfaitement raison, je devrais y consacrer plus de temps.
    Mon fichier csv est juste un fichier de test bien sur. Je vais pas m'embeter pour 4 lignes !
    En revanche, que les données soient un tuple, j'en ai entendu parler, mais je voulais savoir comment en générer avec mes données du csv.
    Je vais tenter d'avancer avec cette info pour voir. Mais c'est un peu frustrant de voir qu'une multipllication de deux valeurs avec Pandas fonctionne et pas le regroupement en concatenant... Mais bon, on est pas sur xls non plus...
    Bref, merci encore d'avoir été si réactif.
    Bonne soirée,
    Laurent

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Citation Envoyé par lolodeville Voir le message
    Merci wiztricks pour ton retour.
    Si tu avais été attentif à mon code d'exemple, il utilise bien le calcul de distance de Geopy...
    Et ca foncttionne.
    Mon probleme est d'utiliser la fonction avec des données issues d'un csv.
    Votre code n'est pas lisible.

    De plus, le titre de votre message n'a aucun rapport avec la question posée maintenant qui est plutôt côté calcul avec pandas (que vous ne mentionnez pas) d'une colonne en fonction d'autres colonnes.... Où vous avez aussi des tas d'exemples.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Citation Envoyé par lolodeville Voir le message
    pas le regroupement en concatenant... Mais bon, on est pas sur xls non plus...
    Comme dit plus haut, ici tu as uniquement un problème python et pas pandas !
    Tu essayes d'ajouter (à ta façon) des truc et des machins en espérant avoir en résultat un bidule que tu ne connais même pas
    Pour faire imager/exagérer (à peine) ...
    tu ne connais pas les entiers en python et tu n'as aucune idée de comment en créer
    tu ne connais pas les chaines, tu ne sais pas en déclarer une et tu penses que l'on peut les additionner à la façon php
    etc ...

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut Réponse
    C'est tout à fait ca. Je suis d'accord que je ne m'y prend visiblement pas bien et comme indiqué au début de mon post, je suis débutant, mais j'ai réussi de petite chose sympa...
    Bref, ca m'amuse de découvrir.
    Pour info, j'y ai passé la journée à chercher. Je ne post donc pas direct mon probleme... Je tente.

    Alors pour tenter d'être plus pragmatique, que pourriez vous me proposer comme démarche ou axe d'amélioration à part les "Y'a plus de réponses en ligne" ou "Y'a qu'a chercher" vu que vous m'avez bien fait comprendre que mon probleme venait plus de python que de Pandas... Car j'etait meme parti sur des histoires de clé API Google map pour trouver les Lat tet Long des adresses mais on va me les fournir.
    Merci encore,
    Laurent

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Citation Envoyé par lolodeville Voir le message
    je suis débutant
    Cela n'excuse rien, il faut toujours commencer par apprendre les bases !

    Citation Envoyé par lolodeville Voir le message
    que pourriez vous me proposer comme démarche ou axe d'amélioration à part les "Y'a plus de réponses en ligne" ou "Y'a qu'a chercher"
    je trouve que c'est de la folie de ne pas vouloir apprendre par soit même dans ce cas !
    Je te l'ai dit, ici, c'est exactement comme si tu me disais "Je ne sais pas ce qu'est une chaine de caractère en python, je veux que vous me l'expliquiez"

    Bon , j'ai énormément de temps à perdre ce soir

    Savoir ce qu'est un tuple, une liste est LA base
    https://frederic-lang.developpez.com...a-python#LIV-4

    un tuple est un cousin très proche de la liste, tu en as écrit un dans ton premier test test = (48.8518282, 2.2025612) (une liste de 2 réels), mais dans ton second avec pandas, tu n'es pas capable de reproduire la même chose ????
    Tu n'as même pas compris que ton exemple 1 n'avait strictement rien à voir avec pandas ? pandas n'est pas python !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import pandas as pd
    from geopy import distance
     
    # charger la base de données
    df = pd.read_csv(r'test1.csv', sep = ';')
     
    # ajouter une colonne distance
    df['Distance'] = df['Lat'] * df['Long']
     
    #ne marche pas
    #df['coor'] = (df['Lat'] + ',' + df['Long'])
     
    print (df)
    # df.head()
    Un tuple c'est variable_de_type_tuple = (variable1, variable2) mais toi, tu inventes ta propre syntaxe avec des + et des chaines…

    Ensuite, il n'y a aucune logique avec ton exemple 1 puisque tu penses trouver par magie la distance sans réutiliser cette fonction distance()
    Dans ton test2, il n'y a simplement aucun rapport avec l'exemple 1, alors que le but est de faire la même chose

    Donc, en plus tu n'as strictement rien compris à ton exemple 1 (Et la flemme de lire la doc de ta librairie )

    si je reprends ton exemple 1 (en plus clair ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     # a,b x, y viennent du csv
    ville1 = (x, y)
    ville2 = (a, b)
    distance_entre_ces_villes_enkm = distance.distance(ville1, ville2).km
    # peut écrire directement aussi:
    resultat_en_km = distance.distance((colonneX, colonneY), (colonneA, colonneB)).km
    Tu te rends même pas compte qu'il faut 2 lieux pour calculer une distance ???? Toi, tu penses trouver une distance entre une latitude et longitude Alors que tu as pourtant bien entré 2 lieux dans ton csv.



    -------
    Donc en résumé, des erreurs plus que grossières (désolé mais le mot n'est pas faible) à tous les étages.

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Citation Envoyé par lolodeville Voir le message
    Alors pour tenter d'être plus pragmatique, que pourriez vous me proposer comme démarche ou axe d'amélioration à part les "Y'a plus de réponses en ligne" ou "Y'a qu'a chercher" vu que vous m'avez bien fait comprendre que mon probleme venait plus de python que de Pandas...
    Soit vous voulez une solution prête à emporter, soit vous voulez apprendre à programmer...

    Et si vous voulez apprendre à programmer, il faut commencer par décrire correctement le problème à résoudre: un tableau avec 2 colonnes latitude, longitude mais qui pourraient être abscisse, ordonnée ou prix, quantité .... et le besoin: comment fabriquer une 3ème colonne avec le résultat d'une fonction appliquée à...

    Si vous voulez apprendre à programmer, il faut avoir du temps, se choisir de bons tutos et s'entrainer à faire les exos proposés.

    Si vous voulez juste une solution, allez interroger ChatGPT, il est fait pour çà: obtenir des résultats sans trop comprendre:
    Citation Envoyé par ChatGPT
    Pour calculer une colonne en fonction du contenu d'autres colonnes avec Pandas, vous pouvez utiliser la méthode apply() en combinant des fonctions lambda pour créer la fonction de calcul.

    Supposons que vous avez un DataFrame df avec des colonnes 'colonne1', 'colonne2' et 'colonne3', et que vous souhaitez créer une nouvelle colonne 'colonne4' en multipliant 'colonne1' et 'colonne2', puis en soustrayant 'colonne3'. Voici comment vous pouvez faire cela en utilisant Pandas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import pandas as pd
     
    # Créer le DataFrame
    df = pd.DataFrame({'colonne1': [1, 2, 3],
                       'colonne2': [4, 5, 6],
                       'colonne3': [1, 2, 3]})
     
    # Utiliser la méthode apply() avec une fonction lambda pour calculer la nouvelle colonne
    df['colonne4'] = df.apply(lambda row: (row['colonne1'] * row['colonne2']) - row['colonne3'], axis=1)
     
    # Afficher le DataFrame résultant
    print(df)
    La méthode apply() applique la fonction lambda à chaque ligne du DataFrame, en accédant aux valeurs de chaque colonne en utilisant la syntaxe row['nom_colonne']. L'argument axis=1 indique à Pandas d'appliquer la fonction lambda le long de chaque ligne (par opposition à chaque colonne si axis=0).
    Et si vous venez ici pour avoir de l'aide pour comprendre montrez que vous avez essayé quand même un peu plutôt que de vous contenter de l'excuse "je suis débutant".

    - W

    PS: Ce n'est pas moi qui est crée l'utilisateur ChatGPT mais effectivement, faire un robot qui réponde (automatiquement) aux questions posées par les débutants serait un bon exercice.... mais je n'ai pas le temps.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Calcul distance avec valeurs aberrantes
    Par Julien0134 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 01/04/2018, 09h42
  2. Calcule de distance avec la fonction distanceTo()
    Par etude_geo dans le forum IGN API Géoportail
    Réponses: 7
    Dernier message: 20/06/2012, 14h11
  3. [Flex3] Calcul distance avec google map
    Par DBA_OCP dans le forum Flex
    Réponses: 5
    Dernier message: 03/01/2011, 19h58
  4. Calcul de distance avec Google Map
    Par jouclar dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 22/04/2010, 15h58
  5. Calculer une distance avec mappoint
    Par Amokrane dans le forum Framework .NET
    Réponses: 2
    Dernier message: 21/03/2008, 20h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo