数据加载、存储于文件格式

数据加载、存储于文件格式

读写文本格式的数据

pandas 提供了一些用于将表格型数据读取为 DataFrame 对象的函数,其中 read_csv 和 read_table 最为常用。

pandas 中的解析函数

函数 说明
read_csv 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号
read_table 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符("\t")
read_fwf 读取定宽列格式数据(也就是说,没有分隔符)
read_clipboard 读取剪贴板中的数据,可以看做read_table的剪贴板版。在将网页转换为表格时很有用

read_csv 和 read_table 函数的参数

参数 说明
path 表示文件系统位置、URL、文件型对象的字符串
sep 或 delimiter 用于对行中各字段进行拆分的字符序列或正则表达式
header 用作列名的序号
index_col 用作行索引的编号
names 用于结果的列名列表,结合header=None
skiprows 需要忽略的行数(从文件开始出算起),或需要跳过的行号列表(从0开始)
na_values 一组用于替换NA的值
comment 用于将注释信息从行尾拆分出去的字符(一个或多个)
parse_dates 尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。
keep_date_col 如果连接多列解析日期,则保持参与链接的列。默认为Fal。
converters 由列号/列名跟函数之间的映射关系组成的字典。例如,{'foo':f}会对foo列的所有值应用函数f。
dayfirst 当解析有歧义的日期时,将其看做过几个是(例如,7/6/2015 -> June 7,2015)。默认为False
date_parser 用于解析日期的函数
nrows 需要读取的行数
iterator 返回一个TextParser以便逐块读取文件
chunksize 文件块的大小
skip_footer 需要忽略的行数(从末尾算起)
verbose 打印各种解析器输出信息
encoding 用于Unicode的文本编码格式。
squeeze 如果数据经解析后仅含一列,则返回Series
thousands 千分位分隔符,如“,”或“.”

逐行读取文本文件

可以设置 nrows 参数和 chunksize 参数实现逐行读或逐块读。

将数据写出到文本格式

利用 DataFrame 的 to_csv 方法,可以将数据写到一个以逗号分隔的文件中。

手工处理分隔符格式

大部分存储在磁盘上的表格型数据都能用 pandas.read_table 进行加载。也可以直接使用 Python 内置的 csv 模块,将任意已打开的文件或文件型对象传给 csv.reader:

import csv
f = open('ch06/ex7.csv')

reader = csv.reader(f)

对这个 reader 进行迭代将会为每行产生一个元组(并溢出了所有的行号):

for line in reader:
    print line
Out:
['a','b','c']
['1','2','3']

JSON 数据

通过 json.loads 可将 JSON 字符串转换为 Python 形式;通过 json.dump 则将 Python 对象转换成 JSON 形式。

XML 和 HTML:Web 信息收集

利用 Python 中的 lxml 可以高效且可靠地解析大文件。利用 lxml.html 处理 HTML,然后在用 lxml.objectify 做一些 XML 处理。

二进制数据格式

pandas 中的 save 方法利用了 Python 内置的 pickle 序列化。

使用 HDF5 格式

HDF5 是一个流行的工业级库,它是一个 C 库,带有许多语言接口,如 Java、Python、MATLAB 等。HDF5 中的 HDF 指的是层次性数据格式(hierarchical data format)。

Python 冲的 HDF5 库有两个接口(即 ==PyTables 和 h5py==),它们鸽子采用了不同的问题解决方式。h5py 提供了一种直接而高级的 HDF5 API 访问接口,而 PyTables 则抽象了 HDF5 的许多细节以提供多种灵活的数据容器、表索引、查询功能以及对核外计算技术的某些支持。

读取 Microsoft Excel 文件

pandas 的 ExcelFile 类支持读取存储在 Excel 中的表格型数据。由于 ExcelFile 用到了 xlrd 和 openpyxl 包,所以先得安装它们才行。

xls_file = pd.ExcelFile('data.xls')
table = xls_file.parse('Sheet1')  #返回 DataFrame 

使用 HTML 和 Web API

使用数据库

pandas 有一个 read_frame 函数(位于 pandas.io.sql 模块)。

import pandas.io.sql as sql
sql.read_frame('select * from test',con)

存取 mongoDB 中的数据

import pymongo
con = pymongo.Connection('localhost',port=27017)

存储在 MongoDB 中的文档被组织在数据库的集合中。可以通过集合的 save 方法存入集合中。

tweets = con.db.tweets
for tweet in data['results']:
    tweets.save(tweet)

如果想从该集合中取出tweet,可以用集合的 find 方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容