导读:Pandas是一个基于Numpy库开发的更高级的结构化数据分析工具,提供了Series、DataFrame、Panel等数据结构,可以很方便地对序列、截面数据(二维表)、面板数据进行处理。

作者:张秋剑 张浩 周大川 常国珍

来源:大数据DT(ID:hzdashuju)

  • DataFrame是我们常见的二维数据表,包含多个变量(列)和样本(行),通常被称为数据框。

  • Series是一个一维结构的序列,包含指定的索引信息,可以被视作DataFrame中的一列或一行。其操作方法与DataFrame十分相似。

  • Panel是包含序列及截面信息的三维结构,通常被称为面板数据。

我们可通过限定时间ID和样本ID获得对应的Series和DataFrame。

由于这些对象的常用操作方法十分相似,因此本文主要使用DataFrame进行演示。

01 读取文件

Pandas库提供了便捷读取本地结构化数据的方法。这里主要以csv数据为例,read_csv函数可以读取csv数据,代码如下:

import pandas as pd
csv = pd.read_csv('data/sample.csv')
csv
id name   scores
0   1  小明    78.0
1   2  小红    87.0
2   3  小白    99.0
3   4  小青 99999.0
4   5  小兰     NaN

按照惯例,Pandas会以pd为别名,以read_csv函数读取指定路径下的文件,然后返回一个DataFrame对象。如果在命令行中打印DataFrame对象,可读性可能会略差一些;如果在Jupyter Notebook中打印的话,可读性会大幅提升。

打印出来的DataFrame包含索引(第一列),列名(第一行)及数据内容(除第一行和第一列之外的部分)。

此外,read_csv函数有很多参数可以设置,如下所示。

  • filepath_or_buffer csv文件的路径

  • sep = ',' 分隔符,默认为逗号

  • header = 0 int类型,0代表第一行为列名,若设定为None将使用数值列名

  • names = [] list,重新定义列名,默认为None

  • usecols = [] list,定义读取的列,设定后将缩短读取数据的时间,并减小内存消耗,适合读取大量数据,默认为None

  • dtype = {} dict,定义读取列的数据类型,默认为None

  • nrows = None int类型,指定读取数据的前n行,默认为None

  • na_values = ... str类型,list或dict,指定缺失值的填充值

  • na_filter = True bool类型,自动发现数据中的缺失值,默认值为True,若确定数据无缺失,可以设定值为False,以提高数据载入的速度

  • chunksize = 1000 int类型,分块读取,当数据量较大时,可以设定分块读取的行数,默认为None

  • encoding = 'utf-8' str类型,数据的编码,Python3默认编码为UTF-8,Python2默认编码为ASCII

Pandas除了可以直接读取csv、excel、json、html等文件生成的DataFrame,也可以在列表、元组、字典等数据结构中创建DataFrame。

02 读取指定行和指定列

使用参数usecol和nrows读取指定的列和前n行,这样可以加快数据读取速度。读取原数据的两列、两行示例如下。

csv = pd.read_csv('data/sample.csv',\usecols=['id','name'],\nrows=2) #读取'id'和'name'两列,仅读取前两行
csv
id name
0   1  小明
1   2  小红

03 分块读取

参数chunksize可以指定分块读取的行数,并返回一个可迭代对象。这里,big.csv是一个4500行、4列的csv数据,设定chunksize=900,分5块读取数据,每块900行,4个变量,如下所示:

csvs = pd.read_csv('data/big.csv',chunksize=900)
for i in csvs:print (i.shape)
(900, 4)
(900, 4)
(900, 4)
(900, 4)
(900, 4)

可以使用pd.concat函数读取全部数据:

csvs = pd.read_csv('data/big.csv',chunksize=900)
dat = pd.concat(csvs,ignore_index=True)
dat.shape
(4500, 4)

04 将不合理数据读取为缺失值

在数据sample.csv中,“小青”的分数中有的取值为99999,这里令其读取为缺失值,操作如下:

csv = pd.read_csv('data/sample.csv',na_values='99999')
csv
id name  scores
0   1  小明   78.0
1   2  小红   87.0
2   3  小白   99.0
3   4  小青    NaN
4   5  小兰    NaN

05 以指定编码方式读取

读取数据时,乱码情况经常出现。这里需要先弄清楚原始数据的编码形式,再以指定的编码形式读取,例如sample.csv编码为UTF-8,这里以指定编码(参数encoding)方式读取。

csv = pd.read_csv('data/sample.csv',encoding='utf-8')
csv
id name   scores
0   1  小明    78.0
1   2  小红    87.0
2   3  小白    99.0
3   4  小青 99999.0
4   5  小兰     NaN

关于作者:张秋剑,就职于腾讯云金融拓展中心,从事微信财富营销管理、数据中台、AI应用等解决方案拓展工作,研究方向包括数字化转型、创新实践等。

张浩,曾任腾讯云金融首席架构师和星环科技金融行业技术总监,主要从事大数据、人工智能、云计算、区块链、联邦学习等相关技术研发与产品设计,具有丰富的企业架构设计、企业数字化战略转型运营与业务咨询经验。

周大川,就职于某中央金融企业金融科技研发中心,主要从事企业级数据平台开发、核心业务平台建设、AI赋能金融科技创新等工作,具有丰富的新一代金融业务系统建设经验。

常国珍,曾任毕马威咨询大数据总监,具有近20年数据挖掘、精益数据治理、数字化运营咨询经验,是金融信用风险、反欺诈和反洗钱算法领域的专家。

本文摘编自《金融商业数据分析:基于Python和SAS》,经出版方授权发布。(ISBN:9787111695837)

《金融商业数据分析:基于Python和SAS》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:腾讯云等资深数据架构师、商业分析师20年经验,全流程讲解金融数据分析思路、方法、技巧,快速入门到精通。

划重点

手把手教你使用Pandas读取结构化数据相关推荐

  1. 手把手教你用Pandas读取所有主流数据存储

    导读:从常见的Excel和CSV到JSON及各种数据库,Pandas几乎支持市面上所有的主流数据存储形式. 作者:李庆辉 来源:大数据DT(ID:hzdashuju) Pandas提供了一组顶层的I/ ...

  2. pandas读写结构化数据(read_csv,read_table, read_excel, read_html, read_sql)

    pandas读写结构化数据(read_csv,read_table, read_excel, read_html, read_sql) 如果你不知道pandas目前提供的读取数据的API或者自己在当前 ...

  3. 手把手教你完成半结构化数据的处理

    前言 现在越来越多的数据以json的格式进行存储,例如通过网络爬虫时,那些异步存储的数据往往都是json类型的:再如企业数据库中的日志数据,也会以json的格式存放.前不久,一位网友就碰到了这个问题, ...

  4. python3 xpath_「手把手教python3接口自动化」:非结构化数据提取(二)

    「第十三章」 非结构化数据提取(二) 13.3 lxml 库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据. lxml和正则一样,也是用 C 实现的, ...

  5. json 数据 生成 图表_Python数据分析:手把手教你用Pandas生成可视化图表

    一: Pandas是什么? Pandas是一个强大的分析结构化数据的工具集:它的使用基础是Numpy(提供高性能的矩阵运算):用于数据挖掘和数据分析,同时也提供数据清洗功能. 利器之一:DataFra ...

  6. python数据分析图_Python数据分析:手把手教你用Pandas生成可视化图表的教程

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  7. 【Docker学习之旅】手把手教你Java应用进行Docker化

    手把手教你Java应用进行Docker化 简介:简介:Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上. 一 ...

  8. python数据预测代码_手把手教你用Python玩转时序数据,从采样、预测到聚类丨代码...

    原标题:手把手教你用Python玩转时序数据,从采样.预测到聚类丨代码 原作 Arnaud Zinflou 郭一璞 编译 时序数据,也就是时间序列的数据. 像股票价格.每日天气.体重变化这一类,都是时 ...

  9. tensorflow综合示例3:对结构化数据进行分类:csv keras feature_column

    文章目录 1.数据集 1.1 使用 Pandas 从csv创建一个 dataframe 1.2 将 dataframe 拆分为训练.验证和测试集 1.3 用 tf.data 创建输入流水线Datase ...

最新文章

  1. 160613、MyBatis insert操作返回主键
  2. git部署与基本命令汇总
  3. 开发海思3520a遇到的问题
  4. 9月16日见!vivo高管亲曝NEX 3 5G:99.6%屏占比确认
  5. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  6. [NOIP]2017列队——旋转treap/非旋转treap
  7. 如何避免大数据分析的失误
  8. 学术必备 | 论文写作中注意这些细节,能显著提升成稿质量
  9. shell编程cp强制覆盖拷贝时仍需确认问题的处理方法
  10. ⒔Bash 内部命令
  11. 表格闪退怎么解决_excel2010表格打开闪退怎么回事
  12. AXE模式隐私号基于语音流分析的用户接听识别方案
  13. VUE实现市、区二级联动
  14. Linux 内核 颜色,Linux操作系统内核版的表示方法是( )
  15. 〖数学算法〗开平方的七种算法
  16. 从 拼多多 到 抖音
  17. 河北省会计证年检流程
  18. 判断机器大端还是小端
  19. 无法连接wifi Wifi 6 mt7921 wireless lan card无法启用
  20. 单目摄像头检测输出 3D 边界框

热门文章

  1. Spring Boot笔记-@ExceptionHandler拦截500服务器错误自定义数据回前端
  2. Qt学习笔记-使用QStyleFactory::create()变换风格
  3. chararray遍历_数组常用的遍历方法 ——总结
  4. django的orm指定字段名,表名 verbose_name_plural
  5. android布局优化 工具,详解Android布局优化
  6. mysql 5.7.17 64位_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
  7. 乐高无限无法连接到服务器,乐高无限近期热点问题FQ 新手问题解答
  8. mysql round 0.1111_听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(库函数,存储过程)...
  9. 框架详解_Qt开发技术:QtCharts(一)QtCharts基本介绍以及图表框架详解
  10. C语言获取某个分割符之前的内容