python学习四(处理数据)

head first python中的一个数据处理的例子

有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间。以下是四位选手的9次成绩

James

2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22

Julie

2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21

Mikey

2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38

Sarah

2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

代码如下:

def sanitize(time_string):if '-' in time_string:splitter = '-'elif ':' in time_string:splitter = ':'else:return(time_string)(mins, secs) = time_string.split(splitter)return(mins + '.' + secs)def get_coach_data(filename): try:with open(filename) as f:data = f.readline() return(data.strip().split(','))except IOError as ioerr:print('File error: ' + str(ioerr))return(None)james = get_coach_data('james.txt')
julie = get_coach_data('julie.txt')
mikey = get_coach_data('mikey.txt')
sarah = get_coach_data('sarah.txt')print(sorted(set([sanitize(t) for t in james]))[0:3])
print(sorted(set([sanitize(t) for t in julie]))[0:3])
print(sorted(set([sanitize(t) for t in mikey]))[0:3])
print(sorted(set([sanitize(t) for t in sarah]))[0:3])

首先定义了一个模块sanitize清理数据,注意set集合中不允许重复记录,sorted会返回一个排序后的列表,不会修改原有的列表。

打印结果

['2.01', '2.22', '2.34']
['2.11', '2.23', '2.59']
['2.22', '2.38', '2.49']
['2.18', '2.25', '2.39']

例2:

提供另外一组成绩数据,数据中包括了运动员姓名,出生日期,及成绩。

打印出每个运动员姓名,及最快的三次成绩

def sanitize(time_string):if '-' in time_string:splitter = '-'elif ':' in time_string:splitter = ':'else:return(time_string)(mins, secs) = time_string.split(splitter)return(mins + '.' + secs)def get_coach_data(filename):try:with open(filename) as f:data = f.readline()templ = data.strip().split(',')return({'Name' : templ.pop(0),'DOB'  : templ.pop(0),'Times': str(sorted(set([sanitize(t) for t in templ]))[0:3])})except IOError as ioerr:print('File error: ' + str(ioerr))return(None)james = get_coach_data('james2.txt')
julie = get_coach_data('julie2.txt')
mikey = get_coach_data('mikey2.txt')
sarah = get_coach_data('sarah2.txt')print(james['Name'] + "'s fastest times are: " + james['Times'])
print(julie['Name'] + "'s fastest times are: " + julie['Times'])
print(mikey['Name'] + "'s fastest times are: " + mikey['Times'])
print(sarah['Name'] + "'s fastest times are: " + sarah['Times'])

上面代码中用{}定义了一个map类型的数据结构,key分别是name,DOB,Times。

也可以用其它方式实现,类似于JAVA中的JAVABEAN

def sanitize(time_string):if '-' in time_string:splitter = '-'elif ':' in time_string:splitter = ':'else:return(time_string)(mins, secs) = time_string.split(splitter)return(mins + '.' + secs)class AthleteList(list):def __init__(self, a_name, a_dob=None, a_times=[]):list.__init__([])self.name = a_nameself.dob = a_dobself.extend(a_times)def top3(self):return(sorted(set([sanitize(t) for t in self]))[0:3])def get_coach_data(filename):try:with open(filename) as f:data = f.readline()templ = data.strip().split(',')return(AthleteList(templ.pop(0), templ.pop(0), templ))except IOError as ioerr:print('File error: ' + str(ioerr))return(None)james = get_coach_data('james2.txt')
julie = get_coach_data('julie2.txt')
mikey = get_coach_data('mikey2.txt')
sarah = get_coach_data('sarah2.txt')print(james.name + "'s fastest times are: " + str(james.top3()))
print(julie.name + "'s fastest times are: " + str(julie.top3()))
print(mikey.name + "'s fastest times are: " + str(mikey.top3()))
print(sarah.name + "'s fastest times are: " + str(sarah.top3()))

注意class中的每个方法的第一个参数必须是self

posted on 2013-11-23 23:22 pingh14 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/pingh/p/3439601.html

python学习四(处理数据)相关推荐

  1. Python学习四: 连接数据库 与 数据清理

    连接数据库 准备工作 楼主这里用的一个轻量级关系型数据库,MySQL (这里楼主安装MySQL的时候遇到了一个小问题,没有兼容服务器,根据这个帖子可以解决这个问题  分享 | 安装 mysql 报错 ...

  2. (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

  3. Python学习:图片数据归一化处理

    文章与视频资源多平台更新 微信公众号|知乎|B站|头条:AI研习图书馆 深度学习.大数据.IT编程知识与资源分享,欢迎关注,共同进步~ 1. 介绍 Python学习:在文件夹下,提取目录下所有图片,更 ...

  4. Python学习笔记:数据可视化(一)

    python相关 基础概念 数据:离散的,客观事实的数字表示 信息:处理后的数据,为实际问题提供答案 - 为数据提供一种关系或一个关联后,数据就成了信息,这种关联通过提供数据背景来完成 知识: 是数据 ...

  5. [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  6. python学习四十四天(前端之HTML标签)

    今日主要内容: web标准 浏览器内核 HTML介绍,规范,结构详解 字体标签 排版标签 超链接 图片标签 列表标签 <ul>.<ol>.<dl> 表格标签 < ...

  7. Python学习(四)后端开发框架django

    常见python web开发框架: web.py Django Pylons Tornado Bottle django菜鸟教程 一.django项目创建与启动 1.安装django pip inst ...

  8. python学习笔记5—数据类型转换

    数据类型转换 16进制和10进制之间转换 In [18]: int('a',16) 把16进制的a转换为10进制的10,16说明a是16进制数 Out[18]: 10 In [13]: int('0x ...

  9. python学习爬取数据二级页面的数据

    本次主要是讲解如何爬取二级页面的数据 一,本次案例就业湖北美和易思的学习官网的最新课程为案例讲解 现在我们要爬取网站上的最新课程爬取前5页 爬取每门课的内容如下 二,下面直接上代码 结果如下 有不懂的 ...

最新文章

  1. Python 比特币 教程 之一:创建机器人
  2. python中的ans是什么意思_python ans
  3. ios 横向滚轮效果_ios横向菜单+页面滑动
  4. leetcode393. UTF-8 Validation
  5. 【数据库系统】关系模型、关系、元组、属性、关系实例
  6. Broadwell I7-5775c/5675c BSOD 蓝屏问题
  7. centos配置网络
  8. RESCRIPt:序列分类参考数据库管理工具
  9. 敏捷模式下携程的接口自动化平台演变
  10. (014) 类函数和对象函数
  11. 微信连WiFi关注公众号流程更新 解决ios微信扫描二维码不关注就能上网的问题
  12. Android studio Installed Build Tools revision 31.0.0 is corrupted. Remove and install again
  13. 三星pay显示无法连接服务器,三星智付Samsung pay正式开启:服务器宕机 三星紧急发公告...
  14. 关于64位windows7系统下安装IE11失败(9c59)的解决过程记录
  15. 主板没有rgb接口怎么接灯_想拥有RGB灯效,不懂这些怎么行!
  16. java数组可以包含对象吗_数组可以包含对象类型的元素吗_对象数组
  17. ( 题解 )第六届蓝桥杯决赛试题 -- 完美正方形 (线段树 + 深搜)
  18. 2022年高压电工考试题及高压电工作业考试题库
  19. python中from import*的*什么意思_[Python]Python中的import和from import
  20. 机器人是如何自动避障与自主回充的?

热门文章

  1. 一个菜鸟程序员的游戏开发心得
  2. inter Course Certificate
  3. pmp每日三题(2022年2月18日)
  4. python --> Python初阶 --> 基础语法 --> 条件和分支
  5. Oracle12C的卸载过程
  6. es6笔记 day3---对象简介语法以及对象新增
  7. Mac OS X下安装和配置Maven
  8. 一台25万公里卡罗拉的返老还童记
  9. 积跬步,聚小流-------js实现placeholder的效果
  10. Java小程序2(2015-8-2)