Mahak1230/DialogueDynamics
1
1import re
2import pandas as pd
3
4def preprocess(data):
5 pattern = '\d{1,2}/\d{1,2}/\d{2,4},\s\d{1,2}:\d{2}\s[a-z]{2}\s-\s'
6 messages = re.split(pattern, data)[1:]
7 dates = re.findall(pattern, data)
8 dates = [i.replace("\u202f", " ") for i in dates]
9 df = pd.DataFrame({'user_message': messages, 'message_date': dates})
10 df['message_date'] = pd.to_datetime(df['message_date'], format='%d/%m/%y, %I:%M %p - ')
11 users = []
12 messages = []
13 for message in df['user_message']:
14 entry = re.split('([\w\W]+?):\s', message)
15 if entry[1:]:
16 users.append(entry[1])
17 messages.append(entry[2])
18 else:
19 users.append('group notification')
20 messages.append(entry[0])
21
22 df['user'] = users
23 df['message'] = messages
24 df.drop(columns=['user_message'], inplace=True)
25 df.rename(columns={'message_date': 'date'}, inplace=True)
26 df['day_date'] = df['date'].dt.date
27 df['year'] = df['date'].dt.year
28 df['month_num'] = df['date'].dt.month
29 df['month'] = df['date'].dt.month_name()
30 df['day'] = df['date'].dt.day
31 df['day_name'] = df['date'].dt.day_name()
32 df['hour'] = df['date'].dt.hour
33 df['minute'] = df['date'].dt.minute
34
35 period = []
36 for hour in df['hour']:
37 if hour == 23:
38 period.append(str(hour) + "-" + str('00'))
39 elif hour == 0:
40 period.append(str('00') + "-" + str(hour + 1))
41 else:
42 period.append(str(hour) + "-" + str(hour + 1))
43
44 df['time_period'] = period
45
46 return df
47 