社区编辑申请
注册/登录
手把手教你使用 Pandas 读取结构化数据
大数据 数据分析
Pandas是一个基于Numpy库开发的更高级的结构化数据分析工具,提供了Series、DataFrame、Panel等数据结构,可以很方便地对序列、截面数据(二维表)、面板数据进行处理。
本文转载自微信公众号「大数据DT」,作者张秋剑 张浩 等。转载本文请联系大数据DT公众号。
  • DataFrame是我们常见的二维数据表,包含多个变量(列)和样本(行),通常被称为数据框。
  • Series是一个一维结构的序列,包含指定的索引信息,可以被视作DataFrame中的一列或一行。其操作方法与DataFrame十分相似。
  • Panel是包含序列及截面信息的三维结构,通常被称为面板数据。

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

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

1 读取文件

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

  1. import pandas as pd 
  2. csv = pd.read_csv('data/sample.csv'
  3. csv 
  1. id name   scores 
  2. 0   1  小明    78.0 
  3. 1   2  小红    87.0 
  4. 2   3  小白    99.0 
  5. 3   4  小青 99999.0 
  6. 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。

2 读取指定行和指定列

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

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

3 分块读取

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

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

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

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

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

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

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

5 以指定编码方式读取

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

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

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

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

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

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

 

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

 

责任编辑:武晓燕 来源: 大数据DT
相关推荐

2022-04-01 20:29:26

Pandas数据存储

2022-05-18 23:42:08

网络安全安全分析工具

2022-04-24 10:33:56

大数据数据分析

2022-05-26 07:41:24

Ftp服务器

2021-08-02 23:15:20

2022-05-20 14:54:33

数据安全数字化转型企业

2022-05-09 15:08:56

存储厂商NFV领域华为

2021-02-06 14:55:05

大数据pandas数据分析

2022-05-23 10:55:19

华为数字化转型架构蓝图

2022-05-28 15:59:55

PythonPandas数据可视化

2022-05-27 14:29:27

东数西算华为数博会

2022-05-25 10:49:02

云存储云计算

2022-05-17 15:51:32

数据中心运维能力基础设施

2022-04-01 15:36:05

Python推荐系统数据

2022-05-12 14:44:38

数据中心IT云计算

2022-05-17 16:56:33

开发工具前端

2022-05-26 18:08:32

数据中心

2022-05-25 16:52:55

数据智能瑞数信息API

2022-05-20 06:14:57

人工智能AI

2022-04-21 10:49:30

智慧城市物联网

同话题下的热门内容

2022年优秀预测分析工具和软件大数据技术的成功案例及趋势使用替代数据的五个隐性成本为什么不能忽视建筑物中的数据分析?数据驱动业务的18个有效策略

编辑推荐

什么是数据分析的漏斗模型?数据分析师还吃香吗?用数据告诉你对比解读五种主流大数据架构的数据分析能力《狄仁杰之四大天王》影评分析(爬虫+词云+热力图)22个免费的数据可视化和分析工具推荐
我收藏的内容
点赞
收藏

51CTO技术栈公众号