【愚公系列】《Python网络爬虫从入门到精通》028-DataFrame对象

举报
愚公搬代码 发表于 2025/05/01 00:09:02 2025/05/01
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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)

参数说明:

  1. data: 数据,可以是以下类型之一:

    • ndarray 数组
    • Series 对象
    • 列表
    • 字典等
  2. index: 行标签(索引),可选。

  3. columns: 列标签(索引),可选。

  4. 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
  5. 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.注意事项

  1. 索引对齐:创建 DataFrame 时,行索引(index)和列索引(columns)需与数据长度一致。
  2. 混合数据类型:同一列的数据类型必须一致,否则会被自动推断为 object 类型。
  3. 广播机制:字典创建时,标量值(如班级字段)会自动填充到所有行。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。