第 0020 题: 登陆中国联通网上营业厅 后选择「自助服务」 --> 「详单查询」,然后选择你要查询的时间段,点击「查询」按钮,查询结果页面的最下方,点击「导出」,就会生成类似于 2014年10月01日~2014年10月31日通话详单.xls 文件。写代码,对每月通话时间做个统计。

刚好用的是联通呢,科科。

Ok,拿到数据了,保存为文件“comu.xls”,现在打算:

1. 统计通话总时长

2. 统计主叫和被叫次数

3. 统计通话总费用

4. pip了matplotlib,试着把数据做成图表(白pip了,py3自带pylab里包含了matplotlib)

嗯,下面开工!

Code:

import xlrd
import re
from pylab import * def get_xls_data(filename): # 读取xls数据
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
content = {}
for i in range(sheet.nrows):
content[i+1] = sheet.row_values(i)[1:]
#print(content[i+1]) print("Liez的3月话费单:") # 统计话费
cost = 0
for i in range(sheet.nrows-1):
cost += float(content[i+2][7])
print("通话费:", round(cost, 2),"元") # 统计被叫主叫次数
call = 0
becall = 0
for i in range(sheet.nrows-1):
if(content[i+2][3] == "主叫"):
call += 1
else:
becall += 1
total = call + becall
print("主叫",call,"次,被叫",becall,"次,共计",total,"次通话") # 统计通话时间
time = {}
for i in range(sheet.nrows-1):
time[i] = content[i+2][1]
day = {}
for i in range(31):
day[i+1] = 0
rday = re.compile('-(\d+?) ')
for i in range(sheet.nrows-1):
daycompile = rday.findall(content[i+2][1])
t = int(daycompile[0])
day[t] += 1
daytimes = (list(day.values()))
dates = (list(day.keys())) # 统计通话时长
sec = 0
min = 0
for i in range(sheet.nrows-1):
rsec = re.compile('(\d+)秒')
rmin = re.compile('(\d+)分')
seci = rsec.findall(content[i+2][2])
mini = rmin.findall(content[i+2][2])
sec += int(seci[0])
if(len(mini)==1):
min += int(mini[0])
if(sec >= 60):
t = sec / 60
sec = sec % 60
min = min + t
print("通话时长:%d分%d秒"%(min,sec)) #三月日通话次数统计图
plt.plot(dates, daytimes)
grid(True)
title("Call Times Every Day")
plt.show() #根据被叫主叫次数作饼状图
figure(2, figsize=(6,6))
fracs = [call/total, becall/total] # 饼状图按被叫和主叫分成两部分的比例
labels = 'Call', 'Becall'
pie(fracs, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90, colors = ("b", "y"))
title("Call & Becall")
show() get_xls_data("comu.xls")

输出:

  Liez的3月话费单:
  通话费:15.15 元
  主叫 45 次,被叫 64 次,共计 109 次通话
  通话时长:193分40秒

两个图表:

ps:感觉这题除了麻烦还是麻烦= - =好在正则表达式用得开始溜起来啦(ง •̀ω•́)ง

【python小练】0020的更多相关文章

  1. 【python小练】0013

    第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 科科...妹子就算了,大晚上的爬点吃的吧.食物图集:抿一口,舔一舔,扭一扭~·SCD 写个简单的爬图爬虫 ...

  2. 【python小练】0014题 和 0015 题

    第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { ":["张三",150,120,100], ":[& ...

  3. 【python小练】0010

    第 0010 题:使用 Python 生成类似于下图中的字母验证码图片 思路: 1. 随机生成字符串 2. 创建画布往上头写字符串 3. 干扰画面 code: # codeing: utf-8 fro ...

  4. 【python小练】0005

    第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. 首先,iphone5的分辨率是1136x640. if条件句判断横(纵)向是否大于对应的ipho ...

  5. 【python小练】0004

    第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数. 先回忆一下各种括号的用途: () tuple [] list {} dict ([]) set——需要一个list作为输入合集 c ...

  6. 【python小练】0002

    第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. . . .(一脸懵逼) Python访问数据库:(廖雪峰python教程) 1. SQLi ...

  7. 【python小练】0001

    第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? # coding ...

  8. python小练--使用正则表达式将json解析成dict

    练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...

  9. python 小练手

    监控 主动监控 - 服务器端轮询客户端 被动监控-客户端agent上报到服务器端 混合模式---两种都支持 需求 1个性化的监控需求 2每个服务的监控间隔不同 3混合模式的监控

随机推荐

  1. centos7/rhel7下配置PXE+Kickstart自动安装linux系统

    应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...

  2. kafka 流式计算

    http://www.infoq.com/cn/articles/kafka-analysis-part-7/ Kafka设计解析(七)- 流式计算的新贵 Kafka Stream

  3. A1125. Chain the Ropes

    Given some segments of rope, you are supposed to chain them into one rope. Each time you may only fo ...

  4. 1062.Talent and Virtue

    About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...

  5. 【POJ2226】Muddy Fields

    题目大意:给定一个 N*M 的图,图中有一些格子不能被任何东西覆盖,现有一些宽度为 1,长度任意的骨牌覆盖这些可以被覆盖的格子,骨牌之间可以重叠,求将所有可以被覆盖的格子覆盖所需的最小骨牌数是多少. ...

  6. sublime安装说明

    安装Install package https://www.cnblogs.com/lixuwu/p/5693624.html 常用配置 Perference → Settings – User,用下 ...

  7. 第一篇-ubuntu18.04访问共享文件夹

    1. 在访问Windows共享资料之前,请确保Windows共享是可用的.Linux访问Windows共享或者LInux共享资料给Windows时,都使用Samba软件 rpm -qa | grep ...

  8. semantic ui框架学习笔记二

    评论组件 文档里的评论组件介绍的比较清晰.这里我就挑一个我喜欢的格式展示出来: <div class="ui comments"> <h3 class=" ...

  9. Mac 上有哪些比较有意思的小软件?

    文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...

  10. SpringMvc的基本流程

    1.流程图 2.特别说明 1)SpringMvc有6大组件(MVC各一个,再加3个运用策略模式的组件) 2)MVC对应的组件分别是(Handler.View.DisapatchServelet) 3) ...