【数据分析】-003-数据探索-Python主要数据探索函数

Python主要数据探索函数

Python中用于数据探索的库主要是Pandas(数据分析)和Matplotlib(数据可视化)。
其中,Pandas提供了大量的与数据探索相关的函数,这些数据探索函数可大致分为统计特征函数与统计作图函数,而作图函数依赖于Matplotlib,所以往往又会跟Matplotlib结合在一起使用。

基本统计特征函数

统计特征函数用于计算数据的均值、方差、标准差、分位数、相关系数和协方差等,这些统计特征能反映出数据的整体分布。

  • Pandas主要统计特征函数
方法名 函数功能 所属库
sum() 计算数据样本的总和(按列计算) Pandas
mean() 计算数据样本的算术平均数 Pandas
var() 计算数据样本的方差 Pandas
stdO 计算数据样本的标准差 Pandas
corr() 计算数据样本的Spearman (Pearson)相关系数矩阵 Pandas
cov() 计算数据样本的协方差矩阵 Pandas
skew() 样本值的偏度(三阶矩) Pandas
kurtO 样本值的峰度(四阶矩) Pandas
describeQ 给出样本的基本描述(基本统计量如均值、标准差等) Pandas
  • 详解
    (1) sum
    □功能:计算数据样本的总和(按列计算)。
    □使用格式: D.sum()
    按列计算样本D的总和,样本D可为DataFrame或者Series
    (2) mean
    □功能:计算数据样本的算术平均数。
    □使用格式: D.mean()
    按列计算样本D的均值,样本D可为DataFrame或者Series
    (3) var
    □功能:计算数据样本的方差。
    □使用格式: D.var()
    按列计算样本D的均值,样本D可为DataFrame或者Series
    (4) std
    □功能:计算数据样本的标准差。
    □使用格式: D.std()
    按列计算样本D的均值,样本D可为DataFrame或者Series
    (5) corr
    □功能:计算数据样本的Spearman (Pearson)相关系数矩阵。
    □使用格式:D.corr(method-pearson')
    样本D可为DataFrame,返回相关系数矩阵,method参数为计算方法,支持pearson(皮尔森相关系数,默认选项)、kendall(肯德尔系数)、spearman(斯皮尔曼系数);
    S1.corr(S2,method-pearson')S1、S2均为 Series,这种格式指定计算两个Series之间的相关系数。
import pandas as pd 
D = pd.DataFrame ([range (1, 8) , range (2, 9) ] ) #生成样本D, —行为 1~7, —行为2~8
print("相关系数矩阵:")
print(D.corr (method='spearman')) #计算相关系数矩阵
S1=D.loc[0]# 提取第一行
S2=D.loc[1]# 提取第二行
print("S1、S2的相关系数:",S1.corr(S2,method= 'pearson'))#计算S1、S2的相关系数


(6)COV
□功能:计算数据样本的协方差矩阵。
□使用格式:D.cov()
样本D可为DataFrame,返回协方差矩阵;
S1.cov(S2)S1、S2均为Series,这种格式指定计算两个Series之间的协方差。

# 计算6x5随机矩阵的协方差矩阵
import pandas as pd 
import numpy as np
D = pd.DataFrame (np.random. randn (6, 5) ) #产生6X5随机矩阵
D.cov() #计算协方差矩阵
D[0] .cov(D[1] ) #计算第一列和第二列的协方差

0.3158824363527972
(7) skew/kurt
□功能:计算数据样本的偏度(三阶矩)/峰度(四阶矩)。
□使用格式:D.skew() / D.kurt()
计算样本D的偏度(三阶矩)/峰度(四阶矩)。样本D可为DataFrame或Series

# 计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)
import pandas as pd
import numpy as np
D = pd.DataFrame(np.random.randn(6, 5))  # 产生6x5随机矩阵
D.skew()
D.kurt()


(8) describe
□功能:直接给出样本数据的一些基本的统计量,包括均值、标准差、最大值、最小 值、分位数等。
□使用格式:D.describe()
括号里可以带一些参数,比如percentiles = [0.2, 0.4, 0.6, 0.8]就是指定只计算0.2、 0.4、0.6、0.8分位数,而不是默认的1/4、1/2、3/4分位数。

# 给出6x5随机矩阵的describe
import pandas as pd
import numpy as np
D = pd. DataFrame (np. random. randn ( 6, 5)) # 产生 6X5 随机矩阵 
D.describe()

拓展统计特征函数

除了上述基本的统计特征外,Pandas还提供了一些非常方便实用的计算统计特征的函数, 主要有累积计算(cum)和滚动计算(pd.rolling_)

  • Pandas累积统计特征函数
方法名 函数功能 所属库
cumsum() 依次给出前1、2、…、n个数的和 Pandas
cumprod() 依次给出前1、2、…、n个数的积 Pandas
cummax() 依次给出前1、2、…、n个数的最大值 Pandas
cummin() 依次给出前1、2、…、n个数的最小值 Pandas
  • Pandas累积统计特征函数()
方法名 函数功能 所属库
D.rolling().sum() 计算数据样本的总和(按列计算) Pandas
D.rolling().mean() 数据样本的算术平均数 Pandas
D.rolling().var() 计算数据样本的方差 Pandas
D.rolling().std() 计算数据样本的标准差 Pandas
D.rolling().corr() 计算数据样本的Spearman(Pearson)相关系数矩阵 Pandas
D.rolling().cov() 计算数据样本的协方差矩阵 Pandas
D.rolling().skew() 样本值的偏度(三阶矩) Pandas
D.rolling().kurt() 样本值的峰度(四阶矩) Pandas
import pandas as pd 
D=pd.Series (range (0, 20) ) #构造Series,内容为0~19共20个整数 
D.cumsum () #给出前n项和
D.rolling(2).sum()

统计作图函数

通过统计作图函数绘制的图表可以直观地反映出数据及统计量的性质及其内在规律,如 盒图可以表示多个样本的均值,误差条形图能同时显示下限误差和上限误差,最小二乘拟合 曲线图能分析两变量间的关系。

  • Python主要统计作图函数
作图函数名 作图函数功能 所属工具箱
plot() 绘制线性二维图,折线图 Matplotlib/Pandas
pie() 绘制饼型图 Matplotlib/Pandas
hist() 绘制二维条形直方图,可显示数据的分配情形 Matplotlib/Pandas
boxplot() 绘制样本数据的箱形图 Pandas
plot(logy = True) 绘制y轴的对数图形 Pandas
plot(yen = error) 绘制误差条形图 Pandas
import matplotlib.pyplot as plt #导入作图库
%matplotlib inline
plt.rcParams [ 'font.sans-serif' ] = ['SimHei' ] #用来正常显示中文标签
plt. rcParams [ 'axes.unicode_minus' ] = False #用来正常显示负号
plt.figure (figsize = (7, 5) ) #创建图像区域,指定比例
plt.show()

(1)plot
□功能:绘制线性二维图、折线图。
□使用格式:
plt.plot(x, y, S)
这是Matplotlib通用的绘图方式,绘制*对于x(即以x为横轴的二维图形),字符串参量S指定绘制时图形的类型、样式和颜色,常用的选项有:,b,为蓝色、T为红色、官为 绿色、6为圆圈、+为加号标记、-为实线、,-,为虚线。当x、y均为实数同维向量时,则描出点(x(i),y(f)),然后用直线依次相连。
D.plot(kind = 'box')
这里使用的是DataFrame或Series对象内置的方法作图,默认以Index为横坐标,每列数据为纵坐标自动作图,通过kind参数指定作图类型,支持line(线)、bar(条形)、barh、hist(直方图)、box(箱线图)、kde(密度图)和area、pie(饼图)等,同时也能够接受plt.plot()中接受的参数。因此,如果数据已经被加载为Pandas中的对象,那么以这种方式作图是比较简洁的。

# 在区间(0<=x<=2)绘制一条蓝色的正弦虚线,并在每个坐标点标上五角星
import matplotlib.pyplot as plt #导入作图库
%matplotlib inline
import numpy as np
x = np.linspace (0,2*np.pi, 50) #x坐标输入
y = np.sin (x) #计算对应x的正弦值
plt.plot (x, y ,'bp--') #控制图形格式为蓝色带星虚线,,显示正弦曲线 
plt.show()

(2) pie
□功能:绘制饼型图。
□使用格式:plt.pie(size)
使用Matplotlib绘制饼图,其中size是一个列表,记录各个扇形的比例。

import matplotlib.pyplot as plt #导入作图库
%matplotlib inline
# The slices will be ordered and plotted counter-clockwise.
labels = ' Frogs', 'Hogs', ' Dogs', 'Logs' , #定义标签
sizes = [15, 30, 45, 10] # 每一块的比例
colors = [ 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral' ] #每一块的颜色
explode = (0, 0.1, 0, 0) #突出显示,这里仅仅突出显示第二块(即'Hogs')
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',shadow=True, startangle=90)
plt .axis ('equal') #显示为圆(避免比例压缩为椭圆)
plt.show()

(3)hist
□功能:绘制二维条形直方图,可显示数据的分布情形。 
□使用格式:plt.hist(x, y)
其中,X是待绘制直方图的一维数组,y可以是整数,表示均匀分为"组;也可以是列表, 列表各个数字为分组的边界点(即手动指定分界点)。

import matplotlib.pyplot as plt #导入作图库
%matplotlib inline
import numpy as np
x = np. random. randn (1000) #1000个服从正态分布的随机数 
plt .hist (x, 10) #分成10组进行绘制直方图
plt.show()

(4)boxplot
□功能:绘制样本数据的箱形图。
□使用格式:D.boxplot() / D.plot(kind = 'box')
有两种比较简单的方式绘制D的箱形图,其中一种是直接调用DataFrame的boxplot()方法;另外一种是调用Series或者DataFrame的plot。方法,并用kind参数指定箱形图(box)。其中,盒子的上、下四分位数和中值处有一条线段。箱形末端延伸出去的直线称为须,表示盒外数据的长度。如果在须外没有数据,则在须的底部有一点,点的颜色与须的颜色相同。

import matplotlib.pyplot as plt  # 导入作图库
import numpy as np
import pandas as pd

%matplotlib inline
x = np.random.randn(1000)  #1000个服从正态分布的随机数
D = pd.DataFrame([x, x + 1]).T  #构造两歹4 的DataFrame
D.boxplot() #调用Series内置的作图方法画图,用kind参数指定箱形图box
plt.show()


(5)plot(logx = True) / plot(logy = True)
□功能:绘制x或'轴的对数图形。
□使用格式:D.plot(logx = True) / D.plot(logy = True)
对X轴(y轴)使用对数刻度(以10为底),y轴(X轴)使用线性刻度,进行plot函数绘图,D为 Pandas 的DataFrame或者Series

import matplotlib.pyplot as plt  # 导入作图库
import numpy as np
import pandas as pd

%matplotlib inline
plt. rcParams ['font.sans-serif' ] = [ 'SimHei' ] #用来正常显示中文标签 
plt. rcParams [ 'axes.unicode_minus'] = False #用来正常显示负号 
x = pd. Series (np.exp (np. arange (20) ) ) #原始数据
x.plot (label = u'原始数据图',legend = True)
plt.show()
x.plot (logy = True,label = u'原始数据图',legend = True) 
plt.show()


(6)plot(yerr = error)
□功能:绘制误差条形图。
□使用格式:D.plot(yerr = error)
绘制误差条形图。D为Pandas的DataFrame或Series,代表着均值数据列,而error则是误差列,此命令在y轴方向画出误差棒图;类似地,如果设置参数xerr = error,则在x轴 方向画出误差棒图。

import matplotlib.pyplot as plt  # 导入作图库
import numpy as np
import pandas as pd

%matplotlib inline
error = np. random. randn (10) #定义误差列
y = pd.Series (np. sin (np. arange (10) ) ) #均值数据列
y .plot (yerr = error) #绘制误差图
plt.show()

小结

数据质量分析要求我们拿到数据后先检测是否存在缺失值和异常值;数据特征分析要求我们在数据挖掘建模前,通过频率分布分析、对比分析、帕累托分析、周期性分析、相关性分析等方法,对采集的样本数据的特征规律进行分析,以了解数据的规律和趋势,为数据挖掘的后续环节提供支持。
在数据可视化中,由于主要使用Pandas作为数据探索和分析的工具,因此我们介绍的作图工具都是Matplotlib和Pandas结合使用。一方面,Matplotlib是作图工 具的基础,Pandas作图依赖于它;另一方面,Pandas作图有着简单直接的优势,因此,两者 相互结合,往往能够以最高的效率作出符合我们需要的图。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容