访问数据是使用本书所介绍的这些工具的第一步。这里会着重介绍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. 【hibernate】应用程序级别的视图

    [hibernate]应用程序级别的视图 转载:https://www.cnblogs.com/yangchongxing/p/10361281.html 在没有数据库修改权限时,像创建视图可以使用 ...

  2. 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享 工程代码地址 思维导图地址 工程结构图: 大 ...

  3. Dubbo环境搭建-管理控制台dubbo-admin实现服务监控

    场景 Dubbo环境搭建-ZooKeeper注册中心: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555470 在上面搭 ...

  4. 利用keras自带路透社数据集进行多分类训练

    import numpy as np from keras.datasets import reuters from keras import layers from keras import mod ...

  5. js 对象 / json / jsonb / jsonp 区别

    一.JSON vs JS 对象 1.区别 区别 Javascript 对象 Json 含义 对象的实例 一种数据格式(序列化格式) 传输 不能传输 可以跨平台传输,轻量级 格式 1.键不加引号.加单引 ...

  6. Get提交数据过大,tomcat报错,信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level

    原因 get提交的数据过大,超过了默认值. 解决办法 get提交配置 设置tomcat的server.xml.找到我们启动的端口,一般是8080,增加maxHttpHeaderSize= " ...

  7. .net core 获取树莓派的机器码,唯一ID,唯一串号

    今天在实际开发树莓派程序的时候,碰到了一个问题,需要获取到树莓派的唯一串号信息.必须在.net core的环境下: 那么如何实现呢?我们先查找树莓派的基本信息是储存在哪里的? 我们在下面的路径里找到了 ...

  8. CefSharp 修复Demo无法在其它路径下启动问题

    CefSharp编译后,在直接点击打开CefSharp.Wpf.Example.exe,启动没问题但是复制demo包到其它路径下,无法打开demo.原因:代码中含有相对路径下的资源文件引用. CefS ...

  9. config-server-bus动态更新配置

    config-server用来搭建配置中心,而配置信息一般使用gitlab仓库来存储,这样在你的配置发生改变时,不需要从新打包,而如果使用native的试,则需要从新打一个config-server的 ...

  10. Apply Grouping to List View Data 将分组应用于列表视图数据

    This lesson will teach you how to apply grouping to List View data. For this purpose, you will group ...