弱弱继续用python
完成工作:
1.使用python的xlrd模块读excel的数据,对数据时间进行解码和编码处理,统计用户的通话时长,主被叫次数,通话时段,每日通话次数
2.使用matplotlib把用户的行为数据简单的做个可视化,就是画个图

#coding=utf-8
# 用户通话信息类记录
class UserDataInfo(object):
    def __init__(self):
        self.calling_long = 0   #主叫时长
        self.called_long = 0    #被叫时长
        self.call_long = 0      #总时长

        self.calling_times = 0  #主叫次数
        self.called_times = 0   #被叫次数
        self.call_times = 0     #总次数

        self.time_intervel=[]   #通话时段
        for i in range(0,12):
            self.time_intervel.append(0)

        self.day_intervel=[]    #每日通话次数
        for i in range(0,31):
            self.day_intervel.append(0)

        self.call_freq= None       #通话最频繁

#coding=utf-8
import xlrd
import matplotlib.pyplot as plt
import UserDataInfo

def readData(url):
    data=xlrd.open_workbook(url)
    table=data.sheets()[0]  #多张sheet的情况读取第一张
    nrows=table.nrows
    ncols=table.ncols
    list=[]
    for rownum in range(0,nrows):
        row=table.row_values(rownum)
        for i in range(0,ncols):        #转码unicode转utf-8
            row[i]=row[i].encode('utf-8')
        if row:
            list.append(row)
    return list

#行为分析
def behavior_analysis(datalist):
    t=1
    for line in datalist:
        if(t==1):
            t=3
            continue
        dh=dateDecode(line[2])
        day=int(dh[0])
        hour=int(dh[-1])

        user.day_intervel[day]+=1
        user.time_intervel[hour/2]+=1


        timeStr=line[3]
        timelong = timeDecode(timeStr)

        if line[4]=='主叫':
            user.calling_times+=1
            user.calling_long+=timelong
        if line[4]=='被叫':
            user.called_times+=1
            user.called_long+=timelong


    user.call_times=user.calling_times+user.called_times    #总次数
    user.call_long=user.calling_long+user.called_long       #总时长

#解码时间
def timeDecode(timeStr):
    hour = min = sec = 0
    if timeStr.find('小时') != -1:
        hour = timeStr.split('小时')[0]
        timeStr = timeStr.split('小时')[1]
    if timeStr.find('分') != -1:
        min = timeStr.split('分')[0]
        timeStr = timeStr.split('分')[1]
    if timeStr.find('秒') != -1:
        sec = timeStr.split('秒')[0]

    timelong = int(sec) + int(min) * 60 + int(hour) * 60 * 60
    return timelong

#编码时间
def timeEncode(time):
    strtime=str(time%60)+"秒"
    time/=60
    if(time!=0):
        strtime=str(time%60)+"分"+strtime
        time/=60
        if (time != 0):
            strtime = str(time % 60) + "小时"+strtime
    return strtime

#解码日期
def dateDecode(dateStr):
    dateStrlist=dateStr.split(' ')
    dayStr=dateStrlist[0]
    dayStrlist=dayStr.split('-')
    day=dayStrlist[-1]

    timeStr=dateStrlist[-1]
    timeStrlist=timeStr.split(':')
    timeHour=timeStrlist[0]

    dayAndHour=[]
    dayAndHour.append(day)
    dayAndHour.append(timeHour)
    return dayAndHour


def printout():
    print "被叫次数:", user.called_times
    print "被叫时长:", timeEncode(user.called_long)

    print "主叫次数:", user.calling_times
    print "主叫时长:", timeEncode(user.calling_long)

    print "总次数:",user.call_times
    print "总时长:",timeEncode(user.call_long)

    print "日期",user.day_intervel
    print "时段",user.time_intervel

#数据可视化
def dataVisualization(userinfo):
    plt.plot(userinfo.day_intervel, 'k')
    plt.plot(userinfo.day_intervel, 'bo')
    plt.xlabel(u'日          期')
    plt.ylabel(u'通话次数')
    plt.title(u'每日通话分析')
    plt.grid(color='#95a5a6', linestyle='--', linewidth=1, axis='y', alpha=0.4)
    plt.show()

url="/Users/SeeKHit/Downloads/2017年01月语音通信.xls"
datalist=readData(url)

user=UserDataInfo.UserDataInfo()
behavior_analysis(datalist)

printout()
dataVisualization(user)