纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Pandas数据结构创建SeriesDataFrame对象方法 Pandas数据结构详细说明及怎样创建SeriesDataFrame对象方法

  2021-10-06 我要评论
想了解Pandas数据结构详细说明及怎样创建SeriesDataFrame对象方法的相关内容吗在本文为您仔细讲解Pandas数据结构创建SeriesDataFrame对象方法的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Pandas数据结构介绍说明,Pandas创建Series对象,Pandas创建DataFrame对象,DataFrame类型,Series类型下面大家一起来学习吧。

在网络上的Pandas教程中很多都提到了如何使用Pandas将已有的数据(如csv如hdfs等)直接加载成Pandas数据对象然后在其基础上进行数据分析操作但是很多时候我们需要自己创建Pandas数据对象并填入一些数据常见的应用场景如:我们想要将现有的数据进行处理并生成一个新的Pandas数据对象还有我们想利用Pandas的数据保存功能(比如to_csv, to_json, to_hdf等等)把我们采集到的数据写入到IO里边因此掌握Pandas对象的特性以及如何创建也是很重要的。

有些时候我们需要利用pandas数据结构创建自己的对象按自己的方式保存新数据我们将在本文中介绍如何实现。

1. Pandas的两种数据类型

Pandas支持两种数据类型分别为Series和DataFrame其中:

Series - 是一个带有标签的一维数组支持多种不同的类型但是针对同一个Series里边存储的数据类型必须是一致的
DataFrame - 是一个带有标签的二维数组是一个尺寸可以修改的表格一个DataFrame由多个Series组成每一列都是一个Series
一句话描述的话就是Series是很多标量数据(Scalar)的集合而DataFrame是很多Series的集合。

我们来看下图这个例子在1D的Series中下图中有三个Series分别保存了姓名(name) 年龄(age)和得分(marks)而他们的每一行都分别对应一个不同的人的信息在每一个Series中的每一个单元格中(比如name series的第1行对应的Prasadi)都是一个标量(Scalar)而每一行前边的0123这些就是数据的索引(index)也可以叫做标签所以说Series是带有标签的一维数组。

可以看出利用Series只能存储一种类型的数据比如说name series存储的数据是字符串类型而age series存储的数据是整数型。如果我们想把nameagemarks存储在一个数据结构里我们就需要使用DataFrame从图中看出DataFrame类似于一个表格数据有行有列行跟Series的行一致是数据的标签而每一列就是原来的每一个Series。

2. Series类型

如我们在前文中所说Series结构中可以存储任何类型的数据包括:整型字符串类型浮点型甚至是Python对象等等但是要求是每一行的数据类型必须统一。那么如何创建一个Series对象呢

通过numpy array

Pandas的一个主要用途是数据分析而它也是基于Numpy实现的因此通过numpy array来创建Series是非常常见的。

np_array = np.random.randn(5)
pd.Series(np_array, index=['a', 'b', 'c', 'd', 'e'])

上边这段代码利用np.random.randn随机生成一个长度为5的numpy array然后pd.Series使用这个numpy array来创建一个Series在创建的同时指定了每一行的index(标签)分别是abcdef输出结果为:

通过Python字典

通过上边这个示例大家有没有发现Series跟Python内置的dict类型是不是很类似标签相当于dict中的key而数据内容相当于dict中的value它们有一一对应的关系因此可以想象我们能够直接通过Python的dict来创建一个Series。

d = {'b': 1, 'a': 0, 'c': 2}
pd.Series(d)

上边这段代码我们先创建了一个Python地点d然后将这个字典传递给pd.Series来创建一个Pandas Series运行结果为:

通过标量值(Scalar)

除了上边这两种方式我们还可以通过一个简单的标量值来创建Series特别注意的是跟上边两种方式不同在使用这种方式创建Series的时候我们必须指定index

pd.Series(5, index=['a', 'b', 'c', 'd', 'e'])

如上边代码所示我们使用一个常量5然后指定index为abcde同样使用pd.Series可以创建一个Series对象看到这里我们就能够明白为什么必须指定Index了吧那是因为Series对象是有长度的长度是可以大于1的而标量的长度固定为1我们可以通过指定Index的方式来控制生成的Series的长度Series中的值则是重复使用这一个标量常量5。其运行结果为:

name属性

当我们创建一个Series的时候我们可以指定一个名称这个名称会被存储到Series的name属性中后续我们还可以使用rename方法来修改这个属性例如下边这样的代码:

s = pd.Series(np.random.randn(5), name='this_is_name')
s

创建了一个名称为this_is_name的Series然后我们使用rename方法来重命名这个Series为this_is_new_name:

s = s.rename('this_is_new_name')
s

上边这两部分代码的输入如下图:

那么这个名称有什么作用呢这里预告一下我们将在DataFrame中用到(别忘了DataFrame是多个Series的集合)

3. DataFrame类型

在第一节中我们介绍到DataFrame是一个二维的表格数据结构它有行和列的概念跟行标签相对应的为了能够按列索引数据每一列都可以有一个名称即列名我们刚在Series章节中看到Series可以表示一列数据我们在本节中介绍的DataFrame就是多个这样的Series的组合每一列就对应一个Series而每一行也对应一个Series。读到这里你是不是能够猜的出我们刚说的Series的name属性的用途了对了使用Series创建DataFrame的列的时候Series的名称就会成为列名如果Series作为行则Series的名称会成为行名。

接下来我们来讲解如何创建DataFrame

通过一维numpy array或者Python List 组成的字典
大家可以想想如果一个字典的value是array或者list的时候那么这个字典其实就是一种表格结构图为DataFrame是一个表格结构的数据类型我们是可以通过这样的字典来创建DataFrame例如下边这段代码

d = {'one': [1., 2., 3., 4.],
     'two': [4., 3., 2., 1.]}
pd.DataFrame(d, index=['a', 'b', 'c', 'd'])

我们把d这个Python字典传递给pd.DataFrame来创建新的DataFrame同时我们可以通过指定index来指定DataFrame的行名(标签)上边代码的输出为

通过包含列表的Python List

我们再来想想一下除了字典之外可以表示表格数据还有没有其他的方法是的还有Python List例如下边这段代码

data = [(1, 2., 'Hello'), (2, 3., "World")]
pd.DataFrame(data)

我们可以用data这样的Python List来表示表格数据不同于前边提到的字典(dict)用List表示的表格数据其实是没有行名和列名的因此Pandas默认会自动生成行名和列名所以上边的代码输出为:

当然自动生成的行名列名没有任何意义为了更好的操作数据我们还可以通过设置pd.DataFrame方法的index或者columns参数来指定自己的行名或者列名。

通过包含Python 字典的Python List

我们继续想想还有什么能够表示表格数据?对了包含Python字典的Python List也是可以表达表格数据的例如下边的代码

data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
pd.DataFrame(data)

data是一个Python List而列表中的每一个元素都是一个字典运行结果为:

类似的我们也可以通过指定index或者columns参数来修改行名和列名

通过Series

我们一直在提DataFrame是很多Series的集合(注:Series在DataFrame中可以是一行也可以是一列)因此我们也可以通过Series来创建DataFrame例如下边这段代码

s1 = pd.Series(np.random.randn(5), name='this_is_name')
df = pd.DataFrame(s1)
df

利用s1这个Series来创建只有一列的DataFrame输出结果为:

还记得不我们前边提到了Series的name属性在使用Series创建DataFrame的时候这个属性会用来作为列名(或者行名我们在下边的列子可以看得出)例如下边的这段代码如果有两个Series我们还可以用下边这样的方式创建DataFrame

s1 = pd.Series(np.random.randn(5), name='this_is_name')
s2 = s.rename('this_is_new_name')
df = pd.DataFrame([s1, s2])
df

这里我们使用了两个名分别为this_is_name和this_is_new_name的Series来创建DataFrame得到的结果为:

到这里相信读者已经对Pandas提供的数据类型有了一个全面的认识了并且有能力自己创建Pandas数据结构并存储自己的数据了一个常见的应用场景就是我们通过爬虫获取到数据以后可以将这些非结构化的数据以Pandas的表格格式保存值得注意的是数据存储在Pandas数据结构中的时候数据其实是在内存中的当程序被关闭以后数据就丢失了如果我们需要将数据持久化保存到硬盘或者数据库中的话则可以通过简单的调用Pandas提供的to_csv, to_json, to_hdf等等接口将数据永久保存下来。

更多Python Pandas库的相关文章请点击下面的相关文章


相关文章

猜您喜欢

  • 利用Pandas索引和选取数据 利用Pandas索引和选取数据方法详解

    想了解利用Pandas索引和选取数据方法详解的相关内容吗在本文为您仔细讲解利用Pandas索引和选取数据的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Pandas选择行,Pandas索引,Pandas选择列,Pandas查询数据,Pandas条件选择,Pandas查询元素,查询DataFrame,Pandas选取数据下面大家一起来学习吧。..
  • Java 数据接收 Java后端之俯瞰数据接收的三种方式

    想了解Java后端之俯瞰数据接收的三种方式的相关内容吗执久呀在本文为您仔细讲解Java 数据接收的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java,数据接收,Java,后端,请求数据下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Shellfishsoft.com 【贝软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式