DataFrame 是 Pandas 的重要数据结构之一,也是在使用 Pandas 进行数据分析过程中最常用的结构之一,可以这么说,掌握了 DataFrame 的用法,你就拥有了学习数据分析的基本能力。

一、认识DataFrame结构

DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:

表格中展示了某个销售团队个人信息和绩效评级(rating)的相关数据。数据以行和列形式来表示,其中每一列表示一个属性,而每一行表示一个条目的信息。下表展示了上述表格中每一列标签所描述数据的数据类型,如下所示:

         Column

               Type

              name

                String

               age

               Integer

              gender

                String

              rating

                 Float

DataFrame 的每一行数据都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。因此 DataFrame 其实是从 Series 的基础上演变而来。在数据分析任务中 DataFrame 的应用非常广泛,因为它描述数据的更为清晰、直观。

通过示例对  DataFrame 结构做进一步讲解。下面展示了一张学生成绩表,如下所示:

DataFrame 结构类似于 Execl 的表格型,表格中列标签的含义如下所示:

Regd.No:表示登记的序列号

Name:学生姓名

Marks:学生分数

同 Series 一样,DataFrame 自带行标签索引,默认为“隐式索引”即从 0 开始依次递增,行标签与 DataFrame 中的数据项一一对应。上述表格的行标签从 0 到 5,共记录了 5 条数据(图中将行标签省略)。当然你也可以用“显式索引”的方式来设置行标签。

下面对 DataFrame 数据结构的特点做简单地总结,如下所示:

DataFrame 每一列的标签值允许使用不同的数据类型;

DataFrame 是表格型的数据结构,具有行和列;

DataFrame 中的每个数据值都可以被修改。

DataFrame 结构的行数、列数允许增加或者删除;

DataFrame 有两个方向的标签轴,分别是行标签和列标签;

DataFrame 可以对行和列执行算术运算。

二、创建DataFrame对象

创建 DataFrame 对象的语法格式如下:

import pandas as pd

pd.DataFrame( data, index, columns, dtype, copy)

参数说明:

参数名称    说明

data 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。

index 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。

columns 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。

dtype dtype表示每一列的数据类型。

copy 默认为 False,表示复制数据 data。

Pandas 提供了多种创建 DataFrame 对象的方式,主要包含以下五种,分别进行介绍。

1.创建空的DataFrame对象

使用下列方式创建一个空的 DataFrame,这是 DataFrame 最基本的创建方法。

import pandas as pd

df = pd.DataFrame()

print(df)

输出结果如下:

Empty DataFrame

Columns: []

Index: []

2.列表创建DataFame对象

可以使用单一列表或嵌套列表来创建一个 DataFrame,单一列表创建 DataFrame示例如下:

import pandas as pd

data = [['Alex',10],['Bob',12],['Clarke',13]]

df = pd.DataFrame(data,columns=['Name','Age'])

print(df)

输出如下:

      Name      Age

0     Alex      10

1     Bob       12

2     Clarke    13

如果指定数值元素的数据类型为 float:

import pandas as pd

data = [['Alex',10],['Bob',12],['Clarke',13]]

df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)

print(df)

输出如下:

      Name     Age

0     Alex     10.0

1     Bob      12.0

2     Clarke   13.0

3. 字典嵌套列表创建

data 字典中,键对应的值的元素长度必须相同(也就是列表长度相同)。如果传递了索引,那么索引的长度应该等于数组的长度;如果没有传递索引,那么默认情况下,索引将是 range(n),其中 n 代表数组长度。

import pandas as pd

data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}

df = pd.DataFrame(data)

print(df)

输出如下:

      Age      Name

0     28        Tom

1     34       Jack

2     29      Steve

3     42      Ricky

注意:这里使用了默认行标签,也就是 range(n)。它生成了 0,1,2,3,并分别对应了列表中的每个元素值。现在给上述代码示例添加自定义的行标签:

import pandas as pd

data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}

df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])

print(df)

输出如下:

         Age    Name

rank1    28      Tom

rank2    34     Jack

rank3    29    Steve

rank4    42    Ricky

注意:index 参数为每行分配了一个索引。

4.列表嵌套字典创建DataFrame对象

列表嵌套字典可以作为输入数据传递给 DataFrame 构造函数。默认情况下,字典的键被用作列名。示例如下:

import pandas as pd

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

df = pd.DataFrame(data)

print(df)

输出如下:

    a    b      c

0   1    2      NaN

1   5    10     20.0

注意:如果其中某个元素值缺失,也就是字典的 key 无法找到对应的 value,将使用 NaN 代替。给上述代码示例添加行标签索引:

import pandas as pd

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

df = pd.DataFrame(data, index=['first', 'second'])

print(df)

输出如下:

        a   b       c

first   1   2     NaN

second  5   10   20.0

如何使用字典嵌套列表以及行、列索引表创建一个 DataFrame 对象。

import pandas as pd

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])

print(df1)

print(df2)

输出如下:

#df2输出

         a  b

first    1  2

second   5  10

#df1输出

         a  b1

first    1  NaN

second   5  NaN

注意:因为 b1 在字典键中不存在,所以对应值为 NaN。

5.Series创建DataFrame对象

大家也可以传递一个字典形式的 Series,从而创建一个 DataFrame 对象,其输出结果的行索引是所有 index 的合集。示例如下:

import pandas as pd

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

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

df = pd.DataFrame(d)

print(df)

输出如下:

      one    two

a     1.0    1

b     2.0    2

c     3.0    3

d     NaN    4

注意:对于 one 列而言,此处虽然显示了行索引 'd',但由于没有与其对应的值,所以它的值为 NaN。

三、列索引操作DataFrame

DataFrame 可以使用列索(columns index)引来完成数据的选取、添加和删除操作,下文将依次对这些操作详细地进行一一介绍。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月28日

referrer策略和meta标签的问题

referrer策略和meta标签的问题请求后端接口时,banner图片的请求出现403错误:GEThttp://xxxxxxxxxxxx403(Forbidden)。在网上搜寻一番,解决方法如下:在index.html中的head中添加<meta name="referrer" content="no-referrer" />。在此之前,关于r

热门专题

开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
卓越综合高中|卓越综合高中
卓越综合高中
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
弥勒综合高中|弥勒综合高中
弥勒综合高中
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部