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对象,在数据分析中更加常用,具体操作方法可以参考文首的链接。

相关推荐
Voyager_431 分钟前
图像处理踩坑:浮点数误差导致的缩放尺寸异常与解决办法
数据结构·图像处理·人工智能·python·算法
jie*33 分钟前
小杰深度学习(ten)——视觉-经典神经网络——LetNet
人工智能·python·深度学习·神经网络·计算机网络·数据分析
大叔_爱编程41 分钟前
基于Python的交通数据分析应用-hadoop+django
hadoop·python·django·毕业设计·源码·课程设计·交通数据分析
Blossom.1181 小时前
用一颗MCU跑通7B大模型:RISC-V+SRAM极致量化实战
人工智能·python·单片机·嵌入式硬件·opencv·机器学习·risc-v
工业互联网专业1 小时前
基于大数据的学习资源推送系统的设计与实现 _django
vue.js·python·django·毕业设计·源码·课程设计·学习资源推送系统
木子杳衫4 小时前
【软件开发】管理类系统
python·web开发
程序员小远7 小时前
银行测试:第三方支付平台业务流,功能/性能/安全测试方法
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
猫头虎9 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底9 小时前
python 基础
开发语言·python
烛阴11 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python