Python calcul d'une durée de connexion à partir de 2 col
Ferméyg_be Messages postés 23456 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 février 2025 - 11 juil. 2022 à 10:29
- Python calcul d'une durée de connexion à partir de 2 col
- Gmail connexion - Guide
- Calcul moyenne excel - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Word numéro de page 1/2 - Guide
9 réponses
9 juil. 2022 à 11:49
bonjour,
il serait préférable de partager un exemple que nous puissions tester.
Peux-tu ajouter
print (type(time_1), time_1)
Que contiendra "valeurs"?
Modifié le 9 juil. 2022 à 12:57
suggestion:
def td(x): f="%Y-%m-%d %H:%M:%S" return datetime.datetime.strptime(x['purchase_time'],f)- \ datetime.datetime.strptime(x['signup_time'],f) transactions["connected_time"].apply(td,axis=1)
9 juil. 2022 à 22:19
Merci pour tes réponses et suggestions,
Valeurs est initialement destiné à enregistrer(sous la forme d'une colonne d'un DataFrame) les valeurs issues de la différence entre signup_time et purchase_time.
En suivant ta suggestion j'obtiens le message suivant:
KeyError: 'connected_time'
Je pense qu'il faut que je définisse 'connecter_time' en amont
En fait signup_time et purchase_time sont dtype: object
9 juil. 2022 à 22:31
Il serait préférable de partager un exemple complet, simplifié, que nous puissions tester.
Tu ne précises même pas ce qu'est précisément "transactions".
exemple:
import pandas as pd import datetime def td(x): f="%Y-%m-%d %H:%M:%S" return datetime.datetime.strptime(x['purchase_time'],f)- \ datetime.datetime.strptime(x['signup_time'],f) t="2015-02-24 22:55:49" transactions = pd.DataFrame({'purchase_time': [t,t,t],'signup_time': [t,t,t]}) print(transactions) transactions['c3'] = transactions.apply(td,axis=1) print(transactions)
9 juil. 2022 à 22:54
Merci pour ta réponse. transactions est un DataFrame issu d'un fichier csv
Voici une partie des données
user_id signup_time purchase_time purchase_value device_id source browser sex age ip_address
22058 2015-02-24 22:55:49 2015-04-18 2:47:11 34 QVPSPJUOCKZAR SEO Chrome M 39 732758368.8
333320 2015-06-07 20:39:50 2015-06-08 1:38:54 16 EOGFQPIZPYXFZ Ads Chrome F 53 350311387.9
1359 2015-01-01 18:52:44 2015-01-01 18:52:45 15 YSSKYOSJHPPLJ SEO Opera M 53 2621473820.0
150084 2015-04-28 21:13:25 2015-05-04 13:54:50 44 ATGTXKYKUDUQN SEO Safari M 41 3840542444.0
221365 2015-07-21 7:09:52 2015-09-09 18:40:53 39 NAUITBZFJKHWW Ads Safari M 45 415583117.5
159135 2015-05-21 6:03:03 2015-07-09 8:05:14 42 ALEYXFXINSXLZ Ads Chrome M 18 2809315200.0
50116 2015-08-01 22:40:52 2015-08-27 3:37:57 11 IWKVZHJOCLPUR Ads Chrome F 19 3987484329.0
360585 2015-04-06 7:35:45 2015-05-25 17:21:14 27 HPUCUYLMJBYFW Ads Opera M 34 1692458728.0
159045 2015-04-21 23:38:34 2015-06-02 14:01:54 30 ILXYDOZIHOOHT SEO IE F 43 3719094257.0
182338 2015-01-25 17:49:49 2015-03-23 23:05:42 62 NRFFPPHZYFUVC Ads IE M 31 341674739.6
199700 2015-07-11 18:26:54 2015-10-28 21:59:40 13 TEPSJVVXGNTYR Ads Safari F 35 1819008578.0
73884 2015-05-29 16:22:02 2015-06-16 5:45:58 58 ZTZZJUCRDOCJZ Direct Chrome M 32 4038284553.0
79203 2015-06-16 21:19:35 2015-06-21 3:29:59 18 IBPNKSMCKUZWD SEO Safari M 33 4161540927.0
299320 2015-03-03 19:17:07 2015-04-05 12:32:36 50 RMKQNVEWGTWPC Direct Safari M 38 3178510015.0
82931 2015-02-16 2:50:30 2015-04-16 0:56:47 15 XKIFNYUZMBWFU SEO IE M 24 4203487754.0
31383 2015-02-01 1:06:17 2015-03-24 10:17:58 58 UNUAVQXNWFBMO SEO Safari F 24 995732779.0
78986 2015-05-15 3:52:08 2015-08-11 2:29:47 57 TGHVAWBMZRDHH SEO FireFox M 23 3503883392.0
119824 2015-03-20 0:31:27 2015-04-05 7:31:46 55 WFIIFCPIOGMHT Ads Safari M 38 131423.789
357386 2015-02-03 0:48:38 2015-03-24 18:27:23 40 NWSVDOHYIOBDR Ads FireFox M 24 3037372279.0
289172 2015-07-17 5:48:45 2015-11-12 22:08:11 46 KFZGQIWDIRLZB Direct FireFox F 53 1044590098.0
154699 2015-07-08 15:35:44 2015-07-20 0:11:52 24 TYZPZLEWNJJRI Direct FireFox F 23 3847612074.0
316355 2015-08-08 20:05:50 2015-10-03 2:21:46 47 IHGECNGZGQOAZ SEO Chrome M 28 3836794299.0
343378 2015-01-30 8:50:29 2015-04-22 15:11:45 47 VOMVNRHNBLLMI SEO Chrome F 24 1008390841.0
370338 2015-01-08 11:47:29 2015-03-29 20:46:44 25 QLMZBEDPYFUXT Ads IE M 34 3442657972.0
171711 2015-01-11 1:51:15 2015-01-11 1:51:16 52 YPLQGKBAAULUV Direct IE F 35 1120619336.0
59780 2015-01-04 22:32:33 2015-01-16 1:13:43 31 WUMOBGUCBOXPO SEO FireFox M 36 1752166824.0
176129 2015-01-28 12:53:51 2015-01-29 23:21:43 37 XUNJIVTRXCRZL Ads IE M 32 745823926.8
100886 2015-07-12 14:14:04 2015-07-29 7:41:26 54 GIREUSMFWWUZJ SEO Chrome F 28 1799140971.0
221257 2015-05-29 17:55:17 2015-09-05 22:42:38 12 LGFXOENGXOBXI SEO IE M 19 698700037.4
151705 2015-01-07 3:44:53 2015-01-07 3:44:54 48 URHCRIXOMLJMH SEO Chrome F 27 2836025221.0
399610 2015-04-03 20:06:51 2015-06-01 7:42:42 30 CLTWKVSGDCFRD SEO FireFox F 39 287463049.3
396746 2015-08-05 23:50:35 2015-08-14 12:08:55 56 JUWCOHMHRBDCL SEO IE M 56 2937613755.0
243817 2015-02-13 18:16:05 2015-04-23 17:44:27 72 YIIEFBZUGEXNR Direct Chrome F 32 2521870760.0
262245 2015-01-03 3:29:05 2015-02-26 23:23:55 38 YAQQIDVLQRBLL Ads IE F 21 2803457087.0
256743 2015-06-12 19:11:32 2015-07-11 6:42:08 33 VVZIVFUBISCEV SEO IE M 22 2260745439.0
9 juil. 2022 à 22:57
Ce n'est pas un problème de données, c'est un problème de type.
Il serait préférable de partager un programme exemple complet, simplifié, que nous puissions tester.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question9 juil. 2022 à 23:21
Ah OK, voici la première version que j'avais tapé:
import pandas as pd import datetime from datetime import timedelta #Analyse de la variable du temps de connexion #stockage des données dans 2 variables: time_1 et time_2 time_1 = transactions['signup_time'] print(time_1.head()) time_2 = transactions['purchase_time'] print(time_2.head()) print (type(time_1), time_1) #calcul des durées de connexion entre signup_time et purchase_time #calcul de la durée de connexion à partir de la différence entre time_1 et time_2 myDateTime1 = datetime.datetime(time_1) myDateTime2 = datetime.datetime(time_2) delta_time = myDateTime2 - myDateTime1 #ajouter une colonne dans le dataframe pour la durée de connexion transactions.insert("connected_time", valeurs) transactions.head()
10 juil. 2022 à 08:21
Ce code est incomplet, comment transactions est-il créé?
Bonjour,
En fait transactions est chargé de la manière suivante:
transactions = pd.read_csv(‘transactions’)
c’est la ligne manquante.
en te remerciant
10 juil. 2022 à 10:36
Bonjour
merci de lire et appliquer ceci https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Bonjour,
import pandas as pd import datetime transactions = pd.read_csv('LEFICHIER.csv', delimiter=' ', engine='python') values= [] dt_format = '%Y-%m-%d %H:%M:%S' for i in range(len(transactions)): t1 = transactions['signup_time'][i] t2 = transactions['purchase_time'][i] dt1 = datetime.datetime.strptime(t1, dt_format) dt2 = datetime.datetime.strptime(t2, dt_format) values.append(dt2 - dt1) transactions.insert(column="connected_time", value=values, loc=len(transactions.columns)) print(transactions.head())
Il y a peut-être une autre façon de parcourir les lignes avec panda plutôt qu'un range + len, à voir.
Purée, il craint ce nouveau système ccm...
Modifié le 10 juil. 2022 à 14:50
et ainsi?
import pandas as pd import datetime def td(x): f="%Y-%m-%d %H%M%S" return datetime.datetime.strptime(x['purchase_time'],f)- \ datetime.datetime.strptime(x['signup_time'],f) transactions = pd.read_csv("transactions",delimiter=' ', engine='python') transactions["connected_time"] = transactions.apply(td,axis=1) print(transactions)
EDIT: j'ai du changer le format de date, suite à des soucis de couper/coller.
Je ne comprends pas d'où venait le soucis "Key Error" du 9 juil. 2022 à 22:19.
11 juil. 2022 à 09:55
Merci beaucoup, il est vrai que le calcul de temps à partir de ce format n'est pas évident me concernant
Merci pour votre aide dans la résolution et la compréhension de ma question
Bonne journée
11 juil. 2022 à 10:29
Le moment venu, peux-tu marquer la discussion comme résolue?