当前位置: 首页 > news >正文

大数据分析案例-用RFM模型对客户价值分析(聚类)

目录

1.项目背景

2.项目准备

2.1 项目内容

2.2 数据说明        

2.3 技术工具

3.分析方法

3.1 RFM模型

3.2 聚类

4.项目实施步骤

4.1 读取数据

4.2 探索性数据分析

4.3计算RFM值

4.4数据预处理

4.4.1 数据类型转换

4.4.2 客户聚类

4.4.3标记客户类别

5.实验总结

5.1 结果分析

5.2 实验心得


1.项目背景

        随着行业竞争越来越激烈,商家将更多的运营思路转向客户。例如,购物时,常常被商家推荐扫码注册会员;各种电商平台也推出注册会员领优惠券等推销政策,而这些做法都是为了积累客户,以便对客户进行分析。

        那么,在商家积累的大量的客户交易数据中,如何根据客户历史消费记录分析不同客户群体的特征和价值呢?例如,了解哪些是重要保持客户、哪些是发展客户、哪些是潜在客户,从而针对不同客户群体定制不同的营销策略,实现精准营销、降低营销成本,提高销售业绩,使企业利润最大化。例如,淘宝电商客户繁多,消费行为复杂,客户价值很难人工评估,并对客户进行分类,这就霸要通过科学的分析方法评估客户价值,实现智能客户分类,快速定位客户、当然,也要清醒地认识到,即便是预测的客户价值较高,也只能说明其购买潜力较高,同时必须结合实际与客户互动,推动客户追加购买、交叉购买才是电商努力的方向。

顾客价值的概念及分类

        早在1954年,Drucker就指出顾客购买和消费的决不是产品而是价值。尽管学者们都使用了顾客价值这一概念却没有对其进行详细的描述与解释。
Zeithaml在1988年首先从顾客角度提出了顾客感知价值理论。她将顾客感知价值定义为:顾客所能感知到的利得与其在获取产品或服务中所付出的成木述行权衡后对产品或服务效川的整体评价。
在此后的顾客价值研究中不同的学者从不同的角度对顾客价值进行了定义
(1)从单个情景的角度,AndersonJain、Chintagunta 、Monroe都认为顾客价值是基于感知利得与感知利失的权衡或对产品效用的综合评价;
(2)从关系角度出发,Ravald、Gronroos重点强调关系对顾客价值的影响将顾客价值定义为:整个过程的价值二(单个情景的利得+关系的利得)/(单个情景的利失+关系的利失),认为利得和利失Z间的权衡不能仅仅局限在单个情(episode)上,而应该扩展到对整个关系持续过程的价值(totalepisode,value)衡量。此外,Butz、Good2stein也强调顾客价值的产生来源于购买和使用产品后发现产品的额外价值从而与供应商之间建立起感情纽带。
        在众多的顾客价值定义中大多数学者都比较认同Woodruff对顾客价值的定义并在其定义基础上进行了很多相关研究。Woodruff通过对顾客如何看待价值的实证研究提出顾客价值是顾客对特定使用情景下有助于(有碍于)实现自己的目标和目的的产品属性、这些展性的实效以及使用的结杲所感知的偏好与评价。该定义强调顾客价值來源于顾客通过学习得到的感知、偏好和评价并将产品、使用情景和目标导向的顾客所经历的相关结果相联系。
        同时,很多学者都从不同角度对顾客价值进行了分类。Sheth等人把客八价值分为五类:功能性价值、社会性价值、情感性价值、认知价值(epistemic)和条件价值。Burns结合客户评价过程把'客户价值分为产品价值、使川价值、山有价值和全部价值。Woodruff、Flint则将其分为实受价值和期望价值。通过以上分析不难看此虽然学者们对顾客价值的理解有很多,但都是从交换的角度來看待价值,并认同感知价值的核心是感知利得与感知利失之间的权衡。
从顾客价值的概念中我们不难总结出顾客价值的几个基木特征
(1)顾客价值是顾客对产品或服务的一种感知是与产品和服务相挂钩的它妹于顾客的个人主观判断
(2)顾客感知价值的核心是顾客所获得的感知利益Q因获得和享用该产品或服务而付出的感知代价之间的权衡(trade・off),即利得与利失之间的权衡;
(3)顾客价值是从产品属性、属性效用到期望的结果再到客八所期望的目标具有层次性。
顾客价值的理论模型
科特勒的可让渡价值理论
        菲利普•科特勒是从顾客让渡价值和顾客满意的角度來阐述顾客价值的。其研究的前捉是:顾客将从那些他们认为捉供最高认知价值的公司购买产品。所谓顾客止渡价值,是指总顾客价值与总顾客成本Z差。
        总顾客价值就是顾客从某一特定产品或服务中获得的一系列利益,它包括产品价值、服务价值、人员价值和形象价值筹。顾客总成本是指顾客为了购买产品或服务而付出的一系列成本,包括货币成本、时间成本、和体力成本。顾客是价值最人化的追求者,在购买产品时总希望用最低的成木获得最大的收益,以使口己的盂耍得到最大限度的满足。
Jeanke、Ron 、Onno的顾客价值模型
        Jeankex Ron、Onno的模型从供应商和顾客两个角度,描述了随着业务发展价值从一个模糊的概念到市场上的具体产品的整个过程。对供应商而言,供应商的依据的是他所感觉到的顾客需求以及企业本身的战略、能力和资源,形成“想提供的价值”的概念。由于企业条件或产品开发与市场脱节等原因,企业以“想提供的价值”为基础设计出以具体产品或服务为载体的“设计价值”,两者之间存在“设计差距”。对顾客而言顾客从自身角度出发希望获得的是“想要得到的价值”。于社会环境、科技的发展程度筹客观因素的限制市场上提供的产品不可能与顾客想得到的价值完全吻合,因此存在“折衷差距”和顾客的“期望价值”。由于供应商与顾间存在对顾客需求的不对称信息或是企业在顾客需求调查过程中过多地掺杂了企业自身的思想对顾客需求的分析未必客观准确,所以“想提供的价值”与顾客“想得到的价值”之间存在“信息差距”。顾客的主观性价值感知使“期累价值”与设计价值间出现“感知差距”。当顾客使用产品后,所“得到的价值”与期望价值之间的差距为“满意差距”。通过缩小各个差距,企业就可以提供真正为顾客所需的价值。
        Woodruff顾客价值层次模型对顾客如何感知企业所提供的价值问题进行了回答。该模熨提;比顾客以途径一目标的方式形成期望价值。在授底层往上看,在购买和使用某一具体产品的时候,顾客将会考虑产品的具体属性和屈性效能以及这些属性对实现预期结果的能力。顾客还会根据这些结杲对顾客ri标的实现能力形成期架。从最高层向下看,顾客会根据自己的目标来确定产品在使用情景下各结果的权重。同样结果确定属性和属性实效的相对重要性。同时该模型强调了使用情景在顾客价值评价屮的关键作用。当使川情景发生变化时产品属性、结果和目标间的联系都会发生变化。该层次模型还提出顾客通过对每一层次上产品使川前的期望价值和使用后的实受价值的对比,会导致每一个层面上的满意感觉。因此顾客对于产品属性、属性效能、使用结果和目标意图的达成度都会感到满意或
顾客期望的价值。

因此,客户价值分析至关重要。

2.项目准备

2.1 项目内容

随着行业竞争越来越激烈,商家将更多的运营思路转向客户,客户是企业生存的关键,能够把握住客户就能够掌控企业的未来。客户的需求是客户消费的最直接原因,因此我们主要研究以下问题:

  1. 企业如何细分客户;
  2. 哪些是重要的保持客户 ;

 3)哪些是发展客户;

 4)哪些是潜在客户。

从而针对不同客户群体定制不同的营销策略,使企业利润最大化。

2.2 数据说明        

        实验使用从网络获取的客户数据集进行分析,有两个年度数据,2018年该数据集有5个字段,共1785条记录。2019年该数据集有5个字段,共2025条记录。我们的目标就是细分客户,从而针对不同客户群体定制不同的营销策略,使企业利润最大化。数据如图 2‑1所示。

 

图2-2原始数据信息

2.3 技术工具

客户价值分析主要使用的是聚类分析方法,在对客户进行聚类前,首先要使用RFM模型分析客户价值。

3.分析方法

3.1 RFM模型

下面对R、F、M三个指标进行详细介绍

R:最近消费时间间隔,表示客户最近一次消费时间与之前消费时间的距离。

R越大,表示客户越久未发生交易,R越小,表示客户最近有交易发生。R越大,则客户越可能会“沉睡”,流失的可能性越大。在这部分客户中,可能有些优质客户,值得通过一些营销手段进行激活。

F:消费频率,表示一段时间内的客户消费次数。F越大,则表示客户交易越频繁,是非常忠诚的客户,也是对公司的产品认同度较高的客户;F越小,则表示客户不够活跃,且可能是竞争对手的常客。针对F较小、且消费额较大的客户,需要推出一定的竞争策略,将这批客户从竞争对手中争取过来。

M:消费金额,表示客户每次消费金额,可以用最近-次消费金额,也可以用过去的平均消费金额,根据分析的目的不同,可以有不同的标识方法。

-般来讲,单次交易金额较大的客户,支付能力强,价格敏感度低,帕累托法则告诉我们,一个公司80%的收入都是由消费最多的20%客户贡献的,所以消费金额大的客户是较为优质的客户,也是高价值客户,这类客户可采取一对一的营销方案。

3.2 聚类

聚类,即将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。在数据挖掘中,聚类也是很重要的一个概念。传统的聚类分析计算方法主要有划分方法、层次方法、基于密度的方法、基于网格的方法、基于模型的方法五种。

聚类的目的是把数据分类,但是事先我们不知道如何去分,完全是靠算法判断数据之间的相似性,相似的就放在一起。通过聚类实现客户分类,将相似的客户分为一类,主要使用了机器学习SokirLcanm 中的聚类模块cuser提供的KMeans方法来实现。

传统的聚类分析计算方法主要有如下几种:

1、划分方法(partitioning methods)

给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K聚类算法中可以放宽);对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。使用这个基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、CLARANS算法;

2、层次方法(hierarchical methods)

这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法有:BIRCH算法、CURE算法、CHAMELEON算法等;

3、基于密度的方法(density-based methods)

基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等;

4、基于网格的方法(grid-based methods)

这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法;

5、基于模型的方法(model-based methods)

基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。通常有两种尝试方向:统计的方案和神经网络的方案。

当然聚类方法还有:传递闭包法,布尔矩阵法,直接聚类法,相关性分析聚类,基于统计的聚类方法等。

可伸缩性:许多聚类算法在小于 200 个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。我们需要具有高度可伸缩性的聚类算法。

处理不同类型属性的能力:许多算法被设计用来聚类数值类型的数据。但是,应用可能要求聚类其他类型的数据,如二元类型(binary),分类/标称类型(categorical/nominal),序数型(ordinal)数据,或者这些数据类型的混合。

发现任意形状的聚类:许多聚类算法基于欧几里得或者曼哈顿距离度量来决定聚类。基于这样的距离度量的算法趋向于发现具有相近尺度和密度的球状簇。但是,一个簇可能是任意形状的。提出能发现任意形状簇的算法是很重要的。

用于决定输入参数的领域知识最小化:许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。聚类结果对于输入参数十分敏感。参数通常很难确定,特别是对于包含高维对象的数据集来说。这样不仅加重了用户的负担,也使得聚类的质量难以控制。

处理“噪声”数据的能力:绝大多数现实中的数据库都包含了孤立点,缺失,或者错误的数据。一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果。

对于输入记录的顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。例如,同一个数据集合,当以不同的顺序交给同一个算法时,可能生成差别很大的聚类结果。开发对数据输入顺序不敏感的算法具有重要的意义。

高维度(high dimensionality):一个数据库或者数据仓库可能包含若干维或者属性。许多聚类算法擅长处理低维的数据,可能只涉及两到三维。人类的眼睛在最多三维的情况下能够很好地判断聚类的质量。在高维空间中聚类数据对象是非常有挑战性的,特别是考虑到这样的数据可能分布非常稀疏,而且高度偏斜。

基于约束的聚类:现实世界的应用可能需要在各种约束条件下进行聚类。假设你的工作是在一个城市中为给定数目的自动提款机选择安放位置,为了作出决定,你可以对住宅区进行聚类,同时考虑如城市的河流和公路网,每个地区的客户要求等情况。要找到既满足特定的约束,又具有良好聚类特性的数据分组是一项具有挑战性的任务。

可解释性和可用性:用户希望聚类结果是可解释的,可理解的,和可用的。也就是说,聚类可能需要和特定的语义解释和应用相联系。应用目标如何影响聚类方法的选择也是一个重要的研究课题。

4.项目实施步骤

Python实现客户价值分析首先需要准备数据。淘宝电商存在大量历史交易数据,本次仅抽取近两年的交易数据,2018年1月1日到2019年12月31日。通过数据中的“买家会员名”“订单付款日期”“买家实际支付金额”来分析客户价值。

4.1 读取数据

由于两年的数据分别放在不同excel表中,在读取数据之前先对数据进行合并,然后从数据中抽取与客户价值分析相关的数据,即“买家会员名”“订单付款日期”“买家实际支付金额”。程序代码如下:

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
#读取excel表格
df_2018=pd.read_excel('2018.xlsx')
df_2019=pd.read_excel('2019.xlsx')
#抽取指定列数据
df_2018=df_2018[['买家会员名','买家实际支付金额','订单付款时间']]
df_2019=df_2019[['买家会员名','买家实际支付金额','订单付款时间']]
#数据合并导入
dfs=pd.concat([df_2018,df_2019])
dfs.head()#head展示前五行

 

4.2 探索性数据分析

数据探索分析主要分析与客户价值RFM模型有关的数据是否存在数据缺失、数据异常的情况,从而分析出数据的规律。在通常数据量较小的情况下,打开数据表就能够看到不符合要求的数据,手动处理即可,而在数据量较大的情况下就需要使用Python这里主要使用describe函数,该函数可以自动计算字段非空值数

(count) (空值数=数据总数-非空值数)、最大值(max)、 最小值(min)、 平均值(mean)、 唯一值数(unique)、 中位数(50%)、频数最高者(top)、 最高频数(freq)、 方差(std),从而帮我们分析有多少数据存在数据缺失、数据异常等情况。如图12.6所示, “订单付款时间”中有637条空值记录、买家实际支付金额最小值为0,说明这些数据中的客户并没有在店铺消费,属于无效数据,因此没有必要对这部分的客户进行分析。

view=dfs.describe(percentiles=[],include='all').T
view['null']=len(dfs)-view['count']
view=view[['null','max','min']]
view.columns=[u'空值数',u'最大值',u'最小值']#重命名
print(view)

 

4.3计算RFM值

计算RFM值,需要对数据进行简单处理,去除“订单付款时间”的空值,去除“买家实际支付金额”为0的数据。

data=dfs[dfs['订单付款时间'].notnull()&dfs['买家实际支付金额']!=0]

接下来计算RFM值,首先了解下RFM值的计算方法:

最近消费时间间隔(R值):最近一次消费时间与某时刻的时间间隔。计算公式:某时刻的时间-最近一次消费时间。

消费频率(F值):客户累计消费次数。

消费金额(M值):客户累计消费金额。

data=data.copy()
data['最近消费时间间隔']=(pd.to_datetime('2019-12-31')-pd.to_datetime(data['订单付款时间'])).values/np.timedelta64(1,'D')
df=data[['订单付款时间','买家会员名','买家实际支付金额','最近消费时间间隔']]
df1=df.groupby('买家会员名').agg({'买家会员名':'size','最近消费时间间隔':'min','买家实际支付金额':'sum'})
df2=df1.rename(columns={'买家会员名':'消费频率','买家实际支付金额':'消费金额'})

4.4数据预处理

在真实世界中,数据通常是不完整的(缺少某些感兴趣的指标值)、不一致的(包含代码或者名称的差异)、极易受到噪声(错误或异常值)的侵扰的。因为数据库太大,而且数据集经常来自多个异种数据源,低质量的数据将导致低质量的挖掘结果。就像一个大厨现在要做美味的蒸鱼,如果不将鱼进行去鳞等处理,一定做不成我们口中美味的鱼。数据预处理就是解决上述所提到的数据问题的可靠方法,因此,在进行数据分析之前我们需要进行数据预处理。

数据预处理一般要遵循以下规则:

1)完整性:单条数据是否存在空值,统计的字段是否完善。

2)全面性:观察某一列的全部数值,通过常识来判断该列是否有问题,比如:数据定义、单位标识、数据本身。

3)合法性:数据的类型、内容、大小的合法性。比如数据中是否存在非ASCII字符,性别存在了未知,年龄超过了150等。

4)唯一性:数据是否存在重复记录,因为数据通常来自不同渠道的汇总,重复的情况是常见的。行数据、列数据都需要是唯一的。

本项目对数据进行数据类型转换和缺失值处理两种预处理方法,以确保其完整性、全面性与合法性。

4.4.1 数据类型转换

数据类型转换是将数据转换成“适当的”格式,以适应数据分析和数据挖掘算法的需要。下面将RFM模型的数据进行标准化处理,程序代码如下: 

data=df2[['最近消费时间间隔','消费频率','消费金额']]#提取指定列数据
data=(data-data.mean(axis=0))/(data.std(axis=0))#标准化处理
data.columns=['R','F','M']#重命名
data.index
print(data.head())

4.4.2 客户聚类

下面使用Scikit-Learn中的cluster模块的Kmeans方法实现客户聚类分析,聚类结果通过密度图显示,程序代码如下:

k=4
kmodel=KMeans(n_clusters=k)#创建聚类模型
kmodel.fit(data)#训练模型
r1=pd.Series(kmodel.labels_).value_counts()
r2=pd.DataFrame(kmodel.cluster_centers_)
r=pd.concat([r2,r1],axis=1)
r.columns=list(data.columns)+[u'聚类数量']
r3=pd.Series(kmodel.labels_,index=data.index)#类别标记
r=pd.concat([data,r3],axis=1)#数据合并
r.columns=list(data.columns)+[u'聚类类别']

plt.rcParams['font.sans-serif']=['SimHei']#解决中文乱码
plt.rcParams['axes.unicode_minus']=False#解决负号不显示
for i in range(k):
    cls=data[r[u'聚类类别']==i]
    cls.plot(kind='kde',linewidth=2,subplots=True,sharex=False)
    plt.suptitle('客户群=%d;聚类数量=%d'%(i,r1[i]))
plt.show()

 结果如下:

图4-4-2-2第一类客户 

 

图4-4-2-3第二类客户

 

图4-4-2-4第三类客户

 

图4-4-2-5第四类客户 

4.4.3标记客户类别

为了清晰的分析客户,通过聚类模型标记客户类别,同时根据类别统计客户RFM值的特征。

cdata.columns=['R-最近消费时间间隔','F-消费频率','M-消费金额','类别']#重命名最后一列为类别
df = pd.concat([df2[['最近消费时间间隔','消费频率','消费金额']],r3],axis=1)#数据合并
df.columns=['R-最近消费时间间隔','F-消费频率','M-消费金额',u'聚类类别']
data_mean = df.groupby('聚类类别').mean()
new = data_mean.mean()
df = data_mean.append(new,ignore_index=True)
data_mean=cdata.groupby(['类别']).mean()
print(data_mean)

5.实验总结

5.1 结果分析

客户价值分析主要由两部分构成:第一部分根据淘宝电商客户3个指标的数据,对客户进行聚类,也就是将不同价值客户分类;第二部分结合业务对每个客户群进行特征分析,分析其客户价值,并对客户群进行排名。这里将RFM3个指标的均值作为判断高低的点,低于均值是“低”,高于均值是“高”,如图所示,最后一行为均值。

 比较后,我们将客户群按价值高低进行分类和排名,客户群0是潜在客户;客户群1是一般发展客户,客户群2是一般保持客户,客户群3是重要保持客户。

R

F

M

聚类类别

客户类别

客户数

排名

0

潜在客户

1316

4

1

一般发展客户

978

3

2

一般保持客户

120

2

3

重要保持客户

3

1

 

根据以上分析,得到客户分类的依据:

(1)重要保持客户:F、M高,R略高于平均分。他们是淘宝电商的高价值客户,是最为理想型的客户类型,他们对企业品牌认可,对产品认可,贡献值最大,所占比例却非常小。这类客户花钱多又经常来,但是最近没来,这表示他们是一段时间没来的忠实客户。淘宝电商可以将这类客户作为VIP客户进行一对一营销,以提高这类客户的忠诚度和满意度,尽可能延长这类客户的高水平消费。

(2)一般保持客户: F高,这类客户消费次数多,是忠实的客户。针对这类客户应多传递促销活动、品牌信息、新品或活动信息等。

(3)潜在客户: R、F和M低,这类客户短时间内在店铺消费过,消费次数和消费金额较少,是潜在客户。虽然这类客户的当前价值并不是很高,但却有很大的发展潜力。针对这类客户应进行密集的营销信息推送,增加其在店铺的消费次数和消费金额。

(4)一般发展客户:低价值客户,R高,F、M低,说明这类客户很长时间没有在店铺进行交易了,而且消费次数和消费金额也较少。这类客户可能只会在店铺打折促销活动时才会消费,要想办法推动客户的消费心理,否则会有流失的危险。

5.2 实验心得

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。

python课上的基础知识学习,我对python也有了一定的认识。而且,在字符串上的处理,python相对于c语言也是给程序员极大的便利。而python不仅如此,它的库也很多,正因为它强大的库,让编程变得不再艰难。但是,我认为python虽然在许多方面相对于c语言比较方便,但也有其相对于弱一点的方面,比如说for循环等方面。虽然一学期下来,我对python的学习也仅仅只是它的基础方面,但python的强大,也是足足地吸引着我,希望自己能够在不断地学习中,将python学习的更加好。python是一门非常有潜力的高级语言,历经多年的发展,其在编程上发挥着越来越大的作用。在这学期中,通过选修python课上的基础知识学习,我对python也有了一定的认识。
在学习python的第一节课上,其对我的最初的印象就是,相较于我学习过的c语言编程,它更加的简洁。所有的变量都不需要像c语言编程那样需要提前去定义,这样给了编程者很大的自由空间与方便。如x=2,即可同时完成变量的定义与赋值。对于简化程序的代码,起到了许多的作用。而且,在字符串上的处理,python相对于c语言也是给程序员极大的便利。在c语言中,只能用字符类的数组对字符串进行相应的操作,步骤也是相对于比较繁琐的,而在python中,当我们需要创建一个字符串的时候,只需要在创建字符串的时候用"s=”就可以了。而python不仅如此,它的库也很多,正因为它强大的库,让编程变得不再艰难。我们只需要调用库中的函数,而对于函数的具体实现,也没有特殊的需求。
但是,我认为python虽然在许多方面相对于c语言比较方便,但也有其相对于弱一点的方面,比如说for循环等方面。不过也依然不会影响到python的强大,而随着近几年来的发展,python的受欢迎度也越来越高,而它的运用的领域也是越来越多,比如人工智能和大数据等领域,python都是在其中扮演者重要的角色。虽然一学期下来,我对python的学习也仅仅只是它的基础方面,但python的强大,也是足足地吸引着我,希望自己能够在不断地学习中,将python学习的更加好。

现实世界中,每个复杂的事务都可以拆分为多个组成部分,其中的每一部分就可称之为对象。比如要实现一个很大很复杂的项目,我们可以把项目拆分成不同的组成部分,然后分别对不同部分通过编程实现,最终再把各个部分组装起来完成整个项目。这让我们能够从整体上来控制项目,从而让程序开发更有效。
比如汽车制造,汽车厂所做的仅仅是各个部件的组装和匹配,而各个部件的生产是由相对专业的厂商完成。如果需要研发新型号汽车,整车厂所考虑的是如何对各个新式的零部件进行新的组装和匹配,而不是从头到尾重新生产一辆汽车。
面向对象的编程VS面向过程的编程
面向过程编程是针对一个需求的具体实现过程,但是对于大型项目的复杂需求,一步一步的做,这种编程效率显然是低下的。
面向对象编程则是对项目进行拆分后(一般按照功能拆分),分别实现,再将各个对象组装起来。因此简单的小程序使用面向过程方法编程更适合。面向对象的编程特性是易维护(可读性高),效率高,质量高(重用性),扩展性好(高内聚,低耦合)。
对象,通俗的讲,对象就是事物,一个公司、一个部门、一个人,甚至一本书都可以是一个对象,程序员可以自由决定把什么作为对象。
比如eHR系统,需要对组织架构,员工进行管理,所以使用的对象可能是公司,部门,岗位,员工,等等。对象可大可小,可复杂也可简单,如果仅仅是做一个考勤系统,员工这个对象一定要比eHR系统中的员工对象简单。
类,现实世界中,类代表一组有共同特性的事物,把不同对象之间的共性抽象出来,就形成类的概念。比如说男人、女人可以抽象成人这个类;处长、秘书可以抽象成员工类。至于类如何去抽象,粒度的粗细,这是一个需要在学习和实践中摸索的过程。

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。 

相关文章:

  • Linux入门之管理 Wi-Fi 连接
  • 结构体作业等
  • ARM架构种类
  • 【牛客刷题-算法】NC16 对称的二叉树
  • MATLAB算法实战应用案例精讲-【回归算法】XGBoost算法(附Java、Python和R语言代码)
  • 基于java春晓学堂管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • 通关率不到0.1%的小游戏《羊了个羊》为什么这么火?
  • [架构之路-7]:架构师 - 嵌入式硬件架构师的工作内容和工作要求是什么
  • 【javaweb简单教程】3.使用JDBC操作数据库(含简单示例完整代码)
  • 【uiautomation】微信群发消息,获取群通讯录名单
  • 「数据结构详解·八」带权并查集 扩展域并查集
  • 【SQL刷题】DAY21----SQL组合查询专项练习
  • 解决使用Lambda分组后,每组多条数据处理
  • 商业地产如何走出高空置率困局?
  • <学习笔记>从零开始自学Python-之-基础语法篇(十一)正则表达式re库
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CentOS 7 修改主机名
  • JavaScript服务器推送技术之 WebSocket
  • Vue UI框架库开发介绍
  • vue-router 实现分析
  • 创建一个Struts2项目maven 方式
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何胜任知名企业的商业数据分析师?
  • 怎么将电脑中的声音录制成WAV格式
  • 06-01 点餐小程序前台界面搭建
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #AngularJS#$sce.trustAsResourceUrl
  • (1)bark-ml
  • (2)STM32单片机上位机
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (译) 函数式 JS #1:简介
  • (转)一些感悟
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET和.COM和.CN域名区别
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [Assignment] C++1
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [CF]Codeforces Round #551 (Div. 2)
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [MFC] MFC消息机制的补充