web服务器Py

Pandas(数据加载)

2018-11-11  本文已影响3人  GHope

加载数据的函数与函数说明

函数 说明
read_csv 从文件、URL、文件型对象中加载带分割符的数据。默认分隔符为逗号(',')
read_table 从文件、URL、文件型对象中加载带分割符的数据。默认分隔符为逗号('\t')
read_fwf 读取定宽列格式数据(无分隔符)
read_clipboard 读取剪贴板中的数据,可以看做是read_table的剪贴板版。在将网页转换为表格时很有用
read_excel 从ExcelXLS或XLSXfile读取表格数据
read_hdf 读取Pandas写的HDF5文件
read_html 读取HTML文档中的所有表格
read_json 读取JSON(JavaScript Object Notation)字符串中的数据
read_msgpack 二进制格式编码的Pandas数据
read_pickle 读取Python Pickle格式中存储的任意对象
read_sas 读取存储于SAS系统自定义存储格式的SAS数据集
read_sql (使用SQLAlchemy)读取SQL查询结果为Pandas的DataFrame
read_stata 读取Stata文件格式的数据集
read_feather 读取Feather二进制文件格式

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

将文本数据转换为DataFrame时所用到的一些技术
索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名
类型推断和数据转换:包括用户定义值的转换、和自定义的缺失值标记列表等
日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列
迭代:支持对大文件进行逐块迭代
不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西(比如由成千上万个逗号隔开的数值数据)

read_csv有超过50个参数

以逗号分隔的(CSV)文本文件例子

小知识:
cd 进入指定目录的名令
!type 查看当前目录下指定的文件
%ls -la 查看当前文件目录
%pwd 查看当前地址

加载CSV文件

使用read_table,并指定分隔符

指定分隔符

没有标题的文件

无标题文件

可以让pandas为其分配默认的列名,也可以自己定义列名

自动生成或自定义列名

假设你希望将message列做成DataFrame的索引。你可以明确表示要将该列放到索引4的位置上,也可以通过index_col参数指定”message”。

指定索引内容

将多个列做成一个层次化索引,只需传入由列编号或列名组成的列表即可

层次索引

有些表格可能不是用固定的分隔符去分隔字段的(比如空白符或其它模式)

无固定分隔符的表格

虽然可以手动对数据进行规整,这里的字段是被数量不同的空白字符间隔开的。这种情况下,你可以传递一个正则表达式作为read_table的分隔符。可以用正则表达式表达为\s+。

正则匹配

异形文件格式处理,你可以用skiprows跳过文件的第一行、第三行和第四行

跳行处理

缺失值处理是文件解析任务中的一个重要组成部分。缺失数据经常是要么没有(空字符串), 要么用某个标记值表示。默认情况下,pandas会用一组经常出现的标记值进行识别,比如NA 及NULL。

缺省标记

na_values可以用一个列表或集合的字符串表示缺失值

指定内容表示缺失值

字典的各列可以使用不同的NA标记值

各列使用不同NA标记

read_table/read_csv函数的常用参数

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

逐块读取文本文件

在处理很大的文件时,或找出大文件中的参数集以便于后续处理时,可以读取文件的一小部分 或逐块对文件进行迭代。

设置pandas显示地更紧些

设置效果

如果只想读取几行(避免读取整个文件),通过nrows进行指定即可

指定行数读取

要逐块读取文件,可以指定chunksize(行数)

逐块读取

read_csv所返回的这个TextParser对象使你可以根据chunksize对文件进行逐块迭代。比如说, 我们可以迭代处理ex6.csv,将值计数聚合到”key”列中。

计数聚合
上一篇 下一篇

猜你喜欢

热点阅读