Pandas 学习(数学建模篇)
今天学习数学建模2023年C篇(228)优秀论文
2023高教社杯全国大学生数学建模竞赛C题论文展示(C228) - 2023C题论文 - 中国大学生在线
一.pd.DataFrame
pd.DataFrame()
是 pandas 库中用于创建二维表格数据结构(DataFrame)的核心函数。它的作用是将各种格式的数据(如字典、列表、Series 等)转换为带有行索引和列标签的表格形式,便于数据处理和分析.
import pandas as pd
data={'单品编码': ['001', '002', '003'],'分类名称': ['水果', '蔬菜', '水果'],'价格': [5.0, 3.0, 8.0]}
#解读:{}为字典,{A:B}为字典里面的健值对。[a,b,c]为列表
print(pd.DataFrame(data))
输出:
单品编码 分类名称 价格
0 001 水果 5.0
1 002 蔬菜 3.0
2 003 水果 8.0
二,mapping_dict =df_1.set_index('单品编码')['分类名称'].to_dict()代码解读
(一)df_1.set_index('单品编码') 这一步会把 DataFrame df_1 的索引设置为单品编码列,返回一个新的 DataFrame。
- 示例:假设原 DataFrame 是:
单品编码 分类名称 价格 0 001 水果 5.0 1 002 蔬菜 3.0 2 003 水果 8.0
执行后,变成:
分类名称 价格
单品编码
001 水果 5.0
002 蔬菜 3.0
003 水果 8.0
(二)['分类名称']
这一步会从上面的 DataFrame 中选取分类名称
列,返回一个 Series,其中单品编码
是索引,分类名称
是值。
单品编码
001 水果
002 蔬菜
003 水果
Name: 分类名称, dtype: object
(3)to_dict()
这一步会把 Series 转换为字典,其中索引(单品编码
)会成为字典的键,值(分类名称
)会成为字典的对应值
{'001': '水果', '002': '蔬菜', '003': '水果'}
三,关于series的知识点
Series
是 pandas 库中一种一维带标签的数据结构,类似于带索引的数组或列表。它可以存储任何数据类型(整数、字符串、浮点数、Python 对象等),并且每个元素都有一个对应的标签(索引)。理解 Series
是掌握 pandas 的基础,因为它是 DataFrame
(二维表格)的基本组成单元。
创建方式:
import pandas as pd# 从列表创建,默认索引为 0, 1, 2...
s = pd.Series([10, 20, 30, 40])
print(s)
# 输出:
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64# 指定自定义索引
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
# 输出:
# a 10
# b 20
# c 30
# d 40
# dtype: int64
理解Series与DataFrame的关系:
- DataFrame 是由多个 Series 组成的二维表格,每一列都是一个 Series。
- Series 的索引对应 DataFrame 的行索引,Series 的名称(name 属性)对应 DataFrame 的列名。
- 代码示例:
# 用两个 Series 创建 DataFrame s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'], name='A') s2 = pd.Series([4, 5, 6], index=['a', 'b', 'c'], name='B')df = pd.DataFrame({'列1': s1, '列2': s2}) print(df) # 输出: # 列1 列2 # a 1 4 # b 2 5 # c 3 6
三,grouped = df.groupby('单品编码')的解析
groupby作用是根据
df
这个 DataFrame 中 ‘单品编码’ 这一列的值,将df
中的行进行分组。它创建了一个特殊的 Pandas 对象,称为“GroupBy 对象”(grouped
),这个对象内部包含了按 ‘单品编码’ 分组后的各个数据子集。不是直接获取列,而是基于列的值进行分组
示例:当我们获得这样的数据后:日期 单品编码 销售量 2023-01-01 A001 10 2023-01-15 A002 5 2023-02-01 A001 8 2023-02-10 A003 12 2023-03-05 A002 7 2023-03-20 A001 15
grouped = df.groupby('单品编码')for name, group in grouped:print(f"分组键: {name}")print(group)print("-" * 20)
输出为:
分组键: A001日期 单品编码 销售量0 2023-01-01 A001 102 2023-02-01 A001 85 2023-03-20 A001 15--------------------分组键: A002日期 单品编码 销售量1 2023-01-15 A002 54 2023-03-05 A002 7--------------------分组键: A003日期 单品编码 销售量3 2023-02-10 A003 12--------------------
四,字典的创建
-
创建一个空字典:
-
results = {}
添加字典
-
results[key] = value
这将为字典
results
添加一个键为key
、值为value
的键值对。如果key
已经存在,则更新其对应的值。 -
访问值
value = results[key]
这将获取键
key
对应的值。如果key
不存在,将引发KeyError。
-
就学到这,内容比较基础,谢谢观看