Python中用于数据探索的库主要是
Pandas(数据分析)统计分析函数 统计作图函数
Matplotlib(数据可视化)
基本统计特征函数
sum按列计算样本总和
mean计算样本的算数平均数
var样本的方差
std标准差
corr 计算spearman(Person)相关系数矩阵
cov协方差矩阵
skew样本偏值(三阶矩阵)
kurt样本峰度(四阶矩阵)
describe样本的基本描述(均值 标准差)
corr
#计算两个列向量的相关系数,采用Spearman方法
#生成样本D,一行为1~7 ,一行为2~8
D = pd.DataFrame([rang(1,8)],[range(2,9)])
#计算相关系数矩阵
D.corr(method = 'spearson')
#提取第一行
s1 = D.loc[0]
#提取第二行
s2 = D.loc[1]
#计算S1 S2的相关系数
s1.corr(s2,method='pearson')
cov
#计算数据样本的协方差矩阵
import numpy as np
import pandas as pd
#产生6×5的随机矩阵
D = pd.DataFrame(np.random.randn(6,5))
print(D)
#计算协方差矩阵
print(D.cov)
0 1 2 3 4
0 1.237153 -0.046697 0.376607 -0.127719 0.723038
1 -0.046697 1.186785 0.254628 0.929739 0.915108
2 0.376607 0.254628 0.795005 -0.192494 0.980395
3 -0.127719 0.929739 -0.192494 1.229316 0.128544
4 0.723038 0.915108 0.980395 0.128544 1.830946
Process finished with exit code 0
skew/kurt
#计算6×5随机矩阵的偏度(三阶矩)/峰度(四阶矩)
import pandas as pd
import numpy as np
D = pd.DataForame(np.random.randn(6,5))
print(D.kurt())
print(D.skew())
0 1.450550
1 -0.366297
2 -0.275504
3 -0.513684
4 1.114285
dtype: float64
0 3.017489
1 -0.343322
2 2.042636
3 0.920795
4 -0.157373
dtype: float64
descirbute
#6*5随机的descirbute
import numpy as np
import pandas as pd
D = pd.DataFrame(np.random.randn(6,5))
print(D.describe())
0 1 2 3 4
count 6.000000 6.000000 6.000000 6.000000 6.000000
mean 0.234195 0.054628 -0.210326 0.686747 0.045748
std 1.110422 0.810948 0.699316 0.858312 1.024418
min -0.943104 -0.995776 -1.171483 -0.306042 -0.961652
25% -0.422272 -0.386177 -0.349850 0.254772 -0.603531
50% -0.130463 -0.138085 -0.324408 0.445415 -0.378101
75% 0.755010 0.673340 -0.141632 1.027609 0.703376
max 2.078576 1.124775 0.997379 2.122794 1.607149
拓展统计特征函数
除了以上之外,pandas还提供了一些非常方便实用的计算统计特征函数,主要有:
累积计算(cum)
cum系列函数作为DataFrame或Series对象的方法而出现的,D.cumsum()
滚动计算(pd.rolling_)
rolling_是pandas的函数,不是DataFrame或Series的对象方法。
pd.rolling_mean(D,k):每k列计算一次均值,滚动计算。
绘制作图函数
在作图前,需要加载以下代码
#导入图像库
import matplotlib.pyplot as plt
#正常显示中文标签
plt.rcParams['font.sans-serif'] = ['simHei']
#用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
#创建图像区域,指定比例
plt.figure(figsize = (7,5))
plot
Matplotlib通用绘图方式
plt.plot(x,y,S)
S指定绘图时图形的类型,样式和颜色
b:bule r:red g:green o:圆圈 +:加号标记 -:实线 --:虚线
DataFrame或Series对象内置的方法作图
默认index为横坐标,数据为纵坐标
kind参数指定作图类型 line(线)bar(条形)barh、hist(直方图)
box(箱形图) kde(密度图) area、pie(饼状图)
#在0-2π绘制蓝色正弦虚线,每个坐标点上标上五角星
import numpy as np
import matplotlib.pyplot as plt
#x坐标输入
x = np.linspace(0,2*np.pi,50)
y = np.sin(x)
#绘制图形格式为蓝色带星虚线,显示正弦曲线
plt.plot(x,y,'bp--')
plt.show()
pie
绘制饼状图
plt.pie(size)
#通过向量[15,30,45,10]画饼,并且注释,第二部分分离
import matplotlib.pyplot as plt
#定义标签
labels = 'A','B','C','D'
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()
hist
Plt.hist(x,y)
x为待绘制一维数组,y可以为整数:均匀分为n组;也可以是列表,列表的各个数字为分组的边界点
import matplotlib.pyplot as plt
import numpy as np
#1000个服从正态分布的随机数
x = np.random.randn(1000)
#分成十组进行绘制
plt.hist(x,10)
plt.show()
boxplot
箱形图
D.boxplot()/D.plot(kind = ‘box’)
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
#调用serises内置的作图方法画图,用kind参数指定象形图box
D.plot(kind='box')
plt.show()
plot(logx=True)/D.plot(logy=True)
绘制x或者y轴的对数图形,对x,y轴使用对数刻度(10为底),x y 轴使用线性刻度,进行plot函数绘图,D为pandas的DataFrame或Series
# -- coding: gbk --
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['simHei']
#用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
import numpy as np
import pandas as pd
#原始数据
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()
plot(yerr=error)
D.plot(yerr = error)绘制误差条形图
D为pandas的DataFrame或Series,代表均值数列,error则是误差列,(yerr=error)为在y轴绘制误差棒图(xerr=error)为在x轴绘制误差棒图
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
#定义误差列
error = np.random.randn(10)
#均值数据列
y = pd.Series(np.sin(np.arange(10)))
#绘制误差图
y.plot(yerr=error)
plt.show()