访问数据是使用本书所介绍的这些工具的第一步。这里会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具。

  输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用WEB API操作网络资源。

1、读写文本格式的数据

  pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。如下表对它们进行了总结,其中read_csv和read_table可能会是今后用的最多的:

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

  大致介绍下这些函数在将文本数据转换为DataFrame时所用到的一些技术。这些函数的选项可以划分为以下几个大类:

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

  因为工作中实际碰到的数据可能十分混乱,一些数据加载函数(尤其是read_csv)的选项逐渐变得复杂起来。面对不同的参数,感到头痛很正常(read_csv有超过50个参数)。pandas文档有这些参数的栗子,如果感到阅读某个文件很难,可以通过相似的足够多的栗子找到正确的参数。

  其中一些函数,比如pandas.read_csv,有类型推断功能,因为列数据的类型不属于数据类型。也就是说,你不需要指定列的类型到底是数值、整数、布尔值,还是字符串。其他的数据格式,如HDF5、Feather和msgpack,会在格式中存储数据类型。

  日期和其他自定义类型的处理需要多花点功夫才行。首先我们来看一个以逗号分隔的文本文件:

  在练习之前我在自己环境下创建了exl.csv文件,该文件与程序是在同一目录下:

import pandas as pd
df = pd.read_csv('exl.csv')
print(df)
   a   b   c   d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

当然了,我们也可以使用read_table方法来读该文本文件,不过在读取的时候,需要输入参数sep,该参数是指定分隔符:

print(pd.read_table('exl.csv', sep=','))
   a   b   c   d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

并不是所有文件都有标题行。读入该文件的办法有两个。你可以让pandas为其分配默认的列名,也可以自己定义列名:

如下为分配的默认列名:

print(pd.read_csv('ex2.csv', header=None))
   0   1   2   3      4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

如下为自定义列名:

print(pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'message']))
   a   b   c   d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

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

names = ['a', 'b', 'c', 'd', 'message']
print(pd.read_csv('ex2.csv', names=names, index_col='message'))
        a   b   c   d
message
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12

利用Python进行数据分析-Pandas(第三部分)的更多相关文章

  1. 利用Python进行数据分析——pandas入门

    利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 ...

  2. 利用Python进行数据分析-Pandas(第一部分)

    利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...

  3. 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

    对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...

  4. 利用Python进行数据分析-Pandas(第四部分-数据清洗和准备)

    在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载.清理.转换以及重塑上.这些工作会占到分析时间的80%或更多.有时,存储在文件和数据库中的数据的格式不适合某个特定的任务.研究者都选择使用编 ...

  5. 利用Python进行数据分析-Pandas(第七部分-时间序列)

    时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...

  6. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

    在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...

  7. 利用Python进行数据分析-Pandas(第二部分)

    上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段. 一.基本功能 1.重新索引 pandas对象的一个重要方法是r ...

  8. 利用python进行数据分析--pandas入门2

    随书练习,第五章  pandas入门2 # coding: utf-8 # In[1]: from pandas import Series,DataFrame import pandas as pd ...

  9. 利用python进行数据分析--pandas入门1

    随书练习,第五章  pandas入门1 # coding: utf-8 # In[1]: from pandas import Series, DataFrame # In[2]: import pa ...

随机推荐

  1. 3年Java开发10面阿里、京东、拼多多

    拼多多 地点:2号线娄山关路地铁站(金虹桥国际中心) 环境:新的写字楼,环境很好,有种高大上的感觉.大厅进入后需要登记,然后进闸机.电梯是需要刷卡才能使用的.会议室都是用城市名称命名,例如杭州.香港等 ...

  2. iOS 类别 类扩展 简要说明

  3. NodeJS7-1本地构建_gulp入门学习

    NodeJS在前端最常用的两种方式: 1.做成webserver 2.做成前端开发的相关工具 本地构建:前端发布代码都会经过压缩(谁来处理) ,前端技术的日新月异,利用新特性代码变得易读,清晰,可是老 ...

  4. Java逆向之UML查看工具(检索记录)

    花了几个钟头时间,搜索了一下,如何从源代码得到UML,因为WCI(Writing Compilers and Interpreters,下同)越往后代码越多,必须得借助工具才能把握整个工程了.初次涉猎 ...

  5. Ansible自动化部署入门到进阶笔记

    目录 一.基本部署 安装Ansible Ansible配置文件 定义Inventory 使用秘钥方式连接 使用帮助 Ansible命令应用基础 二.常见模块 三.Ansible playbook 四. ...

  6. docker 常用命令 以及常见问题

    常见命令 windos 在搜索框 输入 windows powershell,打开.然后输入以下命令#查看镜像列表 docker images ls #删除单个镜像 docker rmi image- ...

  7. Python 库打包分发、setup.py 编写、混合 C 扩展打包的简易指南(转载)

    转载自:http://blog.konghy.cn/2018/04/29/setup-dot-py/ Python 有非常丰富的第三方库可以使用,很多开发者会向 pypi 上提交自己的 Python ...

  8. Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例

    场景 Nginx入门简介和反向代理.负载均衡.动静分离理解 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ub ...

  9. Android中Parcelable的使用

    转载请标明出处 :https://www.cnblogs.com/tangZH/p/10998065.html  Parcelable与Serializable Serializable是Java为我 ...

  10. linux bash变量作用域

    linux bash变量作用域 一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的? shell会去$PATH环境变量定义的目录里去找这个命令.环境变量里一般包括/usr ...