> 技术文档 > Pandas 学习(数学建模篇)_pandas建模

Pandas 学习(数学建模篇)_pandas建模


今天学习数学建模2023年C篇(228)优秀论文

2023高教社杯全国大学生数学建模竞赛C题论文展示(C228) - 2023C题论文 - 中国大学生在线

一.pd.DataFrame

pd.DataFrame() 是 pandas 库中用于创建二维表格数据结构(DataFrame)的核心函数。它的作用是将各种格式的数据(如字典、列表、Series 等)转换为带有行索引和列标签的表格形式,便于数据处理和分析.

import pandas as pddata={\'单品编码\': [\'001\', \'002\', \'003\'], \'分类名称\': [\'水果\', \'蔬菜\', \'水果\'], \'价格\': [5.0, 3.0, 8.0]}#解读:{}为字典,{A:B}为字典里面的健值对。[a,b,c]为列表print(pd.DataFrame(data))

输出:

 单品编码 分类名称 价格0 001 水果 5.01 002 蔬菜 3.02 003 水果 8.0

二,mapping_dict =df_1.set_index(\'单品编码\')[\'分类名称\'].to_dict()代码解读

(一)df_1.set_index(\'单品编码\') 这一步会把 DataFrame df_1 的索引设置为单品编码列,返回一个新的 DataFrame。

  • 示例:假设原 DataFrame 是:
     单品编码 分类名称 价格0 001 水果 5.01 002 蔬菜 3.02 003 水果 8.0

     执行后,变成:

 分类名称 价格单品编码 001 水果 5.0002 蔬菜 3.0003 水果 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 创建 DataFrames1 = 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-01A001102023-01-15A00252023-02-01A00182023-02-10A003122023-03-05A00272023-03-20A00115
     grouped = df.groupby(\'单品编码\') for name, group in grouped: print(f\"分组键: {name}\") print(group) print(\"-\" * 20) 

    输出为:

     分组键: A001 日期 单品编码 销售量 0 2023-01-01 A001 10 2 2023-02-01 A001 8 5 2023-03-20 A001 15 -------------------- 分组键: A002 日期 单品编码 销售量 1 2023-01-15 A002 5 4 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。

  • 就学到这,内容比较基础,谢谢观看