泰迪杯真题银行客户忠诚度分析参考思路

一、导入相应的包(Pandas/Numpy/Sklearn/Matplotlib/Seaborn)

Pandas包:用于数据分析,包括读取和写入文件、筛选数据、查询数据、修改数据、统计数据等。

Numpy包:用于矩阵、线性分析等数学应用包

Sklearn包:在本套真题中主要用于任务二中的算法题目、机器预测

Matplotlib包:用于画图

Seaborn包:用于辅助热力图画图

导入包(为定义变量、使用包内函数做好准备)

实例代码:

import pandas as pd 
df = pd.read_csv(r'Data_Set/银行忠诚度/short-customer-data.csv')
df
#原有41176个数据行,14个数据列

运行结果:


二、对导入的列表数据进行必要的查询

1、查询缺失值(空值)

常用的函数有isnull函数、any函数、describe函数、notnull函数等,运用这些函数可以直接输出表格存在空值的情况。以isnull函数为例,df.isnull()则会返回整个表格每行每列相应的存在空值结果,如果存在空的单元格,返回的结果为True,否则为False

实例代码:

 # 查看含有空值的数据行
df[df.isnull().values==True]
# 含有空值的数据行有12716个

运行结果:


2、查询重复值

重复值的查询方式使用的函数为duplicate()函数,其输出与使用方法和isnull()函数大相径庭。故不再赘述。

示例代码:

 # 查看user_id列重复值的数据行
df[df.duplicated('user_id').values==True]

运行结果:

值得注意的是,在执行上述两个步骤,我们发现得到的结果并非像文字描述那样返回True/False结果,而是返回了符合条件的数据行。这是因为本人使用双重df嵌套来查询,因而双重嵌套下的逻辑运算返回的结果会是符合条件的若干个数据行,而并非逻辑判断值。若要实现空值每列每行的存在情况,可以将代码修改为

df.duplicated('user_id')

最终返回的结果会是series结果。

3、查询空值/重复值个数

在执行上述两个步骤的同时,我们必须要考虑到统计空值、缺失值存在的个数,这样可以为我们精确地完成去重去空的操作作好准备,做到心中有数。

对于统计长度,我们通常可以使用len函数

示例代码:

 # 含有user_id重复列的有56个
len(df[df.duplicated('user_id').values==True])

运行结果:

总而言之,无论是在执行去重去空,还是在准备之前,我们都离不开查询操作。因此,掌握和积累一定的查询常用用法很有必要。

三、运用Pandas包下各类函数对数据进行修改

1、去除空值、缺失值

关于去除空值,我们不妨可以使用dropna函数、fillna函数,对存在空值的数据行进行清理和补充,这一步是数据清洗的关键一步,也为我们进一步统计与分析有着不可小觑的作用。在使用dropna函数之前,我们可以先来看看dropna函数的参数具体意义。

dropna函数的语法格式:

DataFrame.dropna( self, axis: Axis = 0, how: str = "any", thresh=None, subset=None, inplace: bool = False, )

其中,axis代表的是行列,0代表行,1代表列。一般地,这些参数一般保持默认即可,不需要写出。

示例:

2、排序

对于本套真题,虽然没有使用到排序算法,但排序仍是数据结构中的重中之重,故必须重视。一般地,在Python中,也有现成的函数供大家使用,即sort_values()函数,其中要注意ascending参数在使用函数时要注明,否则会默认升序排序,若要按从大到小排序,必须将其置为False。

3、相关系数的计算

# 对非字符串型数据进行相关系数运算,其中method参数要根据数据的连续性进行选择
df.corr()

关于method,corr函数提供了三种方法:

(1) pearson:用于衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。

(2) spearman:非线性的,非正态分析的数据的相关系数。

(3) kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正态分布的数据

示例代码:

numeric_cols = process_df.select_dtypes(include=['float', 'int']).columns
corr_df = process_df[numeric_cols]
corr_df.corr(method='spearman')

运行结果:

4、依据最终数据绘制图形

关于这套题,作者就给出其中之一热力图来阐述,其余图形以后有机会再详细描述。

热力图涉及到的包包括有Matplotlib、Numpy、Sklearn等。

示例代码:

#绘制热力图
corr_data = corr_df.corr(method='spearman')
import numpy as np
from sklearn.tree import DecisionTreeClassifier
import seaborn as sns
import matplotlib.pyplot as plt
plt.subplots(figsize = (11,11))
sns.heatmap(corr_data,annot = True,vmax = 1,square = True,cmap = "Reds")
#保存图片
plt.savefig('Photo/heatmap.svg',format='svg')
#savefig必须放在show的前面,否则会输出一张空白图片
plt.show()

运行结果:


由于作者是第一次写博文,对于博文中存在有不足,请大家见谅,多多包涵,如有需要补充之处,可以联系作者或在评论区下留言。感谢您对作者的工作的认可与支持,您的转发与点赞,是对我工作的十分肯定,感谢!

  • 33
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTF(Capture The Flag)是一种网络安全技术竞赛,参赛选手需要通过解决一系列的目,从中寻找出标志性的“旗帜”(flag)来获取积分。泰山杯则是中国的一个著名CTF比赛,以泰山命名,寓意培养网络安全事业的顶峰人才。 泰山杯真题是该比赛中出现的各个目。这些真题通常涵盖了多个领域和技术,包括密码学、逆向工程、漏洞利用等。选手需要利用自己的知识和技能,解决这些真题的难。 通过参与泰山杯的真题,选手可以提高自己的网络安全技术水平,不断学习和探索新的技术和方法。这些真题往往是实战场景的模拟,选手需要在有限的时间内解决问,增强了他们的实际应用能力和临场反应能力。 泰山杯真题的设置是为了培养网络安全专业人才,挖掘和选拔优秀的安全人才。比赛过程不仅考察选手的技术能力,还要求选手具备团队合作和解决问的能力。因此,参与泰山杯的真题可以帮助选手锻炼自己的团队协作和解决问的能力,为未来的工作和研究打下坚实的基础。 总的来说,泰山杯真题是一种提高网络安全技术水平的学习和竞技平台。参与者通过解决真题,不断学习和研究新的安全技术,并通过实战来提高解决问的能力。同时,这也是一种选拔优秀网络安全人才的途径,对于参赛选手来说,是一次宝贵的学习和成长的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值