pandas读取某一行的数据(pandas数据可视化)

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

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

来源:华章科技

  • 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》

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

(0)

相关推荐

  • Python中如何利用Pandas读取Excel中的数据

    我们利用Python操作Excel的时候,经常需要读取数据,这个时候就会用到Pandas库了,那么如何运用Pandas读取Excel中的数据呢?下面小编给大家分享一下. 操作方法 01 首先我们打开E ...

  • 如何复制一行或一列数据到Excel不同单元格中?

    在日常从事科研工作的过程中,经常会遇到将一行或一列数据复制到Excel进行数据处理的情况,我们知道一般情况下复制的数据只会默认地存到Excel的一个单元格里面,很明显这不是我们所期待的.我们希望将将这 ...

  • matlab关于数据概率分布的可视化介绍

    matlab可视化的时候,我们有时通过数据统计并不能知道或清楚数据到底适合什么样的分布情况,本文就是基于这样的情况对数据的分布做一个简单的概率分布的可视化介绍,感兴趣的用户一起去了解一下吧! 方法/步 ...

  • wps表格怎么导入数据,外部数据怎么导入wps表格

    怎么把外部数据导入到wps表格中?经常有外部数据是其他格式的,需要进行分类抽取,这时候就需要导入到wps表格中进行.那么如何快速导入外部数据到wps表格. wps表格怎么导入数据,外部数据怎么导入wp ...

  • spss录入数据与数据文件编辑的操作攻略

    依照变量的定义,我们进行数据的录入,待录入结束后,我们进行数据的保存. 1.录入数据与数据保存 01 单击[数据视图],切换到数据视图界面录入数据. 02 录入时根据数据特点按行或按列输入数据. 03 ...

  • 什么是大数据?大数据能做什么?

    想必现在很多人都听说过大数据,那什么是大数据?大数据能做什么?下面小编为大家解读什么是大数据. 操作方法 01 大数据,顾名思义,指的就是一个很大的数据的集合体,具体指在无法在可承受的时间范围内用常规 ...

  • 数据中心数据备份方法有哪些

    数据中心全年不休地运行,一旦发生不可预知的灾难,对数据中心来说将是一笔不小的损失,特别是数据的损坏,所以做好数据备份是非常重要的.下面是为大家介绍的数据中心四种数据备份方式. 操作方法 01 第一种数 ...

  • 如何在MS Excel2016导入外部数据创建数据透视表

    创建数据透视表时,可以应用本工作簿中的数据资料,也可以导入外部的数据用于创建数据透视表,下面就详细的告诉小伙伴们,如何在MS Excel2016导入外部数据创建数据透视表? 操作方法 01 首先我们打 ...

  • 批量修改WPS或excel表格一行或一列数据

    比如我们做好一个表格,填好了数据,现在想修改其中的一列或者一行,例如:想在A列原来的数据的基础上减10,不要告诉我你是一个一个地修改哦,数据少了还可以,数据多了那就累死了很麻烦,那么如何批量修改一行或 ...