本文包括邮箱登入,邮件数据分析,长短时神经网络分析,时间序列分析。
参考文献原文为对google邮箱的翻译
1 163邮箱登入
本文利用imapclient
库进行登入,网易邮箱登入会遇到错误可以refer一下链接 本文主要获取邮件收取的时间序列,需要获取邮件更多信息可以参考 。获取2016年1月1日开始至今的邮件。
import imapclient
import pandas as pd
import getpass
youremail = input()
yourpassword = getpass.getpass()
imapObj = imapclient.IMAPClient("imap.163.com", ssl=True) #若使用其他邮箱 可以换为其他邮箱的IMAP服务器地址
imapObj.login(youremail, yourpassword)
imapObj.select_folder("INBOX", readonly=True)
UIDs = imapObj.search('(SINCE "01-Jan-2016")')
mails = []
for msgid, data in imapObj.fetch(UIDs, ["ENVELOPE"]).items():
envelope = data[b"ENVELOPE"]
date = envelope.date
if envelope.subject is not None:
subject = envelope.subject.decode()
else:
subject = None
mails.append((subject, date))
mail_df = pd.DataFrame(mails)
mail_df.columns = ["Subject", "Date"]
mail_df["Date"] = pd.to_datetime(mail_df["Date"])
mail_df = mail_df.set_index("Date")
print("A total of {} e-mails loaded.".format(len(mail_df)))
python2 环境可以运行,换完python3 环境会遇到以下问题[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)
暂未解决
2 邮件数据分析
本节对数据按照小时和星期进行总汇分析,并进行可视化。
对于可视化的色彩渐变可参考,更改调色板可参考。
#分析汇总代码
import calendar
import seaborn as sns
import matplotlib.pyplot as plt
weekdays = [calendar.day_name[i] for i in range(7)]
# E-Mails per Hour
per_hour = pd.DataFrame(mail_df["Subject"].resample("h").count())
per_hour_day = (
per_hour.groupby([per_hour.index.hour]).sum()
/ per_hour.groupby([per_hour.index.hour]).count()
)
per_hour_day.reset_index(inplace=True)
per_hour_day.columns = ["Hour