检查与处理缺失值、标准化数据、数据可视化

检查与处理缺失值

有时数据中的某个或某些特征的值是不完整的,这些值称为缺失值。pandas提供了识别缺失值的isnull()方法和识别非缺失值的notnull()方法,这两种方法在使用时返回的都是布尔值,即True和 False。结合sum 函数、isnull()方法和notnul1()方法,可以检测数据中缺失值的分布以及数据中一共含有多少缺失值。

引入pandasnumpy库,操作如下:

import pandas as pd
import numpy as np

输入pandasnumpy库这两个库完后,点击运行。

用read_excel引入电商用户行为分析数据文件

data=pd.read_excel('E:/hql/mongo hql/Python hql/电商用户行为分析数据.xlsx',sheet_name='user_info')

用data查看头两行的数据,然后点击运行,操作如下

data.head(2)

sum()函数和mode()函数、isnull()方法

用sum()函数查询缺失值的数目

data.isnull().sum()

用mode()函数查询缺失值的数目

data['device'].mode()

data[data['device']=='mobile']['operative_system'].mode()

分布处理:如果设备和系统同时缺失的,就用mobile和ios去填充,如果只缺失了系统的,那么就再根据他的设备去填充
 

data[data['operative_system']=='iOS']['device'].fillna('mobile',inplace=True)

data.dropna(how='any')
data.info()

这样就完成了缺失值的处理。

制作标准化数据

1、引入pandasnumpy库,操作如下:

import pandas as pd
import numpy as np

输入pandasnumpy库这两个库完后,点击运行,如图所示:

运行完后,下面没有报红那就说明引入成功了,如果有报红那就查看自己是不是拼写错误

2、用read_csv引入user_pay_info文件

data=pd.read_csv('E:/hql/mongo hql/Python hql/user_pay_info.csv')

用data查看头两行的数据,然后点击运行,操作如下

data.head(2)

3、写一个离差标准化的函数

def min_max_scale(data):
    data=(data-data.min())/(data.max()-data.min())
    return data

查看头五行数据

data['每月支出离差标准化']=min_max_scale(data['每月支出'])
data.head(5)

4、做标准差标准化

先按照公式,写一个标准化函数


def standard_scale(data):
    data=(data-data.mean())/data.std()
    return data

5、对每月支出进行标准差标准化处理


data['每月支出标准差标准化']=standard_scale(data['每月支出'])
data.head(2)


6、小数定标标准化,直接除以你的量级,消除量级影响,让数据处于-1到1之间

def decimal_scale(data):
    data=data/10**np.ceil(np.log10(data.abs().max()))
    return data

data['每月支出小数定标标准化']=decimal_scale(data['每月支出'])
data.head(2)

这样我们就完成标准化数据的操作了。

数据可视化

若使用Matplotlib库进行图形的绘制,则需要先了解pyplot模块的基础语法及其动态的rc参数的设置。大部分的pyplot图形绘制都遵循一个流程,这个流程主要分为3个部分。

1.掌握 pyplot 基础语法    

掌握pyplot模块的基础语法的使用,可从创建画布与创建子图、添加画布内容、保存与显示图形3个部分进行。

(1)创建画布与创建子图

第一部分的主要作用是构建出一张空白的画布,可以选择是否将整个画布划分为多个部分,方便在同一个图上绘制多个图形。当只需要绘制一个简单的图形时,这部分内容可以省略。在pyplot中,创建画布与创建并选中子图的常用函数/方法及其作用如表所示,为了方便读者查看,将matplotlib.pyplot模块简写为 plt。

(2)添加画布内容  

 第二部分是绘图的主体部分。其中的添加标题、添加坐标轴标签、绘制图形等步骤是没有先后顺序的,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。在pyplot中添加各类标签和图例的常用函数及其作用如表所示。

(3)保存与显示图形

第三部分主要用于保存和显示图形,这部分内容的常用函数只有两个,并且参数很少,如表所示。

引入库

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=True
# %matplotlib inline

处理数据

data=np.load('E:/hql/mongo hql/Python hql/2001-2019年劳动力与就业人员数据.npz',encoding='ASCII',allow_pickle=True)
data

线形图

显示图中的中文字体

plt.rcParams['font.sans-serif']='SimHei

设置标题

plt.title('第一张线形图')

设置x轴标签

plt.xlabel('x轴的标签')

设置y轴标签

plt.ylabel('y轴的标签')

设置x轴的范围

plt.xlim(0,1)

设置y轴的范围

plt.ylim(0,1)

规定x轴刻度

plt.xticks([0,0.2,0.4,0.6,0.8,1])

规定y轴刻度

plt.yticks([0,0.2,0.4,0.6,0.8,1])

添加y=x^2曲线

plt.plot(data,data**2)

添加y=x^4曲线

plt.plot(data,data**4)

添加图例

plt.legend(['y=x^2','y=x^4'])

设置图片保存路径

plt.savefig('E:/hql/mongo hql/Python hql/第一张线形图')

输入show()显示线形图

plt.show()

尝试在同一画布中,同时画两个图
 
#准备数据
x=np.arange(0,np.pi*2,0.01)
plt.rcParams['axes.unicode_minus']=True
#准备画布
pl=plt.figure(figsize=(8,6),dpi=80)
#画第一张子图
ax1=pl.add_subplot(2,1,1)
plt.title('第一张线形图')#设置标题
plt.xlabel('x轴的标签')#设置x轴标签
plt.ylabel('y轴的标签')#设置y轴标签
plt.xlim(0,1)#设置x轴的范围
plt.ylim(0,1)#设置y轴的范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])#规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#规定y轴刻度
plt.plot(data,data**2)#添加y=x^2曲线
plt.plot(data,data**4)#添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])#添加图例
画第二张图
plt.rcParams['lines.linestyle']='-.'
plt.rcParams['axes.unicode_minus']=False
ax2=pl.add_subplot(2,1,2)
plt.title('第二张图')
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(0,np.pi*2)
plt.ylim(-1,1)
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])
plt.yticks([-1,-0.5,0,0.5,1])
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.legend(['y=sin(x)','y=cos(x)'])
plt.savefig('E:/hql/mongo hql/Python hql/第二张线形图')
plt.show()

绘制散点图

散点图(Scatter Diagram)又称为散点分布图,是以一个特征为横坐标,以另一个特征为纵坐标,利用坐标点(散点)的分布形态反映这两个特征间的统计关系的一种图形。值由点在图形中的位置表示,类别由图形中的不同标记表示,通常用于比较跨类别的数据。

散点图可以提供两类关键信息,具体内容如下:

(1)特征之间是否存在数值或数量的关联趋势,关联趋势是线性的还是非线性的。

(2)如果某一个点或某几个点偏离大多数点,那么这些点就是离群值,通过散点图可以一目了然,从而可以进一步分析这些离群值是否在建模分析中产生较大的影响。

散点图可通过散点的疏密程度和变化趋势表示两个特征的数量关系。如果有3个特征,且其中一个特征为类别型特征,散点图可改变该特征的点的形状或颜色,即可了解两个数值型特征和这个类别型特征之间的关系。

scatter 函数的常用参数及其说明如表所示。

某公司经调查整理得到就业人员数据,其中记录了2001年-2019年的就业人员数量。为了进一步分析各年度劳动力人数、城镇就业人数和乡村就业人数等情况,需要通过可视化图形进行展示分析。2001年-2019年劳动力与就业人员数据的特征说明如表所示。

绘制2001年-2019年劳动力人数散点图
plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000,85000)
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.scatter(values[:,0],values[:,1],marker='o')
plt.show()

准备开始画第二个散点图
plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.scatter(values[:,0],values[:,3],marker='D',c='r',alpha=0.5)
plt.scatter(values[:,0],values[:,4],marker='o',c='y',alpha=0.8)
plt.legend(['城镇就业人口','乡村就业人口'])
plt.show()

绘制折线图

折线图(Line Chart)是一种将数据点按照顺序连接起来的图形,可以看作将散点图按照x轴坐标顺序连接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,适合用于显示随时间(根据常用比例设置)而变化的连续数据,同时还可以显示数量的差异和增长趋势的变化。

plot 函数在官方文档的语法中只要求输入不定长参数,实际可以输入的参数主要如表所示。

color参数的8种常用颜色的缩写如表所示

绘制2001年-2019年劳动力人数折线图
plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000,85000)
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.plot(values[:,0],values[:,2],linestyle='-',marker='D',c='r')
plt.legend(['城镇就业人口','乡村就业人口'])
plt.show()

对第二张折线图添加两条折线
plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.plot(values[:,0],values[:,3],marker='D',linestyle='-',c='r')
plt.plot(values[:,0],values[:,4],marker='o',linestyle='-',c='y')
plt.legend(['城镇就业人口','乡村就业人口'])
plt.show()

绘制柱形图

柱形图(Bar Chart)的核心思想是对比,常用于显示一段时间内的数据变化或显示各项数据之间的比较情况。柱形图的适用场合是二维数据集(每个数据点包括两个值x和y),但只有一个维度的值需要比较。例如,年销售额就是二维数据,即“年份”“销售额”,但只需要比较“销售额”这一个维度的数据。柱形图利用柱形的高度,反映数据的大小。人眼对柱形高度差异很敏感,辨识效果非常好。柱形图的局限在于它只适用于中小规模的数据集。

bar函数的常用参数及其说明如表所示。

绘制2019乡村就业人数柱状图
labels=['城镇就业人口','乡村就业人员']
plt.figure(figsize=(6,6),dpi=1080)
plt.xlabel('类别')
plt.ylabel('人数(万人)')
plt.xticks(range(2),labels)
plt.title('2019乡村就业人数柱状图')
plt.bar(range(2),values[-1,3:5],width=0.5,color=['r','b'],alpha=0.6)#alpha颜色饱和度
plt.show()

绘制饼图

饼图(PieGraph)将各项数据的大小与各项数据总和的比例显示在一张“饼”中,以“饼块”的大小来确定每一项数据的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的比例,而且显示方式直观。

pie 函数的常用参数及其说明如表示

绘制2019年城乡就业人数分布饼图
labels=['城镇就业人口','乡村就业人员']
explode=[0.01,0.01]
plt.figure(figsize=(6,6),dpi=100)
plt.pie(values[-1,3:5],explode=explode,labels=labels,autopct='%1.1f%%',startangle=90,colors=['r','y'],shadow=True,radius=0.8)
plt.title('2019年城乡就业人数分布饼图')
plt.savefig('E:/hql/mongo hql/Python hql/饼图')
plt.show()

绘制箱线图

箱线图(Boxplot)也称箱须图,其绘制时,需使用常用的统计量,便能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,可表现出这些特征的分散程度差异。如图标出了箱线图中每条线表示的含义。

箱线图利用数据中的5个统计量(非异常值的下边缘、下四分位数、中位数、上四分位数和非异常值的上边缘)来描述数据。它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别是可以用于对多个样本进行比较。

boxplot函数的常用参数及其说明如表所示。

绘制2001年-2019年城乡就业人数分布箱线图
#准备画箱线图
labels=['城镇就业人口','乡村就业人员']
gdp=(list(values[:,3]),list(values[:,4]))
gdp

p=plt.figure(figsize=(6,6),dpi=100)
plt.boxplot(gdp,notch=True,labels=labels,meanline=True)
plt.title('2001年-2019年城乡就业人数分布箱线图')
plt.savefig('E:/hql/mongo hql/Python hql/箱线图')
plt.show()

这样我们就全部完成了数据可视化的操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值