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.rhkb.cn/news/375175.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

休息时间c++

题目描述 小杨计划在某个时刻开始学习,并决定在学习k秒后开始休息。 小杨想知道自己开始休息的时刻是多少。 输入 前三行每行包含一个整数,分别表示小杨开始学习时刻的时h、分m、秒s(h,m,s的值符合1≤h≤12,0≤m≤59,0≤s≤59)…

SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目

1,如何打包一个项目 通过IDEA自带的命令行,执行 ./gradlew clean build 2,检查生成的JAR文件 进入 build/libs 目录,你应该会看到一个类似 helloredis-0.0.1-SNAPSHOT.jar 的文件。 3:运行生成的JAR文件 你可以在…

JupyterNotebook中导出当前环境,并存储为requirements.txt

​使用Anaconda管理Python环境时,可以轻松地导出环境配置,以便在其他机器或环境中重新创建相同的环境。可以通过生成一个environment.yml文件实现的,该文件包含了环境中安装的所有包及其版本。但是,常常在一些课程中JupyterNotebo…

韦东山嵌入式linux系列-LED驱动程序

之前学习STM32F103C8T6的时候,学习过对应GPIO的输出: 操作STM32的GPIO需要3个步骤: 使用RCC开启GPIO的时钟、使用GPIO_Init函数初始化GPIO、使用输入/输出函数控制GPIO口。 【STM32】GPIO输出-CSDN博客 这里再看看STM32MP157的GPIO引脚使用…

逻辑回归中的损失函数

目录 一、损失函数介绍:二、简化上述损失函数: 一、损失函数介绍: 与回归问题成本函数不同的是,逻辑回归模型(解决分类问题)的成本函数在获得损失J的时候不再用真实值y与预测值y^的差值计算损失&#xff0…

Python面试宝典第11题:最长连续序列

题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:…

STM32智能电网监控系统教程

目录 引言环境准备智能电网监控系统基础代码实现:实现智能电网监控系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:电网监控与优化问题解决方案与优化收尾与总结 1. 引言 智能电网监控系统通过S…

学习网络的第一步:全面解析OSI与TCP/IP模型

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello,大家好!我是你们的好朋友小米。今天我们来聊一聊网络基础知识中的重量级选手——OSI模型和TCP/IP模型!网络的世界就像一个巨大的迷宫,而这两个…

肯尼亚PVoC认证

一、肯尼亚PVoC认证介绍 为了向肯尼亚消费者保证,他们购买的进口商品的安全和质量,并保护肯尼亚制造商免受不公平竞争,肯尼亚标准局(KEBS)是肯尼亚政府的一个法定机构,实施了“出口肯尼亚出口验证&#xff…

【源码开源】C#桌面应用开发:串口调试助手

c#桌面应用开发 1、环境搭建和工程创建:参照番茄定时器项目 工程创建参照 2、界面布局设计 3、具体功能函数 (1)端口扫描: private void btn_com_scan_Click(object sender, EventArgs e){//端口号扫描ReflashPortToComboBox(…

赤壁之战的烽火台 - 观察者模式

“当烽火连三月,家书抵万金;设计模式得其法,千军如一心。” 在波澜壮阔的三国历史长河中,赤壁之战无疑是一场改变乾坤的重要战役。而在这场战役中,一个看似简单却至关重要的系统发挥了巨大作用——烽火台。这个古老的…

基于ssm的图书管理系统的设计与实现

摘 要 在当今信息技术日新月异的时代背景下,图书管理领域正经历着深刻的变革,传统的管理模式已难以适应现代社会的快节奏和高要求,逐渐向数字化、智能化的方向演进。本论文聚焦于这一转变趋势,致力于设计并成功实现一个基于 SSM&…

在HTTP协议中常见的Token类型

在HTTP协议中&#xff0c;常见的Token类型主要有以下几种&#xff1a; Bearer Token&#xff1a;最常见的类型&#xff0c;用于OAuth 2.0认证&#xff0c;通过Authorization头传递&#xff0c;格式为Bearer <token>。更多请阅读&#xff1a;JWK和JWT 学习-CSDN博客 Basi…

【数据结构】09.树与二叉树

一、树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 根结点&#xff1a;根…

应变与几何方程——弹性力学

变形协调方程 正应变的表达式&#xff1a;切应变的表达&#xff1a; 考虑坐标位移移动造成的增量 应变——考虑物体的变形的剧烈程度 正应变——微元线段长度的变化 剪应变——两微元所夹角度的变化 正应变——拉伸为正&#xff0c;压缩为负 剪应变——夹角减小为正&#x…

删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 快慢指针&#xff0c;慢的指针去追赶快的指针&#xff0c;相等时也就是追到时&#xff0c;快指针移动向前 class Solution { public:int removeDuplicates(vector<int>& nums) {int s 1, q 1;i…

sql盲注

文章目录 布尔盲注时间盲注 布尔盲注 介绍&#xff1a;在网页只给你两种回显的时候是用&#xff0c;类似于布尔类型的数据&#xff0c;1表示正确&#xff0c;0表示错误。 特点&#xff1a;思路简单&#xff0c;步骤繁琐且麻烦。 核心函数&#xff1a; length()函数substr()函…

物流智能锁在物流货运智能锁控管理中的应用

一、物流锁控管理的痛点剖析 &#xff08;一&#xff09;货物安全风险高 在传统的物流运输中&#xff0c;常用的机械锁和普通电子锁安全性有限&#xff0c;容易被非法破解或撬开。据不完全统计&#xff0c;每年因货物被盗造成的经济损失高达数十亿。这导致货物在运输途中面临…

前端Canvas入门——怎么用Canvas画一些简单的图案

Canvas作为前端的画图工具&#xff0c;其实用途还是蛮广泛的&#xff0c;但是很多前端学习课程其实都很少涉及到这块内容。 于是乎&#xff0c;就写下这个了。 当然啦&#xff0c;目前还在学习摸索中。 一些实战代码&#xff0c;仅供参考&#xff1a; <canvasid"ctx&…

旅游景区度假村展示型网站如何建设渠道品牌

景区、度假村、境外旅游几乎每天的人流量都非常高&#xff0c;还包括本地附近游等&#xff0c;对景区及度假村等固定高流量场所&#xff0c;品牌和客户赋能都是需要完善的&#xff0c;尤其是信息展示方面&#xff0c;旅游客户了解前往及查看信息等。 通过雨科平台建设景区度假…