Pandas(数据加载)
加载数据的函数与函数说明
函数 | 说明 |
---|---|
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 查看当前地址

使用read_table,并指定分隔符

没有标题的文件

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

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

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

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

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

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

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

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

字典的各列可以使用不同的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”列中。
