python 数据挖掘(4)-- 主要数据分析函数

基本统计函数

(1) sum

功能:计算数据样本的总和

使用格式: D.sum() 样本D 可为 Dataframe 或者 Series

(2)mean

功能:计算平均数

使用格式:D.mean() 样本D 可为Dataframe 或者 Series

(3)var

功能:计算数据样本的方差

使用格式:D.var() 样本D 可为Dataframe 或者 Series

(4)std

功能:计算数据样本的标准差

使用格式:D.std() 样本D 可为 Dataframe 或者 Series

(5)corr

功能:计算数据样本的 Spearman (Pearson)相关系数矩阵

使用格式:D.corr(method = 'pearson')

#-*- coding:utf-8 -*-
import pandas as pd
# 生成样本 
D = pd.DataFrame([range(1,8),range(2,9)])
print D.corr(method = 'spearman')

s1 = D.loc[0] # 提取第一行
s2 = D.loc[1] # 提取第二行
print s1.corr(s2,method = 'pearson')

(6)cov

功能:计算数据样本的协方差    cov(X,Y) = E(XY) - E(X)E(Y) 相关系数就是 cov(X,Y)/(std(X)*std(Y))

使用格式: D.cov()

#-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
# 产生 6 * 5 随机矩阵
D = pd.DataFrame(np.random.randn(6,5))
# 协方差矩阵 是一个实对称矩阵
print D.cov()

# 计算第 0 列和第 1 列协方差
print D[0].cov(D[1])

(7) skew 和 kurt 分别表示偏度和梯度计算

偏度反应的是变量分布相对于期望值的不对称性,如果为正(正偏),表示在期望值右侧的尾部较长,也就是小于期望值的样本比较集中,负偏反之

峰度反应的是在峰值处的数据峰度高低的特性,为正则为尖峰态,为负则为低峰态。峰度说明如下

#-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
# 产生 6 * 5 随机矩阵
D = pd.DataFrame(np.random.randn(6,5))

# 偏度
print D.skew()

# 峰度
print D.kurt()

(8)describe

功能:直接给出样本数据的一些基本统计量

使用格式: D.describe()

pandas 累计统计特征函数

cumsum()        依次给出前 1、2、3 .. n 个数的和 (在帕累托图中用过)

cumprod()       依次给出前 1、2、3 .. n 个数的积

cummax()        依次给出前 1、2、3 .. n 个数的最大值

cummin()         依次给出前 1、2、3 .. n 个数的最小值

rolling_sum()  滚动计算操作,给出给定的窗口中几个数据的和(rolling_mean,rolling_var ... 懒得一一列举了,用法是 pd.rolling_sum(D,n)

#-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
# 产生 6 * 5 随机矩阵
D = pd.Series(range(10))

# 给出依次相加值
print D.cumsum()

# 给出相邻两个数据相加值
print pd.rolling_sum(D,2)

 

作图函数

(1)plot

功能:绘制线性二维图,折线图

使用格式:plt.plot(x,y,S) 绘制y为纵轴,x为横轴的二维图形,S 为样式

常用的选项:'b' 蓝色,'r' 红色,'g' 绿色,'o' 为圆圈,'-'为实线, '--'为虚线

还支持 DataFrame 和 Series 对象内置的方法作图, D.plot(kind = 'box') 默认以 index 为横坐标,每列数据为纵坐标自动作图

支持 line (线) 、 bar(条形)、hist(直方图)、box(箱线图)、kde(密度图)、pie(饼图) 等。。。

#-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# x 坐标输入,x = [0,2pi],切成 50 段
x = np.linspace(0,2*np.pi,50)
y = np.sin(x)
# b 是蓝色 -- 是虚线 p 是方点
plt.plot(x,y,'bp--')
plt.show()

 

(2) pie

功能:绘制饼图

使用格式:plt.pie(size)  size 是一个列表,记录各个扇形的比例

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
# 定义标签
labels = 'Frogs','Hogs','Dogs','Logs'
# 每一块的比例
sizes = [15,30,45,10]
# 定义每一块的颜色
colors = ['yellowgreen','gold','lightskyblue','lightcoral']
# 突出显示,突出显示第二块
explode = (0,0.1,0,0)
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 可以是整数,指定分成多少组; 也可以是列表,手工指定各组的分界点。

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

# 1000 个服从正态分布的随机数
x = np.random.randn(1000)
# 分为 10 组
plt.hist(x,10)
plt.show()

(4)boxplot

功能:绘制样本数据的箱线图

使用格式: D.boxplot()  / D.plot(kind = 'box')

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 1000 个服从正态分布的随机数
x = np.random.randn(1000)
# 构造两列的 DataFrame
D = pd.DataFrame([x,x+1]).T
D.plot(kind = 'box')
plt.show()

(5)plot(logx = True) / plot(logy = True)

功能:绘制 x 或 y 轴的对数图

使用格式: D.plot(logx = True) / D.plot(logy = True)

对 x 轴(y 轴)使用对数刻度,以 10 为底,D 为 DataFrame 或者 Series

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
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()

猜你喜欢

转载自blog.csdn.net/qq_32023541/article/details/81530315