Pandas DataFrame的创建方法(Create DataFrame)

pandas是一个第三方数据分析库,其集成了大量的数据模型和分析工具,可以方便的处理和分析各类数据。其中主要对象类型有Series,DataFrame和Index。本文介绍DataFrame对象的基本创建方法。

关于DataFrame的基础用法,可以查看下面的文章:
Python 利用pandas处理CSV文件(DataFrame的基础用法)

文章目录

  • 一、DataFrame的创建方法
    • [1.1 通过Python序列对象创建](#1.1 通过Python序列对象创建)
    • [1.2 通过Python字典对象创建](#1.2 通过Python字典对象创建)
    • [1.3 空值导致的类型转换](#1.3 空值导致的类型转换)
    • [1.4 通过其他函数创建](#1.4 通过其他函数创建)

一、DataFrame的创建方法

DataFrame是包含索引的二维数据结构,数据结构和Excel或关系型数据库的表非常类似。重点是其在行、列上都是有标签的,其中纵向的标签叫做索引标签(定位每一行),横向的标签叫做列标签(定位每一列),标签也是Pandas中一种对象类型(Index对象)。

1.1 通过Python序列对象创建

Pandas中的的DataFrame函数可以将其他对象转换为DataFrame对象,传入列表或元组即可得到一个DataFrame对象(首次使用需要导入pandas):

python 复制代码
import pandas as pd
df = pd.DataFrame([1,2,'a'])

这里看起来和Series很像,但注意DataFrame是包含列标签的,对比Series看一下区别:

python 复制代码
s = pd.Series([1,2,'a']) 

创建一个二维DataFrame,默认索引标签和列标签都是从0开始方差为1的等差数列(0,1,2,3...):

python 复制代码
df = pd.DataFrame([[1,2,3], [4,5,6]])

通过传入index和columns参数可以显式指定索引标签和列标签(为行和列命名,方便引用):

python 复制代码
df = pd.DataFrame([[1,2,3], [4,5]], index=['a','b'], columns=['x','y','z'])

1.2 通过Python字典对象创建

通过Python字典创建DataFrame时,字典的键默认会变为列标签,索引标签为数字:

python 复制代码
d = {'x':[1,2,3], 'y':[4,5,6]}
df = pd.DataFrame(d)

如果字典的值是Series,那么Series的标签会成为DataFrame的索引标签:

python 复制代码
s1 = pd.Series([1,2,3], index=['a','b','c'])
s2 = pd.Series([4,5,6], index=['b','c','d'])
d = {'x':s1, 'y':s2}
df = pd.DataFrame(d)

可以看到DataFrame会包含s1和s2的所有标签,另一个Series中不存在的标签会使用NaN(Not a Number)填充。

我们可以把DataFrame看作由Series组成的字典,每一列都是一个Series,用字典的方式引用列标签就可以得到Series:

python 复制代码
df['x']

1.3 空值导致的类型转换

这里有个小问题,我们创建的时候传入数字都是整型,为什么最终的DataFrame中变成了浮点型(float64)?答案是这里填入了NaN(即np.nan),这是NumPy中一个特殊的浮点类型,代表数字类型的空值,而Series是同构的,因此为了兼容NaN,需要将数据类型向高级的转换,所以整列的类型都变成了浮点型。

如果s1包含'd'索引,就不会出现这种转换,和上面的例子对比一下区别:

python 复制代码
s1 = pd.Series([1,2,3,4], index=['a','b','c','d'])
s2 = pd.Series([4,5,6], index=['b','c','d'])
d = {'x':s1, 'y':s2}
df = pd.DataFrame(d)
df['x'].dypte
df['y'].dypte

x列由于不需要填充NaN,保留了整型(int64),而y列需要填入NaN,整列都被转换为浮点型(float64)。

1.4 通过其他函数创建

上面都是通过手搓的方式创建DataFrame,实际数据分析中我们较少使用这种方式,更常见的方式是从文件中读取数据转换为DataFrame对象。Pandas的read_csv, read_execl等函数可以从对应的文件格式中读取数据并返回DataFrame对象,在数据分析中更加常用,具体操作方法可以参考文首的链接。

相关推荐
今天长肉了吗1 分钟前
风控指标平台实战:大数据量下如何设计分批处理
开发语言·数据库·python
2301_782040457 分钟前
JavaScript中丢失的this:回调函数中指向改变的对策
jvm·数据库·python
2301_818008449 分钟前
MySQL从库出现数据同步异常中断_重新获取binlog坐标同步
jvm·数据库·python
四维迁跃10 分钟前
MySQL如何优雅处理数据库连接池耗尽_HikariCP与连接数调优
jvm·数据库·python
X566123 分钟前
Go语言如何做Helm Chart_Go语言Helm打包部署教程【收藏】
jvm·数据库·python
szccyw026 分钟前
如何阻止 HTML 页面在 JavaScript 执行完成前渲染
jvm·数据库·python
forEverPlume27 分钟前
Go语言怎么做链路追踪_Go语言分布式链路追踪教程【精选】
jvm·数据库·python
abc123456sdggfd30 分钟前
golang如何操作Elasticsearch搜索引擎_golang操作Elasticsearch方法
jvm·数据库·python
盼小辉丶31 分钟前
PyTorch强化学习实战(6)——交叉熵方法详解与实现
人工智能·pytorch·python·强化学习
计算机毕业编程指导师31 分钟前
【计算机毕设选题推荐】基于Hadoop+Spark的诺贝尔奖可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·诺贝尔奖