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

相关推荐
Ice__Cai1 分钟前
Flask 之上下文详解:从原理到实战
后端·python·flask·context·上下文
檀越剑指大厂1 分钟前
【Python系列】Flask 和 FastAPI对比
python·flask·fastapi
这里有鱼汤22 分钟前
80%新手炒股都在误用技术指标?一文揭秘正确分类与实战组合
后端·python
小磊哥er1 小时前
【办公自动化】学习使用Python库让视频剪辑自动化
python
chian-ocean6 小时前
Bright Data 代理 + MCP :解决 Google 搜索反爬的完整方案
人工智能·python
AndrewHZ10 小时前
【python与生活】如何用Python写一个简单的自动整理文件的脚本?
开发语言·python·生活·脚本·文件整理
binbinaijishu8810 小时前
Python爬虫入门指南:从零开始的网络数据获取之旅
开发语言·爬虫·python·其他
Python代狂魔12 小时前
Redis
数据库·redis·python·缓存
做科研的周师兄13 小时前
【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
大数据·数据库·人工智能·python·机器学习·数据分析·机器人
王小王-12314 小时前
基于Python的游戏推荐与可视化系统的设计与实现
python·游戏·游戏推荐系统·游戏可视化