知行编程网知行编程网  2022-03-04 10:00 知行编程网 隐藏边栏 |   抢沙发  85 
文章评分 0 次,平均分 0.0

这是菜鸟学Python的第68篇原创文章

阅读本文大概需要6分钟

 

        关于装饰器基本介绍我们就讲完了,接下来我们要讲一下Python如何处理一些常见的文件数据,比如CSV文件,Excel文件,JSON和XML文件,还有就HTML文件。其实html文件的处理,涉及爬虫相关的知识(爬虫我后面会写一个入门教程),今天我们主要来学习一下CSV文件的处理

 

 

CSV文件处理

 

 

CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符

 

CSV是一种非常通用的文件格式,它可以非常容易地被导入各种PC表格及数据库中,也可以被excel表格打开

 

Python对CSV的文件处理有自己的内置模块csv,直接导入即可.一般来说掌握最常用的读和写,就可以了.

 

像这样:

近20年五粮液股价分析|CSV文件实战处理

 

1.读取CSV文件

 

1).用csv里面的reader函数

一般的csv读和写都是使用逗号做分隔符(delimiter),reader需要传入一个文件句柄,看一下示例代码:

import csv

with open('some.csv', 'rb') as f:

reader = csv.reader(f)

 

header=reader.next()

print header

 

for row in reader:

# do something with row, such as row[0],row[1]

 

在上面的代码中 row 会是一个元组,因此为了访问某个字段,你需要使用下标f访问,而且要注意这个返回的reader是一个迭代器,迭代器只能用next或者for循环来处理

 

2).我们也可以把数据读到字典中

 

with open('some.csv','rb') as rf:

reader=csv.DictReader(rf)

for row_dict in reader:

#print row_dict

 

csv里面的DictReader函数可以把文件读成字典列表,通过for循环把每一行都读出来,每一行其实都是一个字典,可以更具key,value灵活处理

 

 

2.写入CVS文件

用csv里面的writer函数就可以把内容写到一个新的csv文件, 当然writer一样也需要传入一个写文件句柄

import csv

with open('some.csv', 'wb') as f:

writer = csv.writer(f)

writer.writerows(something)

 

注意读写的时候最好按照二进制(b)的方式。有同学会问,为啥呢~~

因为跨平台转换的时候,有一些字符会变,特别像是/n,我们称为换行符,'0X0A',到了win平台会变成两个字符'0X0D','0X0A',所以无论读写最好都加一个b,原样读取,比较保险,可以避免一些不必要的麻烦.

 

实战案例

 

3.读取"五粮液"股票二十年的数据

雅虎网站上有一些现成的股票代码的csv,我们只需要去获取一下这些数据download下来,就可以分析了.

 

处理过程如下:

1).首先用urllib模块里的urlretrieve抓取五粮液股票的csv文件,并down到本地

2).然后读取文件

3).可以用next读取第一行,也就是股票文件里面的头部信息

近20年五粮液股价分析|CSV文件实战处理

>>

 

['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']

['2017-03-30', '43.07', '43.50', '42.17', '42.73', '20190900', '42.73']

 

  • 这是一个20年的五粮液成交记录,是一个很大的csv文件
  • 第一行是头部信息,分日期/开盘价/最高价/最低价/收盘价/成交量/已调整的收盘价

 

4.萃取股票成交量超过2亿元的数据,并写到新文件

获取二十年来的股票成交量超过2亿元(8个0哦,乖乖~~),然后写到一个新的CVS文件里

 

处理过程如下:

1).我们先从csv文件中读取

2).把头部信息取出来

3).创建一个写文件的句柄,然后创建一个写csv的句柄

4).循环处理每一行,当每一行的第6项(成交量)大于1亿元的时候,把这一行写入新的csv文件

 

近20年五粮液股价分析|CSV文件实战处理

注意row[5]是股票的成交量,是一个字符串要转为int,不然没法比较,发现20年里只有2天是成交量是超过2亿元的

>>

 

Date,Open,High,Low,Close,Volume,Adj Close

2009-09-09,24.10,24.43,21.69,22.60,226596800,19.51525

1998-04-27,29.77005,56.99999,29.77005,53.57003,380522000,2.37552

 

 

5.获取五粮液近20年的最高价格和对应的日期

1).urllib网上下载csv文件

2).把csv文件读出来放到read_csv句柄

3).数据清洗,去掉头部,迭代器转成列表,并把日期和股票,构造出字典

4).字典循环一下,获得最高价和对应的日期

 

 

近20年五粮液股价分析|CSV文件实战处理

 

用推导列表快速生成字典,然后用max获取最高价,大家发现只要几行就能搞定,如果用java,c++要复杂很多,Python是不是非常高效~~

 


Python的数据分析是最最强大的地方也是我个人认为最有 魅力的地方,这里只是蜻蜓点水,真正的股票数据挖掘需要更复杂的建模,并且用神器pandas处理,再用matplotlib图形显示结果.好了Python对于CSV文件的处理就讲到这里,是不是觉得蛮好玩的,希望能给初学者一些启发,若有什么不懂的,也可以留言跟我探讨交流.

公号ZZS【100offer】

优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。


欢迎大家关注 菜鸟学Python",更多好玩有趣的Python原创教程,趣味算法,经验技巧,行业动态,尽在菜鸟学Python,一起来学python吧

 

 

 

历史人气文章

 

Python语言如何入门

最全的零基础学Python的问题,你想知道的都在这里

Python入门原创文章,2016年度大盘点

用Python写个弹球的游戏

Python写个迷你聊天机器人|生成器的高级用法

用Python破解微软面试题|24点游戏

一道Google的算法题 |Python巧妙破解

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享