Python酷库之旅-第三方库Pandas(017)

目录

一、用法精讲

41、pandas.melt函数

41-1、语法

41-2、参数

41-3、功能

41-4、返回值

41-5、说明

41-5-1、宽格式数据(Wide Format)

41-5-2、长格式数据(Long Format)

41-6、用法

41-6-1、数据准备

41-6-2、代码示例

41-6-3、结果输出

42、pandas.pivot函数

42-1、语法

42-2、参数

42-3、功能

42-4、返回值

42-5、说明

42-6、用法

42-6-1、数据准备

42-6-2、代码示例

42-6-3、结果输出 

43、pandas.pivot_table函数

43-1、语法

43-2、参数

43-3、功能

43-4、返回值

43-5、说明

43-6、用法

43-6-1、数据准备

43-6-2、代码示例

43-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

41、pandas.melt函数
41-1、语法
# 41、pandas.melt函数
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
Unpivot a DataFrame from wide to long format, optionally leaving identifiers set.

This function is useful to massage a DataFrame into a format where one or more columns are identifier variables (id_vars), while all other columns, considered measured variables (value_vars), are “unpivoted” to the row axis, leaving just two non-identifier columns, ‘variable’ and ‘value’.

Parameters:
id_vars
scalar, tuple, list, or ndarray, optional
Column(s) to use as identifier variables.

value_vars
scalar, tuple, list, or ndarray, optional
Column(s) to unpivot. If not specified, uses all columns that are not set as id_vars.

var_name
scalar, default None
Name to use for the ‘variable’ column. If None it uses frame.columns.name or ‘variable’.

value_name
scalar, default ‘value’
Name to use for the ‘value’ column, can’t be an existing column label.

col_level
scalar, optional
If columns are a MultiIndex then use this level to melt.

ignore_index
bool, default True
If True, original index is ignored. If False, the original index is retained. Index labels will be repeated as necessary.

Returns:
DataFrame
Unpivoted DataFrame.
41-2、参数

41-2-1、frame(必须)要转换的DataFrame。

41-2-2、id_vars(可选,默认值为None)在熔化过程中用作标识符变量的列名列表,这些列将保持在结果DataFrame中,不会“熔化”成行,如果不提供,则假定没有标识符变量,所有列都将被熔化。

41-2-3、value_vars(可选,默认值为None)要熔化成行变量的列名列表,如果未指定,则除了id_vars之外的所有列都将被熔化。

41-2-4、var_name(可选,默认值为None)在熔化后的DataFrame中,用于存储原列名(即value_vars中的列名)的列名,如果未指定,则默认为'variable'。

41-2-5、value_name(可选,默认值为'value')在熔化后的DataFrame中,用于存储原列值的列名。

41-2-6、col_level(可选,默认值为None)如果列是多级索引(MultiIndex),则此参数用于选择将被熔化的级别,可以是级别编号、级别名称或级别名称的元组/列表。

41-2-7、ignore_index(可选,默认值为True)是否在熔化后重置索引,如果为True,则忽略原始索引,并在熔化后创建一个新的整数索引。

41-3、功能

        用于将DataFrame中的宽格式数据(即具有多个变量列的数据)转换为长格式(或称为“熔化”格式),这在进行数据可视化准备数据以进行某些类型的分析时非常有用。

41-4、返回值

        返回一个新的DataFrame,该DataFrame包含了熔化后的数据。

41-5、说明

        宽格式数据和长格式数据是数据处理中常见的两种数据格式,它们在数据结构和呈现方式上有所不同,适用于不同的分析需求。

41-5-1、宽格式数据(Wide Format)

41-5-1-1、定义
        宽格式数据是指数据集对所有的变量进行了明确的细分,每个变量都占有一列,每个观察值占有一行,这种格式下,数据总体的表现为变量多而观察值少,每一行数据为一条完整的记录,记录着某个实体(如个体、时间点等)的各种属性或变量。

41-5-1-2、特点

41-5-1-2-1、变量多而观察值少:每个变量都作为一列存在,每行数据包含该实体所有变量的值。
41-5-1-2-2、易于理解:对于人类阅读者来说,宽格式数据通常更直观易懂,因为每行都是一个实体的完整信息。
41-5-1-2-3、适用于某些分析:在需要同时查看多个变量值的情况下,宽格式数据更为方便。

41-5-1-3、示例        

        假设有一份学生信息表,包括学生的姓名、年龄、性别、成绩等字段,每行代表一个学生的信息,那么这份数据就是宽格式数据。

41-5-2、长格式数据(Long Format)

41-5-2-1、定义

        长格式数据一般是指数据集中的变量没有做明确的细分,即变量中至少有一个变量中的元素存在值严重重复循环的情况(可以归为几类),表格整体的形状为长方形,即变量少而观察值多,在这种格式下,每一行数据记录的是某个实体(如个体、时间点等)的一个属性或变量的值,形式通常为“key:value”对。

41-5-2-2、特点

41-5-2-2-1、变量少而观察值多:数据通过更多的行来表示,每行只包含一个变量(或属性)的值,以及一个或多个用于标识实体的标识符(如ID)。
41-5-2-2-2、便于数据分析:在需要进行统计分析、数据可视化或建模时,长格式数据通常更为灵活和方便。
41-5-2-2-3、需要转换:在某些情况下,为了进行特定的分析或可视化,可能需要将宽格式数据转换为长格式数据。

41-5-2-3、示例

        如果上述学生信息表被转换为长格式,那么可能会有多行数据来分别表示每个学生的姓名、年龄、性别和成绩等信息,每行都会包含一个标识符(如学生ID)来区分不同的学生。

        总之,宽格式数据和长格式数据各有优缺点,适用于不同的场景和需求。在处理数据时,应根据具体的分析目标和工具选择合适的数据格式;同时,了解如何在不同格式之间进行转换也是数据处理和分析的重要技能之一。

41-6、用法
41-6-1、数据准备
41-6-2、代码示例
# 41、pandas.melt函数
import pandas as pd
df = pd.DataFrame({
    'A': ['foo', 'bar', 'baz'],
    'B': [1, 2, 3],
    'C': [4, 5, 6]
})
print(df, end='\n\n')
melted_df = pd.melt(df, id_vars=['A'], value_vars=['B', 'C'])
print(melted_df)
41-6-3、结果输出
# 41、pandas.melt函数
#      A  B  C
# 0  foo  1  4
# 1  bar  2  5
# 2  baz  3  6
# 
#      A variable  value
# 0  foo        B      1
# 1  bar        B      2
# 2  baz        B      3
# 3  foo        C      4
# 4  bar        C      5
# 5  baz        C      6
42、pandas.pivot函数
42-1、语法
# 42、pandas.pivot函数
pandas.pivot(data, *, columns, index=_NoDefault.no_default, values=_NoDefault.no_default)
Return reshaped DataFrame organized by given index / column values.

Reshape data (produce a “pivot” table) based on column values. Uses unique values from specified index / columns to form axes of the resulting DataFrame. This function does not support data aggregation, multiple values will result in a MultiIndex in the columns. See the User Guide for more on reshaping.

Parameters:
data
DataFrame
columns
str or object or a list of str
Column to use to make new frame’s columns.

index
str or object or a list of str, optional
Column to use to make new frame’s index. If not given, uses existing index.

values
str, object or a list of the previous, optional
Column(s) to use for populating new frame’s values. If not specified, all remaining columns will be used and the result will have hierarchically indexed columns.

Returns:
DataFrame
Returns reshaped DataFrame.

Raises:
ValueError:
When there are any index, columns combinations with multiple values. DataFrame.pivot_table when you need to aggregate.
42-2、参数

42-2-1、data(必须)DataFrame或Series对象,这是你想要重塑的原始数据。

42-2-2、columns(必须)用于新DataFrame的列索引的列名或列名列表,这个参数指定了原始DataFrame中哪些列的值将被用作新DataFrame的列标题。

42-2-3、index(必须)用于新DataFrame的行索引的列名或列名列表,如果未指定,则使用原始 DataFrame 的索引,这个参数是必需的(虽然在函数签名中标记为可选,但实际上不指定会导致错误),但函数签名中的_NoDefault.no_default是一种内部机制,用于在函数定义时表明这个参数不应该有默认值,必须显式提供。

42-2-4、values(可选)指定哪些列的值应该被填充到新DataFrame的单元格中,如果未指定,则所有剩余列的值都会被填充进去,但这样可能会导致结果DataFrame的列具有多层索引(MultiIndex),因为每个剩余列都会成为一层。

42-3、功能

        似于Excel中的数据透视表功能,它允许用户根据指定的行索引(index)和列索引(columns)来重塑DataFrame,并将选定的值(values)填充到新的DataFrame中。

42-4、返回值

        返回一个新的DataFrame对象,该对象根据指定的行索引、列索引和值进行了重塑。返回的DataFrame的行由index参数指定的列的值确定,列由columns参数指定的列的值确定,而单元格的值则由values参数指定的列的值填充。

42-5、说明

42-5-1、如果在指定的index和columns下存在重复的values,pivot函数将抛出错误,因为它无法确定如何将这些重复的值分配到新的DataFrame中。

42-5-2、pivot函数不支持直接的数据聚合运算,但它可以通过重新排列数据来为后续的聚合运算(如使用groupby和agg函数)提供便利。

42-5-3、在使用pivot函数时,必须确保index和columns参数指定的列中的值能够唯一地确定每个单元格的位置,否则将无法生成有效的DataFrame。

42-6、用法
42-6-1、数据准备
42-6-2、代码示例
# 42、pandas.pivot函数
import pandas as pd
# 创建一个包含销售数据的字典
data = {
    'year': [2023, 2023, 2024, 2024],
    'product': ['A', 'B', 'A', 'B'],
    'sales': [100, 200, 150, 250]
}
# 将字典转换为DataFrame
df = pd.DataFrame(data)
print(df, end='\n\n')

# 使用pivot重塑DataFrame
# 指定'year'为行索引,'product'为列索引,'sales'为要填充的值
pivoted = pd.pivot(df, index='year', columns='product', values='sales')
# 打印重塑后的DataFrame
print(pivoted)
42-6-3、结果输出 
# 42、pandas.pivot函数
#    year product  sales
# 0  2023       A    100
# 1  2023       B    200
# 2  2024       A    150
# 3  2024       B    250

# product    A    B
# year             
# 2023     100  200
# 2024     150  250
43、pandas.pivot_table函数
43-1、语法
# 43、pandas.pivot_table函数
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=_NoDefault.no_default, sort=True)
Create a spreadsheet-style pivot table as a DataFrame.

The levels in the pivot table will be stored in MultiIndex objects (hierarchical indexes) on the index and columns of the result DataFrame.

Parameters:
dataDataFrame
valueslist-like or scalar, optional
Column or columns to aggregate.

indexcolumn, Grouper, array, or list of the previous
Keys to group by on the pivot table index. If a list is passed, it can contain any of the other types (except list). If an array is passed, it must be the same length as the data and will be used in the same manner as column values.

columnscolumn, Grouper, array, or list of the previous
Keys to group by on the pivot table column. If a list is passed, it can contain any of the other types (except list). If an array is passed, it must be the same length as the data and will be used in the same manner as column values.

aggfuncfunction, list of functions, dict, default “mean”
If a list of functions is passed, the resulting pivot table will have hierarchical columns whose top level are the function names (inferred from the function objects themselves). If a dict is passed, the key is column to aggregate and the value is function or list of functions. If margin=True, aggfunc will be used to calculate the partial aggregates.

fill_valuescalar, default None
Value to replace missing values with (in the resulting pivot table, after aggregation).

marginsbool, default False
If margins=True, special All columns and rows will be added with partial group aggregates across the categories on the rows and columns.

dropnabool, default True
Do not include columns whose entries are all NaN. If True, rows with a NaN value in any column will be omitted before computing margins.

margins_namestr, default ‘All’
Name of the row / column that will contain the totals when margins is True.

observedbool, default False
This only applies if any of the groupers are Categoricals. If True: only show observed values for categorical groupers. If False: show all values for categorical groupers.

Deprecated since version 2.2.0: The default value of False is deprecated and will change to True in a future version of pandas.

sortbool, default True
Specifies if the result should be sorted.

New in version 1.3.0.

Returns:
DataFrame
An Excel style pivot table.
43-2、参数

43-2-1、data(必须)必须是DataFrame类型,表示你要从中创建透视表的数据。

43-2-2、values(可选,默认值为None)指定需要聚合的列,默认情况下,所有数值列都将被聚合,如果你只关心某个或某些列,可以在这里指定它们。

43-2-3、index(可选,默认值为None)用于分组的列名列表或列名,结果DataFrame将使用这些列的值作为行索引。

43-2-4、columns(可选,默认值为None)用于分组的另一个列名列表或列名,如果指定了此参数,则这些列的值将用作结果DataFrame的列标题。

43-2-5、aggfunc(可选,默认值为'mean')一个函数或函数列表,用于聚合数据,默认是'mean',即计算平均值。你可以使用如sum、max、min、std(标准差)、first、last等内置函数,或者自定义函数。

43-2-6、fill_value(可选,默认值为None)用于替换结果DataFrame中缺失值的值,默认为None,即不填充缺失值。

43-2-7、margins(可选,默认值为False)布尔值,默认为False,如果为True,则会在结果DataFrame的末尾添加一个全行/全列,包含所有值的聚合(基于aggfunc)。

43-2-8、dropna(可选,默认值为True)布尔值,如果为False,则不会从结果中删除包含缺失值的行。注意,如果index或columns中包含缺失值,并且dropna=True,则这些缺失值会被忽略(即不会出现在结果DataFrame的索引或列标题中)。

43-2-9、margins_name(可选,默认值为'All')字符串,当margins=True时,用于命名全行/全列的标签。

43-2-10、observed(可选)pandas 1.1.0版本中引入的参数,用于控制如何处理未在数据中观察到的组合。如果为True(默认值在1.1.0之前的版本中是None,但在1.1.0及更高版本中变为True),则只包括在数据集中实际观察到的组合;如果为False,则会包括所有可能的组合,即使某些组合在数据中没有出现。

43-2-11、sort(可选,默认值为True)布尔值,如果为True,则结果DataFrame的行和列(如果指定了多个列作为索引/列)将按字典顺序排序;如果为False,则不进行排序。

43-3、功能

       根据一个或多个键(通常是DataFrame中的列)对数据进行分组,并对每个分组应用聚合函数,以创建一个新的DataFrame,这个新的DataFrame以不同的方式组织和汇总了原始数据,便于进行更深入的数据分析和可视化。

43-4、返回值

        返回值是一个新的DataFrame,它根据提供的参数对原始数据进行了重塑和汇总。这个新的DataFrame的行索引由index参数决定,列标题(如果指定了columns参数)也由该参数决定,而单元格中的值则是根据aggfunc参数指定的聚合函数计算得到的。

43-5、说明

        如果margins设置为True,则返回的DataFrame还会包含一个额外的全行或全列(取决于margins_name参数的值,默认为'All'),该行/列包含了所有行的聚合统计量。

43-6、用法
43-6-1、数据准备
43-6-2、代码示例
# 43、pandas.pivot_table函数
import pandas as pd
import numpy as np
# 创建一个示例数据集
data = {
    'Date': pd.date_range('2023-01-01', periods=6, freq='D'),
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'New York', 'Los Angeles'],
    'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Values': [100, 200, 150, 250, np.nan, 300]
}
df = pd.DataFrame(data)
print("原始数据集:")
print(df)
# 使用pivot_table重塑DataFrame
pivot_table = pd.pivot_table(
    data=df,
    values='Values',
    index=['Date', 'City'],
    columns='Category',
    aggfunc='mean',
    fill_value=0,
    margins=True,
    margins_name='All',
    dropna=True,
    sort=True
)
print("\npivot_table结果:")
print(pivot_table)
43-6-3、结果输出
# 43、pandas.pivot_table函数
# 原始数据集:
#         Date         City Category  Values
# 0 2023-01-01     New York        A   100.0
# 1 2023-01-02  Los Angeles        A   200.0
# 2 2023-01-03     New York        B   150.0
# 3 2023-01-04  Los Angeles        B   250.0
# 4 2023-01-05     New York        A     NaN
# 5 2023-01-06  Los Angeles        B   300.0

# pivot_table结果:
# Category                             A           B    All
# Date                City
# 2023-01-01 00:00:00 New York     100.0    0.000000  100.0
# 2023-01-02 00:00:00 Los Angeles  200.0    0.000000  200.0
# 2023-01-03 00:00:00 New York       0.0  150.000000  150.0
# 2023-01-04 00:00:00 Los Angeles    0.0  250.000000  250.0
# 2023-01-06 00:00:00 Los Angeles    0.0  300.000000  300.0
# All                              150.0  233.333333  200.0

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/794333.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新旧电脑数据转移方法

随着科技的发展和电脑性能的不断提升,许多用户在工作和生活中都需要更换新电脑。当我们购买了一台新电脑后,如何将旧电脑中的数据转移到新电脑上成许多用户关注的问题。本文将详细介绍几种有效的电脑数据转移方法,帮助大家顺利完成数据迁移。…

5G AGV 安全演示:解决新欧盟机器指令挑战

2024 年 2 月 26 日至 2 月 29 日,2024 世界移动通信大会(MWC2024)在西班牙巴塞罗那召开。 这场以「未来先行」为主题的大会,吸引了大量通信领域企业和观众参加,现场盛况空前。 HMS Labs 在与易福门(ifm&am…

07_Shell内置命令-declare

07_Shell内置命令-declare 一、设置变量属性 - 增加属性 取消属性 1.1、设置变量为整形变量 declare -i 变量名 #!/bin/bashage"abc" #设置变量为整形变量,这时候age如果不是整形,则置为0 declare -i age echo $age#并且设置非整形值无效, 只…

不会写提示词的,快下载这个“老六”插件(附插件)

在AI绘画的世界里,每一个细节都至关重要,面对复杂的提示词——SixGod_k插件,只需轻点即可获得提示词,sd-webui中文提示词插件、老手新手炼丹必备。 一、SixGod_k提示词的功能亮点 SixGod_k提示词不仅解决了提示词编写的难题&…

MybatisPlus 核心功能

MybatisPlus 核心功能 文章目录 MybatisPlus 核心功能1. 条件构造器1.1 QueryWrapper1.2 LambdaQueryWrapper(推荐)1.3 UpdateWrapper1.4 LambdaUpdateWrapper 2. 自定义SQL3. Service接口 1. 条件构造器 当涉及到查询或修改语句时,MybatisP…

8、matlab彩色图和灰度图的二值化算法汇总

1、彩色图和灰度图的二值化算法汇总原理及流程 彩色图和灰度图的二值化算法的原理都是将图像中的像素值转化为二值(0或1),以便对图像进行简化或者特定的图像处理操作。下面分别介绍彩色图和灰度图的二值化算法的原理及流程: 1&a…

怎么录制网页上的视频?这篇文章告诉你

在数字化时代,网页视频已成为我们获取信息、学习知识和娱乐放松的重要途径。然而,有时我们可能想要保存或分享网页上的视频内容,却苦于没有合适的工具和方法。那么怎么录制网页上的视频呢?本文将详细介绍两种常见的网页视频录制方…

【基础算法总结】链表

链表 1.链表常用技巧和操作总结2.两数相加4.两两交换链表中的节点4.重排链表5.合并 K 个升序链表6.K 个一组翻转链表 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!&…

一个开源完全免费的无损视频或音频的剪切/裁剪/分割/截取和视频合并工具

大家好,今天给大家分享一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具LosslessCut。 LosslessCut是一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具,专为实现对视频、音频、字幕以及其他相关媒体资产的超高速无损编辑而精心打造。…

LabVIEW电子水泵性能测试平台

开发了一种车用电子水泵性能测试平台,该平台以工控机为载体,利用LabVIEW开发上位机软件,采用PLC控制阀门和水泵等电气元件,通过RS485进行数据采集并传输到上位机。通过上位机与下位机的协同控制,实现了数据交互处理和性…

备考美国数学竞赛AMC8和AMC10:吃透1850道真题和知识点

距离接下来的AMC8、AMC10美国数学竞赛还有几个月的时间,实践证明,做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,…

c语言题目之喝汽水问题

文章目录 一、题目二、思路三、代码实现3.1方法一3.1方法二 一、题目 提示:以下是本篇文章正文内容,下面案例可供参考 二、思路 20元首先可以喝20瓶,此时手中有20个空瓶子两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余&…

跳水板00

题目链接 跳水板 题目描述 注意点 返回的长度需要从小到大排列必须正好使用k块木板0 < shorter < longer0 < k < 100000 解答思路 用k块两种不同的木板&#xff0c;组合数为k 1&#xff0c;最小的组合为全部使用shorter&#xff0c;每多一块longer&#xff0…

前端一面之 同步 vs 异步

异步 vs 同步 先看一下 下面的 demo console.log(100) setTimeout(function () {console.log(200) }, 1000) console.log(300) 执行结果 100 300 200console.log(100) alert(200) // 1秒钟之后点击确认 console.log(300) 这俩到底有何区别&#xff1f;—— 第一个示例中间的…

再度领跑的极兔速递不存在估值缺口?

随着618的尘埃落地&#xff0c;线上零售的最强辅助们也将陆续公布最新业务量数据了。 整体上&#xff0c;上半年国内快递业的需求量维持稳增势。据国家邮政局监测数据&#xff0c;截至6月30日&#xff0c;今年上半年我国快递业务量突破800亿件&#xff0c;比2023年提前59天。其…

echarts解决数据差异过大的问题

问题描述 使用echarts折线图和柱状图展示数据时&#xff0c;如果数据差异值较大&#xff0c;会导致显示图形差异过大&#xff0c;图表不美观。 如这一组数据[2000000, 200, 0.1, 20, 0, -10, -3000]&#xff0c;渲染出来的效果如下图&#xff1a; 可以看到由于最大值和最小值差…

netscaler LDAP+RADIUS传统的双因素认证方式(之一)

如果使用传统的双因素认证方式&#xff0c;可以通过在Citrix ADC (NetScaler) 13.1上配置Gateway Virtual Server来实现LDAP和RADIUS的双因素认证。当前配置方式&#xff0c;采用Cateway vServer两个Basic Authtication Policy方式实现&#xff0c;以下是详细步骤&#xff1a; …

【Python】使用PyQt6创建简单的登录界面

使用PyQt6创建简单的登录界面 介绍 PyQt6是Python绑定的Qt库&#xff0c;可以用来开发跨平台的桌面应用程序。本教程将介绍如何使用PyQt6创建一个简单的登录界面&#xff0c;包括用户名和密码输入框以及登录按钮。当用户点击登录按钮时&#xff0c;程序会验证输入的凭据并显示…

Matplotlib入门

#折线图用来表示数据的变化 plt.plot(x,y) #直方图用来统计连续性数据 无间隔 plt.hist(data数组,组数) #条形图用来统计离散的数组 并且反映其变化 有间隔 plt.bar(x,y,width 0.3) plt.barh(y,x,height 0.3) #散点图用来xy轴之间的联系 趋势 plt.scatter(x,y) #导入p…

Python大数据分析——K近邻模型(KNN)

Python大数据分析——K近邻模型 数学部分模型思想模型步骤距离度量指标欧氏距离曼哈顿距离余弦相似度 K值选择 代码部分函数示例1——知识掌握程度示例2——预测发电量 数学部分 模型思想 如图所示&#xff0c;模型的本质就是寻找k个最近样本&#xff0c;然后基于最近样本做“…