【愚公系列】《Python网络爬虫从入门到精通》028-DataFrame对象
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
🚀前言
在数据分析与处理的世界中,Pandas库因其强大的数据处理能力而备受推崇。而在Pandas中,DataFrame对象作为其核心数据结构之一,以其灵活性和易用性成为数据科学家和分析师的得力助手。DataFrame不仅可以存储异构数据,还提供了丰富的操作功能,使得数据的清洗、处理和分析变得直观而高效。
🚀一、DataFrame对象
DataFrame 是 Pandas 中最核心的数据结构,它是一个二维表格型数据,由行索引(index
)和列索引(columns
)共同标识数据,类似于 Excel 表格或 SQL 表。
🔎1 图解DataFrame
DataFrame 可以看作是由多个 Series 组成的字典(共享相同的行索引),每个列是一个 Series。
示例:学生成绩表

-
结构特点: -
每列可以是不同的数据类型(数值、字符串、布尔等)。 -
支持灵活的行列操作(增删改查)。
-
案例:输出成绩表的每一列数据
import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
data = [[110,105,99],[105,88,115],[109,120,130]]
index = [0,1,2]
columns = ['语文','数学','英语']
#创建DataFrame数据
df = pd.DataFrame(data=data, index=index,columns=columns)
print(df)
#遍历DataFrame数据的每一列
for col in df.columns:
series = df[col]
print(series)
上述代码返回的是series对象:
🔎2 创建DataFrame对象
在Pandas中,创建DataFrame对象主要通过使用pandas.DataFrame
方法,语法格式如下:
pandas.DataFrame(data, index, columns, dtype, copy)
参数说明:
-
data: 数据,可以是以下类型之一:
-
ndarray
数组 -
Series
对象 -
列表 -
字典等
-
-
index: 行标签(索引),可选。
-
columns: 列标签(索引),可选。
-
dtype: 每一列数据的数据类型。与Python的数据类型有所不同,例如:
-
object
数据类型对应Python的字符型(str)。 -
int64
对应整数类型(int)。 -
float64
对应浮点类型(float)。 -
bool
对应布尔类型(bool)。 -
datetime64
对应日期时间类型(datetime)。 -
timedelta
对应时间差类型(timedelta)。 -
category
对应分类类型(category)。
对应关系可以参考以下表格:
Pandas dtype Python type object str int64 int float64 float bool bool datetime64 datetime64[ns] timedelta timedelta category category -
-
copy: 是否复制数据,默认为
False
。如果设为True
,则返回的数据会是数据的副本。
返回值:
-
返回一个 DataFrame
对象。
🦋2.1 通过二维数组创建
import pandas as pd
# 解决输出列名对齐问题
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, columns=columns)
print(df)
输出:
语文 数学 英语
0 110 105 99
1 105 88 115
2 109 120 130
🦋2.2 通过字典创建
字典的键为列名,值可以是列表(长度需一致)或标量(广播到所有行):
df = pd.DataFrame({
'语文': [110, 105, 99],
'数学': [105, 88, 115],
'英语': [109, 120, 130],
'班级': '高一7班' # 标量值自动广播到所有行
}, index=[0, 1, 2])
print(df)
输出:
语文 数学 英语 班级
0 110 105 109 高一7班
1 105 88 120 高一7班
2 99 115 130 高一7班
🔎3 DataFrame的重要属性和函数
🦋3.1 核心属性

🦋3.2 常用函数

🔎4.示例代码及输出
🦋4.1 查看前3行数据
print(df.head(3))
输出:
语文 数学 英语 班级
0 110 105 109 高一7班
1 105 88 120 高一7班
2 99 115 130 高一7班
🦋4.2 查看统计信息
print(df.describe())
输出:
语文 数学 英语
count 3.000000 3.000000 3.000000
mean 104.666667 102.666667 119.666667
std 5.507571 14.846369 10.506096
min 99.000000 88.000000 109.000000
25% 102.000000 96.500000 114.500000
50% 105.000000 105.000000 120.000000
75% 107.500000 110.000000 125.000000
max 110.000000 115.000000 130.000000
🦋4.3 查看数据类型
print(df.dtypes)
输出:
语文 int64
数学 int64
英语 int64
班级 object
dtype: object
🔎5.注意事项
-
索引对齐:创建 DataFrame 时,行索引( index
)和列索引(columns
)需与数据长度一致。 -
混合数据类型:同一列的数据类型必须一致,否则会被自动推断为 object
类型。 -
广播机制:字典创建时,标量值(如 班级
字段)会自动填充到所有行。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)