DataFrame

880 字
4 分钟
DataFrame

DataFrame学习#

DataFrame基本介绍#

在 pandas 中,DataFrame 是一种二维表格型数据结构,可以理解为 “带标签的二维数组” 或 “多个 Series 的组合”。它具有行索引(index)和列索引(columns),能够存储不同数据类型的列(如整数、字符串、日期等),是 pandas 中最核心、最常用的数据结构,广泛用于数据分析、清洗和处理。 如果把 Series 比作 “带标签的一列数据”,那么 DataFrame 就是 “带标签的多列数据组成的表格”。例如:

姓名年龄城市
张三25北京
李四30上海
王五28广州

这就是一个简单的 DataFrame,其中 “姓名"" 年龄 ""城市” 是列索引,每行的索引默认为 0、1、2(也可自定义)。

DataFrame的创建#

# dataframe的创建方式
import pandas as pd
import numpy as np
# 通过series来创建
s1 = pd.Series([1,2,3,4,5])
s2 = pd.Series([6,7,8,9,10])
df = pd.DataFrame({"第1列":s1,"第2列":s2})
# 通过字典来创建
df = pd.DataFrame(
{
"name":["tom",'jack','alice','bob','allen'],
"age":[15,17,20,26,30],
"score":[60.5,80,30.6,70,83.5]
},index=[1,2,3,4,5],columns=["name","score","age"]
)
df

DataFrame的属性#

DataFrame的常用方法#

'''
案例1:学生成绩分析
场景:某班级的学生成绩数据如下,请完成以下任务:
1. 计算每位学生的总分和平均分。
2. 找出数学成绩高于90分或英语成绩高于85分的学生。
3. 按总分从高到低排序,并输出前3名学生。
'''
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'数学': [85, 92, 78, 88, 95],
'英语': [90, 88, 85, 92, 80],
'物理': [75, 80, 88, 85, 90]
}
scores = pd.DataFrame(data)
#1. 计算每位学生的总分和平均分。
scores['总分'] = scores[['数学','英语','物理']].sum(axis=1)
scores['平均分'] = scores['总分'] / 3
scores['平均分2'] = scores[['数学','英语','物理']].mean(axis=1)
#2. 找出数学成绩高于90分或英语成绩高于85分的学生。
scores[ (scores['数学']>90 ) | (scores['英语']>85 ) ]
#3. 按总分从高到低排序,并输出前3名学生。
r1 = scores.sort_values('总分',ascending=False).head(3)
r2 =scores.nlargest(3,columns=['总分'])
print(r1)
print(r2)
'''
案例2:销售数据分析
场景:某公司销售数据如下,请完成以下任务:
1. 计算每种产品的总销售额(销售额 = 单价 × 销量)。
2. 找出销售额最高的产品。
3. 按销售额从高到低排序,并输出所有产品信息。
'''
import pandas as pd
data = {
'产品名称': ['A', 'B', 'C', 'D'],
'单价': [100, 150, 200, 120],
'销量': [50, 30, 20, 40]
}
df = pd.DataFrame(data)
df['总销售额'] = df['单价']*df['销量']
df.nlargest(1,columns=['总销售额'])
df.sort_values('总销售额',ascending=False)
'''
案例3:电商用户行为分析
场景:某电商平台的用户行为数据如下,请完成以下任务:
1. 计算每位用户的总消费金额(消费金额 = 商品单价 × 购买数量)
2. 找出消费金额最高的用户,并输出其所有信息
3. 计算所有用户的平均消费金额(保留2位小数)
4. 统计电子产品的总购买数量
'''
import pandas as pd
data = {
'用户ID': [101, 102, 103, 104, 105],
'用户名': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'商品类别': ['电子产品', '服饰', '电子产品', '家居', '服饰'],
'商品单价': [1200, 300, 800, 150, 200],
'购买数量': [1, 3, 2, 5, 4]
}
df = pd.DataFrame(data)
df['总消费金额'] = df['商品单价']*df['购买数量']
df.nlargest(1,columns=['总消费金额'])
df['总消费金额'].mean()
df[df['商品类别']=='电子产品']['购买数量'].sum()

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

DataFrame
https://blog.tjcheng.cn/posts/migrated/old-74/
作者
TengJinCheng
发布于
2025-09-28
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录