Python
文章平均质量分 84
金戈鐡馬
这个作者很懒,什么都没留下…
展开
-
Pandas实战:电商平台用户分析
首先,我们要对用户的行为类型有一定的理解,了解每个行为所代表的含义。浏览:作为用户与商品接触的第一个行为,它的数量级与其他行为类型相比而言是非常庞大的,因为:用户购买之前需要货比三家,可能会浏览很多个商品最后只下单一个,此时就是多个浏览对应一个下单。但大部分用户可能只是浏览了很多商品,但最终没下单的,此时就是多个浏览对应零个下单。加购物车:代表用户对商品的购买意向进一步加强,但由于某种原因还在犹豫没最终决定,这个环节的成单率极高。下单:代表交易达成,此时新用户已成为老用户,老用户继续产生价值。原创 2023-12-04 00:23:40 · 353 阅读 · 0 评论 -
Pandas进阶:拼接 concat 使用方法
那有些情况,我想保留原来的索引,并且我还想验证合并后的结果是否有重复的索引,该怎么办呢?虽然,它会自动将两个df的列对齐合并。默认情况下,它是沿axis=0垂直连接的,并且默认情况下会保留df1和df2原来的索引。在每次for循环迭代中都会被调用一次,效率不高,推荐使用列表推导式的写法。添加层次结构索引非常的有用,可以进行更多层的数据分析。为时,如果存在重复的索引,将会报错。的索引,而是想为两个数据集贴上标签。如果想要合并后忽略原来的索引,可以通过设置参数。,这样索引就可以从0到n-1自动排序了。原创 2023-12-04 00:22:37 · 1220 阅读 · 0 评论 -
Pandas进阶:分类数据处理
分类数据表达数值具有某种属性、类型和特征,也是我们理解的定类数据。比如,人口按性别分为男和女,按年龄分为老、中、少。在计算机语言里,我们通常会用数字来表示,比如用1代表男,0代表女,但是0和1之间并没有大小关系,pandas中用category来表示分类数据。创建分类数据s------0 a1 b2 c自动创建分类数据在某些操作情况下会自动转变为分类类型,比如用cut进行分箱操作返回的分箱就是分类类型。分类数据类型转换直接用astypes------0 a1 b2 c------原创 2023-12-02 00:12:25 · 264 阅读 · 0 评论 -
Pandas进阶:文本处理
下面正式介绍文本的各种骚操作,基本可以涵盖日常95%的数据清洗需要了,一共 8 个场景。参数很简单,直接输入要查询的字符串即可,返回在原字符串中的位置,没查询到结果返回。通过切片的方式实现替换,通过切片可以保留或者删除指定的字符,参数如下。上面示例返回正则查找的两个部分,并以元组列表的形式出现。来实现的,功能十分强大,但使用前需要注意以下几点。参数时,该方法会将当前序列合并为一个新的字符串。:为被替代的内容字符串,也可以为正则表达式。参数可以让拆分的内容展开,形成单独的列,原创 2023-12-02 00:04:55 · 355 阅读 · 0 评论 -
Pandas进阶:transform 数据转换的常用技巧
也可以用来过滤数据。仍用上个例子,我们希望获得城市总销售额超过40的记录,那么就可以这样使用。分为三组A、B、C,每组都有缺失值。我们知道替换缺失值的常见的方法是用。可以是我们正常使用的普通函数,像下面例子这样自定义一个函数。我们可以看到,每个城市都有多家销售餐厅。,相信很多朋友也用过,这里再次进行详细分享下。还可以是轴标签映射指定函数的字典。这样就可以一步到位,得到我们想要的格式。是指定用于处理数据的函数,它可以是。然后,再计算百分比调整格式,搞定。函数简洁的实现,效果是一样的。还可以是一个函数的列表。原创 2023-12-01 00:27:14 · 951 阅读 · 0 评论 -
Matplotlib数据可视化(3)— 文本与轴
在一幅图表中,文本、坐标轴和图像的是信息传递的核心,对着三者的设置是作图这最为关心的内容,在上一篇博客中虽然列举了一些设置方法,但没有进行深入介绍,本文以围绕如何对文本和坐标轴进行设置展开(对图像的设置在后续介绍到各种图绘制时介绍)。这里所说的文本是指在使用matplotlib作图过程中通过代码的方式往图中添加的各种文字,包括figure标题、axes标题、坐标轴标签、坐标轴刻度标签、注释、普通文本等。轴设置指的是对与坐标轴相关的的元素的设置,例如显示范围、刻度、刻度标签等。原创 2023-03-25 22:51:37 · 712 阅读 · 0 评论 -
Matplotlib数据可视化(5)— 柱状图与直方图
柱状图和直方图是两种非常类似的统计图,区别在于:直方图展示数据的分布,柱状图比较数据的大小。直方图X轴为定量数据,柱状图X轴为分类数据。因此,直方图上的每个条形都是不可移动的,X轴上的区间是连续的、固定的。而柱状图上的每个条形是可以随意排序的,有的情况下需要按照分类数据的名称排列,有的则需要按照数值的大小排列。直方图柱子无间隔,柱状图条形有间隔直方图条形宽度可不一,柱状图条形宽度须一致。柱状图条形的宽度因为没有数值含义,所以宽度必须一致。原创 2023-03-25 22:54:34 · 1131 阅读 · 0 评论 -
Pandas进阶:20个实用的Pandas函数的基本使用
因为它们可以进行更细化的操作,比如筛选某个时点,或者某个范围时间等,可以细化到小时分钟。也可以像excel一样,设置表格的可视化条件格式,而且只需要一行代码即可(可能需要一丢丢的前端HTML和CSS基础知识)。是使用很频繁的函数,它默认是不统计空值的,但空值往往也是我们很关心的。比如,我们在做数据清洗的时候,往往代码会很乱,有去重、去异常值、编码转换等等。的功能,但应用在列上的应该不多见。等等,但其实还有个及其简洁的方法,专门筛选数值范围的,就是。进行批量的转换,它会自动推断数据原来的类型,并实现转换。原创 2023-11-30 00:10:13 · 351 阅读 · 0 评论 -
数据挖掘之时间序列分析
对尚未发生或目前还不明确的事物进行预先的估计和推测,是在现时对事物将要发生的结果进行探讨和研究,简单的说就是指从已知事件预测未知事件。加权移动平均,在基于简单移动平均的基础上,对时间序列上前n期的每一期数值赋予相应的权重,即加权平均的结果。时间序列是指同一统计指标的数值按其发生的时间先后顺序排列而成的数列(是均匀时间间隔上的观测值序列)。不规则变动 I:是一种无规律可循的变动,包括严格的随机变动和不规则的突发性影响很大的变动两种类型。季节变动 S:现象在一年内随着季节的变化而发生的有规律的周期性变动。原创 2023-11-30 00:09:11 · 1097 阅读 · 0 评论 -
高级数据分析方法与模型
数据思维练习不仅要熟练地掌握了分析工具,还要掌握大量的数据分析方法和模型。这样得出的结论不仅具备条理性和逻辑性,而且还更具备结构化和体系化,并保证分析结果的有效性和准确性。一、战略与组织1、SWOT分析主要应用于商业和管理领域,通过内部环境:机会与威胁,外部环境:优势与劣势两个维度,将企业的战略与之结合起来的一种分析方法。最终依照矩阵形式排列,得出SO战略(增长型战略)、WO战略(扭转型战略)、ST战略(多种经营战略)、WT战略(防御型战略)这4种决策战略。2、PEST分析。原创 2023-11-13 16:34:16 · 245 阅读 · 0 评论 -
Python中68个内置函数的使用与归类
在Python解释器中内置的、可以直接使用的函数。这些函数不需要额外的导入或安装,可以直接在Python代码中调用。Python内置函数包括了很多常用的功能,比如对数据类型的操作、数学运算、字符串处理、文件操作等。一些常见的内置函数包括print()、len()、input()、range()、open()等。这些内置函数为Python程序员提供了方便快捷的方法来完成各种任务。和数字相关1. 数据类型bool : 布尔型(True,False)int : 整型(整数)float : 浮点型(小数)原创 2023-11-12 12:00:13 · 340 阅读 · 0 评论 -
Pandas 2.0 主要优势以及代码实现
官方发布pandas 2.0.0后,曾在数据科学社区内掀起了轩然大波。由于其广泛的功能性和多功能性,如果没有 importpandas as pd,几乎不可能做到数据操纵,对吧?现在,请听我说:在过去的几个月里,随着大语言模型的火爆,我不知怎么地漏掉了pandas刚刚经历了一次重大发布的事实!原创 2023-11-10 01:57:25 · 195 阅读 · 0 评论 -
20个实用Python自动化脚本技巧
Python是一种流行的编程语言,以其简单性和可读性而著称。它提供了大量的库和模块,使其成为自动化各种任务的绝佳选择。让我们深入探索自动化的世界,发现20个Python脚本,这些脚本可以简化你的工作,为你节省时间和精力。原创 2023-11-08 15:10:19 · 3429 阅读 · 0 评论 -
自定义Python装饰器
装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的功能或功能。装饰器的语法使用符号,将装饰器应用于目标函数或类。下面我们将介绍10个非常简单但是却很有用的自定义装饰器。装饰器是Python中一个非常强大和常用的特性,它可以用于许多不同的情况,例如缓存、日志记录、权限控制等。原创 2023-10-08 00:30:00 · 229 阅读 · 0 评论 -
Pandas 高级操作使用技巧总结
在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。复杂查询实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。1、逻辑运算# Q1成绩大于36df.Q1> 36# Q1成绩不小于60分,并且是C组成员2、逻辑筛选数据。原创 2023-06-23 22:01:49 · 480 阅读 · 0 评论 -
Python处理办公自动化的10大场景
在编程世界里,Python已经是名副其实的网红了。Python最大优势在于容易学,门槛比Java、C++低非常多,给非程序员群体提供了用代码干活的可能性。当然Python能成为大众编程工具,不紧是因为易学,还因为Python有成千上万的工具包,遍布各行各业。举10几个办公自动化常见的例子,Python都能高效处理。原创 2023-06-13 00:00:00 · 768 阅读 · 0 评论 -
5个实用的自动化Python脚本
Python 是一种功能强大的语言,广泛用于自动执行各种任务。无论您是开发人员、系统管理员,还是只是想通过自动化日常任务来节省时间的人,Python 都能满足您的需求。这里有 5 个 Python 脚本,可以帮助您自动执行各种任务。原创 2023-06-12 00:00:00 · 5018 阅读 · 1 评论 -
Scrapy爬取数据,使用Django+PyEcharts实现可视化大屏
使用Scrapy进行数据爬取,MySQL存储数据,Django写后端服务,PyEcharts实现可视化大屏图表。原创 2023-06-11 00:00:00 · 2712 阅读 · 0 评论 -
pyttsx3文本到语音转换库的基本使用
pyttsx3 是 Python 中的文本到语音转换库。与其他库不同,它可以离线工作,并且与 Python 2 和 3 兼容。pyttsx3安装需要win32库持,否则会报"No module named win32com.client"或者"No module named win32"或者"No module named win32api"等错误。这时你只需要在安装pyttsx3前,pip install pypiwind32这个库即可。原创 2023-04-13 00:15:00 · 880 阅读 · 0 评论 -
使用Matplotlib绘制南丁格尔玫瑰图
在前文中,我们介绍了使用pyecharts南丁格尔玫瑰图,本章我们再学习一下使用matplotlib绘制南丁格尔玫瑰图,了解在极坐标系中绘制柱状图。并对比一下两种不同的绘制方法,如何实现?玫瑰图是弗罗伦斯·南丁格尔所发明的。又名为极坐标面积图,是一种圆形的直方图。 南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),适用于绘制比较、随时间变化的循环现象。和传统的饼图展示形式单一相比,南丁格尔玫瑰图更加绚丽,给人的感觉更直观、深刻,因此,南丁格尔玫瑰图在数据可视化领域的应用十分广泛。原创 2023-04-04 00:15:00 · 1431 阅读 · 2 评论 -
Pandas数据分析实战 — 同期群分析
而在纵向上,可以看到不同群组在N月后的留存率,可以比较各个群组用户的粘性。而10月份应该是做了促销活动,用户新增2.5倍,但次月留存率低了7%,往后月份的留存率低了3%,说明用户质量不行,促销只是为了短时间冲量,并没有考虑后期的留存。同期群分析,给到更加细致的衡量指标,帮助我们实时监控真实的用户行为、衡量用户价值,并为营销方案的优化和改进提供支撑,避免出现“被平均”的虚荣数据。思路总结:通过左外连接计算时间差值(与首次支付的时间差值、与首次登录的时间差值)中间表的产生,计算留存量,再计算留存率。原创 2023-03-26 00:51:32 · 302 阅读 · 0 评论 -
Pandas数据分析实战 — 复购率指标计算
复购率变高,也就是用户多消费。想让用户多消费,莫非就是自身产品实力过硬,或者产品不咋滴,但是套路足,让用户觉得自己产品“性价比”高,值得再次购买。原创 2023-03-29 00:00:00 · 567 阅读 · 0 评论 -
Pandas数据分析实战 — 用户消费行为分析
CD商品订单数据的分析总结。根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为。通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息。对其他产品的线上消费数据分析有一定的借鉴价值,能达到举一反三的效果。一、案例背景CDNOW是一家美国在线零售商,主营商品为CD唱片,ToC业务。1998年上市,2000年被贝塔斯曼收购。原创 2023-03-28 00:15:00 · 751 阅读 · 0 评论 -
Matplotlib数据可视化(7)— 图片展示与保存
当我们使用matplotlib完成作图后,难免有需要将图表保存到本地的需求,这时候就可以使用savefig()方法实现。在使用imshow()展示图片前,需要先将图片读取出来。除了作图功能,matplotlib也提供本地图片展示以及保存图片的功能,这两个通能通过imshow()方法和savefig()方法实现。transparent:是否透明,当没有设置前景色和边框颜色时,如果transparent值为True保存为png格式时为透明。facecolor:前景色。fname:保存后图片名。原创 2023-03-25 22:55:11 · 2075 阅读 · 0 评论 -
Matplotlib数据可视化(6)— 饼图与箱线图
pie()方法返回一个tuple,第一个元素为每个扇形对象组成的list,第二个元素为每个扇形的标签Text对象,第三个元素为每个扇形的数值标签对象,通过这三个对象,可以实现对单一扇形的设置。boxplot()方法返回值是一个dict,键值包括'whiskers'、'caps'、'boxes'、'fliers'、'means',分别表示须线、顶端末端线段、箱体、异常数据、均值等绘图对象分别组成的列表,通过这些对象可以横放把您的实现箱线图各个部分的自定义设置。原创 2023-03-25 22:52:37 · 901 阅读 · 0 评论 -
Matplotlib数据可视化(4)— 折线图与散点图
对于折线图的绘制,在之前博客的示例中都有使用,在面向对象绘图方法中,一般是创建axes实例后调用plot()方法实现折线图绘制,并通过传递各种参数实现对图像的设置。散点图的绘制通过axes实例的scatter()方法来实现。scatter()方法的参数和参数取值与绘制折线图的plot()方法基本一致,所以本文将两种图放在一起进行介绍。mpl.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体支持1、多图像绘制。原创 2023-03-25 22:52:04 · 1150 阅读 · 0 评论 -
Matplotlib数据可视化(2)— 三大容器对象与常用设置
上一篇博客中说到,matplotlib中所有画图元素(artist)分为两类:基本型和容器型。容器型元素包括三种:figure、axes、axis。一次画图的必经流程就是先创建好figure实例,接着由figure去创建一个或者多个axes,然后通过axes实例调用各种方法来添加各种基本型元素,最后通过axes实例本身的各种方法亦或者通过axes获取axis实例实现对各种元素的细节操控。本篇博客继续上一节的内容,展开介绍三大容器元素创建即通过三大容器可以完成的常用设置。1、figure。原创 2023-03-25 22:53:26 · 1614 阅读 · 0 评论 -
Matplotlib数据可视化(1)— 入门介绍
本文强烈建议(官方文档中也提出了),如果只是简单得对数据进行展示,那么当然可以使用pyplot完成,但是如果需要更加精细的对图片进行设置,那么建议使用pyplot中的方法来创建matplotlib图形的容器对象,因为pyplot创建容器对象可以方便得纳入matplotlib序列中进行管理,有了容器对象之后,后续的画图,请勿通过再pyplot进行,最好是通过容器对象进行操作。图2中,蓝色部分文本是各组件的名称,请牢记各组件的名称,方便在对各组件进行设置是调用函数,因为组件的名称与函数名是相似的。原创 2023-03-25 22:53:04 · 659 阅读 · 0 评论 -
数据分析之jieba分词使用详解
在所有人类语言中,一句话、一段文本、一篇文章都是有一个个的词组成的。词是包含独立意义的最小文本单元,将长文本拆分成单个独立的词汇的过程叫做分词。分词之后,文本原本的语义将被拆分到在更加精细化的各个独立词汇中,词汇的结构比长文本简单,对于计算机而言,更容易理解和分析,所以,分词往往是自然语言处理的第一步。 对于英文文本,句子中的词汇可以通过空格很容易得进行划分,但是在我们中文中则不然,没有明显的划分标志,所以需要通过专门的方法(算法)进行分词。在Python中,有多种库实现了各种方法支持中文分原创 2023-03-27 00:30:00 · 9795 阅读 · 0 评论 -
Pandas数据选取中df[]、df.loc[]、df.iloc[]、df.at[]、df.iat[]的区别及用法
Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。 Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据选取的方式基本一致,本文主要以Dataframe为例进行介绍。 在Dataframe中选取数据大抵包括3中情况: 1)行(列)选取(单维度选取):df[]。这种情况一次只能选取行或者列,即一次选取中,只能为行或者列设置筛选条件原创 2023-03-26 00:15:00 · 9495 阅读 · 1 评论 -
Pandas中的reset_index、reindex和reindex_like的区别及基本使用
reindex_like()是用另一个DataFrame的索引来更新当前DataFrame的索引,如果是原数据中不存在的索引值,则默认填充空值NaN,也可以使用method参数设置向前填充还是向后填充。以上就是pandas中reset_index(), reindex()和reindex_like()的用法介绍,本文可以帮助你分清它们的用法区别。最基本的用法,将重新排序的索引传给labels参数,上面的例子中将['A', 'B', 'C']重新按['C', 'B', 'A']进行对齐。原创 2023-03-24 01:00:00 · 710 阅读 · 0 评论 -
详解Pandas转换函数transform
在与分组函数groupby()配合使用时,transform()转换的结果与agg()聚合的结果不一样,transform()会保持每一个分组的形状与原始数据形状相同,而agg()会将每个分组的结果聚合成一个标量值。transform()传入单个函数对Series转换时,结果是Series,传入多个函数对Series转换时,结果是DataFrame,列名是调用的函数名。在transform()中可以用字典的方式给不同的列传入不同的函数,如果字典中的value有列表,则结果的索引变成多层索引。原创 2023-03-23 00:45:00 · 563 阅读 · 0 评论 -
详解元素级批处理函数applymap和map
在Pandas中,apply()可以对DataFrame和Series按列或行批处理,applymap()和map()可以分别对DataFrame和Series进行元素级的批处理。与apply()相同,applymap()和map()只负责“批量”调度处理,批量执行的具体内容,由用户传入的函数决定(自定义或现成的函数)。map()中传入另一个Series时,传入的Series的index需要与原Series中的值对应,才能找到映射结果,找不到则结果为空。map()不支持给函数传入关键字参数。原创 2023-03-21 00:15:00 · 862 阅读 · 1 评论 -
详解Pandas表级操作的管道函数pipe
正确的传参语法为元组(callable, data_keyword)的形式,callable指定在pipe()中调用的函数,data_keyword指定将DataFrame传给函数的哪一个参数(用字符串指定),函数func的其他参数传递方式不变,传给*args和**kwargs。使用pipe()进行链式调用,将每个函数依次传入到pipe()中,执行完一个函数,再将结果传递给链式调用的下一个函数,pipe()就像一根管道一样。在数据分析时,对数据做多次处理是非常正常的,这正是pipe()的最大用途。原创 2023-03-22 00:30:00 · 413 阅读 · 0 评论 -
使用pyecharts实现可视化数据分析中的玫瑰图绘制
玫瑰图简介玫瑰图全称南丁格尔玫瑰图,是英国护士和统计学家弗罗伦斯·南丁格尔发明的,又名为极区图。南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),用以表达军医院季节性的死亡率,提供给那些不太能理解传统统计报表的公务人员。在疫情期间经常看到那种盘旋的像玫瑰一样的、用来展示不同地区的新增等数据的图形,就是玫瑰图。玫瑰图是一种圆形的直方图,即有饼图的特征,也有直方图的特征。在Python中,可以使用pyecharts库中绘制饼图的组件Pie实现玫瑰图,本文就循序渐进地介绍一步步将饼图演变成玫瑰图。原创 2023-03-25 00:15:00 · 1535 阅读 · 0 评论 -
Pandas读写Excel最全参数总结
pandas中的文件读写工具由一组read的函数(执行Input)和一组write的对象方法(执行Output)组成,本文总结最常用的三组读写工具的所有参数用法,read_excel()和DataFrame.to_excel()、read_csv()和DataFrame.to_csv()、read_json()和DataFrame.to_json()。原创 2023-03-20 00:09:54 · 2893 阅读 · 0 评论 -
Pandas中的drop和drop_duplicates使用详解
inplace: 设置是否在DataFrame本身删除数据,默认为False,在DataFrame的副本里删除数据,返回删除数据后的DataFrame。keep: 设置保留重复值中的哪一个,可以设置的值有{'first', 'last', False},默认first,如果有重复值,则保留第一个。如删除上面df2中的第二行,多重索引为['two', 2],指定level为0时,删除索引'two',指定level为1时,删除索引2,结果相同。默认删除重复值的方式,所有列的数据都相同时判定为重复,保留第一个。原创 2023-03-19 22:58:43 · 1889 阅读 · 0 评论 -
详解Pandas行列级批处理函数apply
将Series作为一个整体传给apply()中的函数func,有些函数返回的结果仍然是Series,如上面的自定义函数,有些函数返回的结果不再是Series,而是一个其他类型的数据,如numpy中的统计运算函数(mean、max、min)等。在apply()中,func函数的第一个参数默认会传入Series对象,这就是前面说的“将列/行作为Series对象传递给函数”,因此函数func至少要有一个参数,这个参数相当于类方法中的self,不需要在args中传值。raw是bool类型,默认为False。原创 2023-03-18 00:07:56 · 1441 阅读 · 0 评论 -
详解Pandas聚合函数agg
func: 用于聚合数据的函数,如max()、mean()、count()等,函数必须满足传入一个DataFrame能正常使用,或传递到DataFrame.apply()中能正常使用。本文介绍的聚合函数为DataFrame.aggregate(),别名DataFrame.agg(),aggregate()和agg()是同一个函数,仅名字不同。在agg()中,可以用列表的方式传入多个函数,会将这些函数在每一列的执行结果聚合到一个DataFrame中,结果DataFrame中的索引为对应的函数名。原创 2023-03-17 23:25:15 · 2327 阅读 · 0 评论 -
详解Pandas分组函数groupby
在数据分析时,经常需要将数据分成不同的群组,pandas中的groupby()函数可以完美地完成各种分组操作。分组是根据DataFrame/Series的某个字段值,将该字段的值相等的行/列分到同一组中,每一个小组是一个新的DataFrame或Series。groupby()也可以按DataFrame中的多个字段分组,当多个字段的值都相等时分到同一组。groupby()经常与批处理函数apply()、聚合函数agg()等配合使用,实现对数据的多元处理。原创 2023-03-17 23:16:12 · 4820 阅读 · 0 评论