pandas模块-加载数据

文本文件读取

pd.read_csv(…)

详细记录pandas读取表格型数据文件的方法:pd.read_csv()

其实pytohn内置了一个可以处理简单规整csv文件的模块:import csv
csv.reader() 传入文件型对象即可
什么?你不知道什么是文件型对象? open(fp,'r') 返回的就是文件型对象

重要参数解析:

path: 这个参数不解释,可以是本地路径,也可以是URL

sep: 行内字段(列)分隔符,csv文件默认为逗号,还可以为正则表达式

header: 标识列名的行号。默认为0,代表文件第一行是列名,没有列名时需要设为None
    //当header=None时:
    names: 字符串组成的列表,指定列名

index_col: 标识行索引
    简单行索引:列编号(整数)或者列名(字符串)
    层次化索引:列编号/列名zucheng的列表
        什么是层次化索引?将多个列作为索引,列之间将产生层次关系
            a   a1
                a2
            b   b1
                b2
                b3
            ...


skiprows:    如果传入整数,表示需要从文件开始出算起需要忽略的行数
            如果传入整数列表,表示需要跳过的行号列表(从0开始)
skip_footer: 整型,从文件末尾算起需要忽略的行数

nrows: 整型,需要读取的行数(从开始算起)

na_value: 用于替换NaN的值

comment: 当行末有注释信息时指定注释信息标志字符

parse_dates: 尝试将数据解析为日期,默认为False
    传入True:尝试将所有列都解析为日期(一般是行不通的)
    传入列号/列名的列表:仅尝试将指定的(一些)列解析为日期
    传入上一行列表的列表:尝试将多个列进行组合后进行解析(当日期不同部分分散在不同的列中时)
        keep_date_col: 当组合多列解析时是否保留原始列,默认为False
dayfirst: 当日期出现歧义时(如7/6/2018究竟是6月还是7月?)指定day的位置,默认为False
date_parser: 或者传入一个用于解析日期的函数

converters: 列值预处理,传入一个字典d={列号/列名: 函数, ...},表示对相应地列的值将执行相应地函数

iterator: 用于逐块读取文件
chunksize: 文件块的大小

verbose: 是否打印日志

encoding: 文本编码格式

squeeze: 数据经过解析后只剩下一列,返回Series而不是DataFrame

thousands: 千分位分隔符

逐块读取

当文件特别大时我门可能只是想读取文件的一小部分或者逐块迭代

  • 如果我们只是想读文件开始几行,使用关键字参数 nrows。(Q: 那中间几行呢?)
  • 逐块迭代:read_csgv 指定 chunksize 后将返回一个TextParser用于后续迭代
    Q: 按固定字符数读取?If so, 貌似只适用于行字符数相同的文件?

XML文件读取


二进制文件读取

pickle序列化

首先得了解python内置的pickle序列化
保存pandas对象到磁盘:PD_OBJ.save(FILE_NAME)
从磁盘取回pandas对象:PD_OBJ.load(FILE_NAME)

HDF5格式

高效读写磁盘上以二进制形式存储的科学数据
HDF: Hierarchical Data Format
高效分块读写
python中有两个接口:PyTables + h5py
pandas建立HDFStore类,通过PyTables存储对象

存储

HDFStore类类似于字典,创建HDFStore对象后按照字典方式赋值即可。

//<class 'pandas.io.pytables.HDFStore'>
store = pd.HDFStore(OUTPUT_FILE)
store['obj1'] = dataframe
store['obj1_col'] = dataframe['a']

对于IO密集型数据(而非CPU密集型数据),使用HDF5能够大大提升效率

Excel格式

panda中相关的类:ExcelFile
依赖包:xlrd, openpyxl

创建实例:xls_file = pd.ExcelFile(XLS_FILE)

读取数据:table = xls_file.parse('Sheet1')

使用HTML和Web API

使用数据库

存取MongoDB中的数据

----- For reprint please indicate the source -----
0%