一、导入相应的包(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()
运行结果:
由于作者是第一次写博文,对于博文中存在有不足,请大家见谅,多多包涵,如有需要补充之处,可以联系作者或在评论区下留言。感谢您对作者的工作的认可与支持,您的转发与点赞,是对我工作的十分肯定,感谢!