Harsh032/whatsapp_chat_analyzer
0
1import re2import pandas as pd3import warnings4 5 6warnings.filterwarnings("ignore")7 8 9f = open("WhatsApp Chat with Harsh.txt" , "r", encoding = "utf-8")10data = f.read()11 12def preprocess(data):13 14 # Define a regular expression pattern to match date, time, and message15 pre_pattern = re.compile(r'(\d+/\d+/\d+), (\d+:\d+\s[APMapm]+) - (\w+): (.+)')16 17 dates = re.findall(pre_pattern, data)18 19 post_pattern = re.compile(r'(\d+/\d+/\d+), (\d+:\d+\s[APMapm]+), (\w+), (.+)')20 # Define a regular expression pattern to match date, time, and message21 22 date = []23 time = []24 sender = []25 message_content = []26 27 for message in dates:28 message_text = ', '.join(message)29 30 match = post_pattern.match(message_text)31 if match:32 date.append(match.group(1))33 time.append(match.group(2))34 sender.append(match.group(3))35 message_content.append(match.group(4))36 else:37 print(f"Pattern did not match for message: {message_text}")38 39 # Create a DataFrame40 df = pd.DataFrame({41 'date': date,42 'time': time,43 'sender': sender,44 'message': message_content45 })46 47 df['date'] = pd.to_datetime(df['date'], format='%m/%d/%y')48 49 df['year'] = df['date'].dt.year50 51 df['month'] = df['date'].dt.month_name()52 53 df['day'] = df['date'].dt.day54 55 df['time'] = pd.to_datetime(df['time'] ).dt.time56 57 df['hour'] = pd.to_datetime(df['time'], format='%H:%M:%S').dt.hour58 59 df['minute'] = pd.to_datetime(df['time'], format='%H:%M:%S').dt.minute60 61 62 return df