一.引言
当今社会,数据分析技术已覆盖教育、医疗、物流、金融、农牧等行业,应用于人们日常生活的方方面面,作为数字化转型的重要工具,在数字中国建设中展现出巨大发展潜力,其产生的数据量也呈现指数型增长的态势。现有数据的量级已经远远超越了目前人力所能处理的范畴。如何管理和使用这些数据,逐渐成为数据科学领域中一个全新的研究课题。
二.Python数据分析工具和库介绍
1.NumPy库
(1) .含义
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
(2).主要功能
-
多维数组对象:NumPy使用
ndarray
(n-dimensional array)对象来存储单一数据类型的多维数组。这些数组是固定大小的,且其元素在内存中是连续存放的,这使得元素访问和操作常高效。 -
数学函数:NumPy提供了大量的数学函数,用于对数组中的数据进行各种数学运算,如加法、减法、乘法、除法、三角函数、指数函数等。
-
线性代数:NumPy提供了许多线性代数相关的函数,如矩阵乘法、矩阵转置、特征值和特征向量计算、求解线性方程组等。
-
随机数生成:NumPy有一个随机数生成模块,可以生成各种分布的随机数,如均匀分布、正态分布、泊松分布等。
-
统计函数:NumPy提供了各种统计函数,如均值、标准差、中位数、众数等,用于分析数组中的数据。
2.pandas库
(1).含义
pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。它可以对数据进行预处理(数据合并,数据清洗,数据标准化和数据变换),提高数据质量。
(2)主要功能
①.创建 DataFrame
②.读取 CSV 文件到 DataFrame
③.选择数据
④.数据操作
⑤.数据清洗
⑥.主键合并数据
#使用merge函数进行主键合并
import pandas as pd
import numpy as np#导入pandas库
pay_info=pd.read_csv('D:/data/user_pay_info.csv',encoding='utf-8')
download_info = pd.read_csv('D:/data/user_download.csv',encoding='GB2312')
download_and_pay = pd.merge(download_info, pay_info,left_on='用户编号',right_on='编号')
print('用户每月支出信息表的原始形状为:',pay_info.shape)
print('用户下载意愿表的原始形状为:',download_info.shape)
print('用户下载意愿表和用户每月支出信息表主键合并后的形状为:',download_and_pay.shape)
#使用join()方法进行主键合并
pay_info.rename({'编号':'用户编号'},inplace=True)
download_and_payl=download_info.join(pay_info, on='用户编号',rsuffix='1')
print('用户下载意愿表和用户每月支出信息表主键合并后的形状为:',download_and_payl.shape)
3.Matplotlib、Seaborn、pyecharts库
(1).含义
①.Matplotlib库
是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等。
②.Seaborn库
Seaborn是一个基于matplotlib且数据结构与Pandas统一的统计图制作库。Seaborn库旨在以数据可视化为中心来挖掘并理解数据。Seaborn提供的面向数据集制图函数主要是对行列索引和数组的操作,包含对整个数据集进行内部的语义映射与统计整合。
③.Pyecharts库
pyecharts是Python与Echarts结合之后的产物,Echarts 是一个由百度开源的数据可视化库,它是一个纯JavaScript的图表库,可以为用户提供直观生动,可交互,可高度个性化定制的数据可视化图表,pyecharts封装了Echarts各类图表的基本操作,通过渲染机制,输出一个包含JS代码的HTML文件。
(2).代码示例
①.matplotlib绘制进阶图形(散点图)
import numpy as np#导入numpy库
import matplotlib.pyplot as plt#导入matplotlib库
plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
plt.rcParams['axes.unicode_minus']=False
data =np.load('D:/data/2001-2019年劳动力与就业人员数据.npz',encoding='ASCII', allow_pickle=True)
columns=data['arr_0'] #提取其中的columns数组,视为数据的标签
values =data['arr_1'] #提取其中的values数组,视为数据的存在位置
plt.figure (figsize=(12, 6),dpi=1080) #设置画布
plt.scatter (values[:,0],values[:,1],marker='o') # 绘制散点图 plt.xlabel('年份(年))
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000,85000) # 设置y轴范围
plt.xticks(range (2001,2020,1),labels=values[:,0])
plt.title('2001年-2019年劳动力人数散点图')#添加图表标题
plt.show()
三.实际应用案例
装公司人事工作人员为了对来聘人员信息进行分析,以聘用适合计算机岗位的人员,调用了计算机岗位来聘人员信息表(hr_job.csv),其部分数据如表4-17所示,数据字段包括应聘人员的ID、性别、相关经验、教育水平和工作次数等信息。
表 1-1来聘人员信息表部分数据
经观察发现,数据存在缺失值等异常数据,因此需要对数据进行预处理,其主要步骤
如下。
(1)读取来聘人员信息数
import pandas as pd
hr=pd.read_csv('D:/数据分析/data/hr_job.csv',sep=',',encoding='gbk')
hr.head()
(2)将类别型数据中的缺失值填补为“未知”,将数值型缺失值填补为其对应特征的均值。
hr.fillna({"教育水平":"未知"})
mean_num=hr['工作次数'].mean()
hr['工作次数']=hr['工作次数'].fillna(mean_num)
hr['性别']=hr['性别'].fillna("未知")
hr['相关经验']=hr['相关经验'].fillna("未知")
hr['教育水平']=hr['教育水平'].fillna("未知")
print(hr)
(3)对所有的分类数据进行哑变量处理。
print(pd.get_dummies(hr))