Pandas的IO方法一

根据官方文档提供的说明(IOTools),Pandas支持常用的文本格式数据(csv、json、html、剪贴板)、二进制数据(excel、hdf5格式、Feather格式、Parquet格式、Msgpack、Stata、SAS、pkl)、SQL数据(SQL、谷歌BigQuery云数据),各类型数据处理的方法如下表:

数据类型 描述符 读方法 写方法
text CSV read_csv to_csv
text JSON read_json to_json
text HTML read_csv to_csv
text 剪贴板 read_clipboard to_clipboard
二进制 Excel read_excel to_excel
二进制 HDF5 read_hdf to_hdf
二进制 PKL read_pickle to_pickle
SQL SQL read_sql to_sql

下面详细介绍常用的csv、txt、excel、json、pkl格式文件的读写操作。

  • 对csv和txt格式的读写,read_csv()方法兼容,因为这两种格式的数据本质上的形式都是数据加分隔符,旧版本的read_table()方法已经整合到read_csv()方法中,即指定分隔符为'\t',代码如下:
import pandas as pd
# 读取csv文件
pd.read_csv('/home/root/foo.csv')
# 读取txt文件
pd.read_csv('/home/root/bar.txt')
  • read_csv()常用的几个参数说明:
  • sep: 分割符,csv和txt默认为',', 但是有些数据集里面可能是空格或者'\t';
  • header: 表头,int或者int的列表,默认为'infer',即需要制定某一行作为数据的列名;
  • iterator: 为True的话返回的是文件读取对象,可以用迭代的方法或者get_chink()方法去读取;
  • index_col: int,队列或者布尔类型,用于作为行标签的列;
  • prefix: str类型,当未制定表头时给列加上的前缀;
  • dtype: type名称或者是列名和类型的映射关系字典,例如:{'a': np.float64, 'b': np.int32, 'c': ‘Int64’};
  • engine: 制定读取文件的引擎类型{'c', 'python'}, 使用C语言速度更快,python引擎速度慢点但是功能更完善;
  • nrows: 指定要读取的行数;
  • encoding: 指定文件的编码格式;
  • error_bad_lines: 带太多空格的列会引发异常,设置为True的时候会删除这些异常列;
  • low_memory: 默认为True,限制每次读取文件块大小,避免读操作占用太多内存, 置为False在实际使用过程中反而读取文件更慢,可能是内存占用过高影响到磁盘IO的操作;
  • csv和txt类型数据集读取前通常还需要进行编码判断以及分隔符判断:
# 编码判断方法
def encode_judge(file_dir):
  charset = 'utf8'
  file_ext = file_dir.rsplit('.', 1).pop().lower()
  if file_ext in ('csv', 'txt', 'xls', 'xlsx'):
    for i in ('utf8', 'gb18030', 'latin'):
      try:
          with open(file_dir, "r", encoding=i) as file:
            file.read(1024 * 1024 * 10)
            charset = i
            break
      except:
          pass
  return charset
# 分隔符判断方法
def get_sep(lines):
  result = ','
  for sep in (',', '\t', ' '):
    if sep in lines:
      result = sep
      break
  return result
  • 对xls和xlsx格式的读写,调用read_excel():, read_table()的参数和read_csv()大体一致就是少了iterator参数,因为excel为二进制编码格式文件不支持迭代方式读取, 代码如下:
# 借用xlrd这个包可以提高读取excel格式的兼容性能
# 读取前也参照上面的编码检测操作
import xlrd
content = xlrd.open_workbook(filename=file_dir, encoding_override=charset)
pd.read_excel(content, engine='xlrd')

对于其他文件的读取可参照上面列表以及官方文档说明,text类型的文件一般支持迭代方式读取,二进制文件只能一次性读取, sql读取和pkl的读取在下篇文章中更新。

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