首页 > 技术文章 > 数据挖掘预处理之《单连续变量》

vvlj 2019-04-01 21:22 原文

统计数据:pd.describe()

  · 缺失值:df.isnull()    #df就是加载进来的数据,DataFrame类型的

  ·异常值: 箱型图模型

画图

  ·分布:

    核密度估计:sns.kdeplot()

    直方图图:sns.distplot()

 

 

判断方法:df.info()

分类:  连续型(continuous)和标称型或分类变量(categorical)

1 f= r'movies_metadata.csv'
2 df =pd.read_csv(f)  #加载数据  df是DataFrame类型
3 print(df.info())    #输出数据信息(数目、类型)  

 

输出结果

 

分析统计数据:df.describe()

 

1 f= r'movies_metadata.csv'
2 df =pd.read_csv(f)  #加载数据  df是DataFrame类型
3 print(df.describe())    #输出统计信息

 

 

 

输出结果

 

缺失值、异常值单变量绘图,这几项都写在一个类里面,对号入座

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 import warnings
 5 warnings.filterwarnings('ignore')   #忽略警告
 6 plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
 7 plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
 8 
 9 class PreProcess:
10     def __init__(self,f):
11         self.data =pd.read_csv(f)
12 
13     def missVal(self,col =None):
14         '''缺失值'''
15         raw,columns =self.data.shape    #形状:(行数,列数)
16         if col:
17             num =self.data[col].isnull().sum().sort_values()    #排序
18         else:
19             num =self.data.isnull().sum().sort_values()
20         #print(col, r"缺失数:\n", num)
21         print(col,r"缺失值比例:\n",num/raw)
22 
23     def abnormalVal(self,col):
24         '''单连续变量异常值'''
25         #箱型图模型
26         colData =self.data[col]
27         dscr =colData.describe() #统计数据
28         iqr =dscr.loc['75%'] - dscr['25%']  #四分位间距 =上四分位数-下四分位数
29         upBoundry =dscr.loc['75%'] +1.5*iqr    #上界
30         lowBoundry =dscr.loc['25%'] - 1.5*iqr   #下界
31         num = (colData <lowBoundry).sum() +sum(colData >upBoundry) #超过边界的算异常值
32         print(col,"异常值数目:",num)
33         print(col,"异常值占比:",num/colData.shape[0])
34         #self.data.boxplot(col);plt.show() #直接画箱型图
35 
36     def sDraw(self,col):
37         '''单连续变量分布图'''
38         sns.kdeplot(self.data[col].values,shade=True)   #核密度估计  KDE(Kernel Density Estimate)
39         plt.title(col)  #设置标题
40         plt.show()
41         sns.distplot(self.data[col].values,bins=10,kde=True)    #直方图 bins:直方图数目、kde:是否画kde曲线
42         plt.title(col)  #设置标题
43         plt.show()

补充:两个图主要看分布

kedplot 的图

distplot()

这个有一点重尾分布:评论数目较少的电影(样本/每一行的数据),占了70%左右

    

 

推荐阅读