当前位置:首页 » 编程语言 » python求协方差矩阵

python求协方差矩阵

发布时间: 2023-01-14 03:24:18

python数据分析之主成分分析

主成分分析,又称PCA,是指将多个变量通过线性变换以后选出较少个重要变量的一种多元统计方法。

主成分分析计算步骤:

1、计算协方差矩阵

2、求出相应的特征值及相应的正交化单位向量

3、选择主成分

4、计算主成分载荷

5、计算主成分得分

⑵ 怎么用python表示出二维高斯分布函数,mu表示均值,sigma表示协方差矩阵,x表示数据点

clear
closeall
%%%%%%%%%%%%%%%%%%%%%%%%%生成实验数据集

rand('state',0)
sigma_matrix1=eye(2);
sigma_matrix2=50*eye(2);

u1=[0,0];
u2=[30,30];
m1=100;
m2=300;%样本数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1数据集
Y1=multivrandn(u1,m1,sigma_matrix1);
Y2=multivrandn(u2,m2,sigma_matrix2);

scatter(Y1(:,1),Y1(:,2),'bo')
holdon
scatter(Y2(:,1),Y2(:,2),'r*')
title('SM1数据集')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2数据集
u11=[0,0];
u22=[5,5];
u33=[10,10];
u44=[15,15];
m=600;
sigma_matrix3=2*eye(2);
Y11=multivrandn(u11,m,sigma_matrix3);
Y22=multivrandn(u22,m,sigma_matrix3);
Y33=multivrandn(u33,m,sigma_matrix3);
Y44=multivrandn(u44,m,sigma_matrix3);
figure(2)
scatter(Y11(:,1),Y11(:,2),'bo')
holdon
scatter(Y22(:,1),Y22(:,2),'r*')
scatter(Y33(:,1),Y33(:,2),'go')
scatter(Y44(:,1),Y44(:,2),'c*')
title('SM2数据集')
end
functionY=multivrandn(u,m,sigma_matrix)
%%生成指定均值和协方差矩阵的高斯数据
n=length(u);
c=chol(sigma_matrix);
X=randn(m,n);
Y=X*c+ones(m,1)*u;
end

⑶ 协方差矩阵的理解

  为了便于理解和验证,可以参考一下, http://www.ab126.com/shuxue/2788.html 所提供的协方差的在线计算器。

  统计里最基本的概念就是样本的均值,方差,或者再加个标准差。假定有一个含有n个样本的集合X={X1,…,Xn},依次给出这些概念的公式描述:

  很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的。

  而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。

  看出方差与标准差关系没有?
  为什么除以n-1而不是除以n? 这个称为贝塞尔修正。在统计学中样本的均差多是除以自由度(n-1),它的意思是样本能自由选择的程度,当选到只剩一个时,它不可能再有自由了,所以自由度是(n-1)。这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。

  下面采用Python演算一下:
  参考: https://blog.csdn.net/lyl771857509/article/details/79439184

计算步骤:
求和: 1+2+3+4=10
平均值: =2.5

方差:

  上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,这个时候怎么办?
  协方差该出场了!
  协方差可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何?

换种说法:
  协方差是度量各个维度偏离其均值的程度。协方差的值如果为正值,则说明两者是正相关的,结果为负值就说明负相关的,如果为0,也是就是统计上说的“相互独立”。
与方差对比:
  方差是用来度量单个变量“自身变异”大小的总体参数,方差越大表明该变量的变异越大
  协方差是用来度量两个变量之间“协同变异”大小的总体参数,即二个变量相互影响大小的参数,协方差的绝对值越大,则二个变量相互影响越大。

  采用协方差在线计算器练习一下:
    输入值 X=1 ,5 ,6
    输入值 Y=4, 2, 9

计算步骤:

  在分析协方差矩阵之前有必要搞清矩阵维数的概念!以女孩子找对象为例,一般关心几个点

这里是5个维数。如果同时有几个男孩子备选,则会形成多个行,有对比才有会伤害。

  可以这样形象理解:在女孩心中,多个男孩形成一个个行向量,即多个样本。
  另外,再回忆一下系数矩阵的来历。含有n个未知量,由m个方程组成线性方程组的一般形式为:

将系数按它们的位置排列形成一个表格:

这个表格就是方程组的系数矩阵,它的维数是由未知量个数即n来决定的。
  下面介绍的协方差矩阵仅与维数有关,和样本数量无关。

  
设 为n维随机变量,称矩阵

为n维随机变量 的协方差矩阵(covariance matrix),也记为 ,其中

  为了简易起见,先举一个简单的三变量的例子,假设数据集有{x,y,z}三个维度,

则协方差矩阵为:

更进一步:
矩阵

其协方差矩阵为

还是有点抽象???
那就结合实例来理解,可能更方便一些。
假定有下列矩阵:

我们来计算一下协方差矩阵。

结果如下:

可以看出

验算一下:

输入值 X= [1, 5, 6]
输入值 Y= [4 ,3 , 9]

再验算一下:

输入值 X= [4 ,3 , 9]
输入值 Y= [4 ,7 , 2]

⑷ python(pandas模块)

1.什么是pandas? numpy模块和pandas模块都是用于处理数据的模块。 numpy主要用于针对数组进行统计计算,处理数字数据比较方便。 pandas除了可以处理数字数据,还可...

⑸ python实现资产配置(2)--Blacklitterman 模型

在 python实现资产配置(1)----Markowitz 投资组合模型 中, 我们已经见过如何使用Markowitz求得最优资产配比. 这是一种在已知未来各资产的概率分布,然后再求解的方法.

Markowitz模型输入参数包括历史数据法和情景分析法两种方法,情景分析法的缺点是主观因素,随意性太强,因此使用历史数据法, 将资产的均值和协方差输入模型是比较常见的作法. 不过, 不足之处很明显: 未来的资产收益率分布不一定与过去相同. 此外, Markowitz 模型结果对输入参数过于敏感.

Black-Litterman模型就是基于此的改进. 其核心思想是将投资者对大类资产的观点 (主观观点) 与市场均衡收益率 (先验预期收益率)相结合,从而形成新的预期收益率(后验预期收益率). 这里的先验预期收益率的分布可以是贝叶斯推断中的先验概率密度函数的多元正态分布形式,投资者的主观观点就是贝叶斯推断中的似然函数(可以看作新的信息, 因为做出主观判断必然是从外界获取得到了这些资产的收益率变化信息), 而相应的, 后验预期收益率也可以从后验概率密度函数中得到. 具体的推导可以看我的这篇文章: 从贝叶斯定理到贝叶斯推断 .

BL模型的求解步骤包括下面几步:

(1) 使用历史数据估计预期收益率的协方差矩阵作为先验概率密度函数的协方差.

(2) 确定市场预期之收益率向量, 也就是先验预期收益之期望值. 作为先验概率密度函数的均值. 或者使用现有的期望值和方差来反推市场隐含的均衡收益率(Implied Equilibrium Return Vector), 不过在使用这种方法时, 需要知道无风险收益率 的大小.

(3) 融合投资人的个人观点,即根据历史数据(看法变量的方差)和个人看法(看法向量的均值)

(4) 修正后验收益.

是均衡收益率协方差的调整系数,可以根据信心水平来判断. 是历史资产收益率的协方差矩阵, P是投资者的观点矩阵, 是似然函数(即投资者观点函数)中的协方差矩阵,其值为 的对角阵, 是先验收益率的期望值.

(5) 投资组合优化: 将修正后的期望值与协方差矩阵即 重新代入Markowitz投资组合模型求解.

(1)定义求解函数,输入为投资者观点P,Q以及目前资产的市场收益率矩阵,输出为后验的市场收益率和协方差矩阵.

(2) 实列分析
我们继续研究 python实现资产配置(1)----Markowitz 投资组合模型 中的五支股票: 白云机场, 福建高速, 华夏银行, 生益科技和浙能电力. 假设现在分析师的观点为:

获取股票数据, 并且获得后验的均值和方差:

这时候,已经可以使用Markowitz模型进行资产的配置. 定义新的函数blminVar以求解资产配置权重. 该函数的输入变量为blacklitterman函数的输出结果, 以及投资人的目标收益率goalRet.假设目标收益率为年化70%,则goalRet = 0.7:

输出结果为:

0-5分别对应上面的五只股票.

⑹ 主成分分析(PCA)

PCA算法的主要步骤是:
(1) 对向量X进行去中心化

(2) 计算向量X的协方差矩阵,自由度可以选择0或1

(3)计算协方差矩阵的特征值和特征向量

(4)选取最大的k个特征值及其特征向量

(5)用X与特征向量相乘

python实现:

from sklearn.datasets import load_iris

import numpy as np

def pca(X, k):

    X = X - X.mean(axis=0)

    X_cov = np.cov(X.T, ddof = 0)

    eigenvalues, eigenvectors = eig(X_cov)

    klarge_index = eigenvalues.argsort()[-k:][::-1]

    k_eigenvectors = eigenvectors[klarge_index]

    return np.dor(X, k_eigenvectors.T)

    iris = load_iris()

    X = iris.data

    k = 2

    X_pca = pca(X, k)

⑺ excel相关系数矩阵怎么解读

excel相关系数矩阵是由一组变量相互之间的相关系数构成的一张表。相关系数矩阵,那么要求得协方差矩阵。就用Excel和python来分别求得协方差矩阵和相关系数矩阵。相关系数和协方差—excel教程化学合成实验中经常需要考察压力随温度的变化情况。

⑻ 如何用python实现Markowitz投资组合优化

0.导入需要的包import pandas as pd
import numpy as np
import statsmodels.api as sm #统计运算
import scipy.stats as scs #科学计算
import matplotlib.pyplot as plt #绘图

1.选取几只感兴趣的股票
000413 东旭光电,000063 中兴通讯,002007 华兰生物,000001 平安银行,000002 万科A
并比较一下数据(2015-01-01至2015-12-31)
In[1]:
stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']
noa = len(stock_set)
df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])
data = df['close']
#规范化后时序数据
(data/data.ix[0]*100).plot(figsize = (8,5))
Out[1]:

2.计算不同证券的均值、协方差
每年252个交易日,用每日收益得到年化收益。计算投资资产的协方差是构建资产组合过程的核心部分。运用pandas内置方法生产协方差矩阵。
In [2]:
returns = np.log(data / data.shift(1))
returns.mean()*252
Out[2]:

000413.XSHE 0.184516
000063.XSHE 0.176790
002007.XSHE 0.309077
000001.XSHE -0.102059
000002.XSHE 0.547441

In [3]:
returns.cov()*252
Out[3]:

3.给不同资产随机分配初始权重
由于A股不允许建立空头头寸,所有的权重系数均在0-1之间
In [4]:
weights = np.random.random(noa)
weights /= np.sum(weights)
weights
Out[4]:

array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])

4.计算预期组合年化收益、组合方差和组合标准差
In [5]:
np.sum(returns.mean()*weights)*252
Out[5]:

0.21622558669017816

In [6]:
np.dot(weights.T, np.dot(returns.cov()*252,weights))
Out[6]:

0.23595133640121463

In [7]:
np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))
Out[7]:

0.4857482232609962

5.用蒙特卡洛模拟产生大量随机组合
进行到此,我们最想知道的是给定的一个股票池(证券组合)如何找到风险和收益平衡的位置。
下面通过一次蒙特卡洛模拟,产生大量随机的权重向量,并记录随机组合的预期收益和方差。
In [8]:
port_returns = []
port_variance = []
for p in range(4000):
weights = np.random.random(noa)
weights /=np.sum(weights)
port_returns.append(np.sum(returns.mean()*252*weights))
port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))
port_returns = np.array(port_returns)
port_variance = np.array(port_variance)
#无风险利率设定为4%
risk_free = 0.04
plt.figure(figsize = (8,4))
plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')
plt.grid(True)
plt.xlabel('excepted volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[8]:

6.投资组合优化1——sharpe最大
建立statistics函数来记录重要的投资组合统计数据(收益,方差和夏普比)
通过对约束最优问题的求解,得到最优解。其中约束是权重总和为1。
In [9]:
def statistics(weights):
weights = np.array(weights)
port_returns = np.sum(returns.mean()*weights)*252
port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))
return np.array([port_returns, port_variance, port_returns/port_variance])
#最优化投资组合的推导是一个约束最优化问题
import scipy.optimize as sco
#最小化夏普指数的负值
def min_sharpe(weights):
return -statistics(weights)[2]
#约束是所有参数(权重)的总和为1。这可以用minimize函数的约定表达如下
cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})
#我们还将参数值(权重)限制在0和1之间。这些值以多个元组组成的一个元组形式提供给最小化函数
bnds = tuple((0,1) for x in range(noa))
#优化函数调用中忽略的唯一输入是起始参数列表(对权重的初始猜测)。我们简单的使用平均分布。
opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)
opts
Out[9]:
status: 0
success: True
njev: 4
nfev: 28
fun: -1.1623048291871221
x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])
message: 'Optimization terminated successfully.'
jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])
nit: 4

得到的最优组合权重向量为:
In [10]:
opts['x'].round(3)
Out[10]:
array([-0. , 0. , 0.164, -0. , 0.836])

sharpe最大的组合3个统计数据分别为:
In [11]:
#预期收益率、预期波动率、最优夏普指数
statistics(opts['x']).round(3)
Out[11]:

array([ 0.508, 0.437, 1.162])

7.投资组合优化2——方差最小
接下来,我们通过方差最小来选出最优投资组合。
In [12]:
#但是我们定义一个函数对 方差进行最小化
def min_variance(weights):
return statistics(weights)[1]
optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
optv
Out[12]:
status: 0
success: True
njev: 7
nfev: 50
fun: 0.38542969450547221
x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])
message: 'Optimization terminated successfully.'
jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])
nit: 7

方差最小的最优组合权重向量及组合的统计数据分别为:
In [13]:
optv['x'].round(3)
Out[13]:
array([ 0.115, 0. , 0.21 , 0.353, 0.322])

In [14]:
#得到的预期收益率、波动率和夏普指数
statistics(optv['x']).round(3)
Out[14]:
array([ 0.226, 0.385, 0.587])

8.组合的有效前沿
有效前沿有既定的目标收益率下方差最小的投资组合构成。
在最优化时采用两个约束,1.给定目标收益率,2.投资组合权重和为1。
In [15]:
def min_variance(weights):
return statistics(weights)[1]
#在不同目标收益率水平(target_returns)循环时,最小化的一个约束条件会变化。
target_returns = np.linspace(0.0,0.5,50)
target_variance = []
for tar in target_returns:
cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})
res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
target_variance.append(res['fun'])
target_variance = np.array(target_variance)

下面是最优化结果的展示。
叉号:构成的曲线是有效前沿(目标收益率下最优的投资组合)
红星:sharpe最大的投资组合
黄星:方差最小的投资组合
In [16]:
plt.figure(figsize = (8,4))
#圆圈:蒙特卡洛随机产生的组合分布
plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')
#叉号:有效前沿
plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')
#红星:标记最高sharpe组合
plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)
#黄星:标记最小方差组合
plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)
plt.grid(True)
plt.xlabel('expected volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')

⑼ PCA(主成分分析)python实现

回顾了下PCA的步骤,并用python实现。深刻的发现当年学的特征值、特征向量好强大。

PCA是一种无监督的学习方式,是一种很常用的降维方法。在数据信息损失最小的情况下,将数据的特征数量由n,通过映射到另一个空间的方式,变为k(k<n)。

这里用一个2维的数据来说明PCA,选择2维的数据是因为2维的比较容易画图。
这是数据:

画个图看看分布情况:

协方差的定义为:

假设n为数据的特征数,那么协方差矩阵M, 为一个n n的矩阵,其中Mij为第i和第j个特征的协方差,对角线是各个特征的方差。
在我们的数据中,n=2,所以协方差矩阵是2
2的,
通过numpy我们可以很方便的得到:

得到cov的结果为:
array([[ 0.61655556, 0.61544444],
[ 0.61544444, 0.71655556]])

由于我们之前已经做过normalization,因此对于我们来说,
这个矩阵就是 data*data的转置矩阵。

得到结果:
matrix([[ 5.549, 5.539],
[ 5.539, 6.449]])

我们发现,其实协方差矩阵和散度矩阵关系密切,散度矩阵 就是协方差矩阵乘以(总数据量-1)。因此他们的 特征根 特征向量 是一样的。这里值得注意的一点就是,散度矩阵是 SVD奇异值分解 的一步,因此PCA和SVD是有很大联系的,他们的关系这里就不详细谈了,以后有机会再写下。

用numpy计算特征根和特征向量很简单,

但是他们代表的意义非常有意思,让我们将特征向量加到我们原来的图里:

其中红线就是特征向量。有几点值得注意:

蓝色的三角形就是经过坐标变换后得到的新点,其实他就是红色原点投影到红线、蓝线形成的。

得到特征值和特征向量之后,我们可以根据 特征值 的大小,从大到小的选择K个特征值对应的特征向量。
这个用python的实现也很简单:

从eig_pairs选取前k个特征向量就行。这里,我们只有两个特征向量,选一个最大的。

主要将原来的数据乘以经过筛选的特征向量组成的特征矩阵之后,就可以得到新的数据了。

output:

数据果然变成了一维的数据。
最后我们通过画图来理解下数据经过PCA到底发生了什么。

绿色的五角星是PCA处理过后得到的一维数据,为了能跟以前的图对比,将他们的高度定位1.2,其实就是红色圆点投影到蓝色线之后形成的点。这就是PCA,通过选择特征根向量,形成新的坐标系,然后数据投影到这个新的坐标系,在尽可能少的丢失信息的基础上实现降维。

通过上述几步的处理,我们简单的实现了PCA第一个2维数据的处理,但是原理就是这样,我们可以很轻易的就依此实现多维的。

用sklearn的PCA与我们的pca做个比较:

得到结果:

用我们的pca试试

得到结果:

完全一致,完美~
值得一提的是,sklearn中PCA的实现,用了部分SVD的结果,果然他们因缘匪浅。

⑽ Python pandas用法

在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
使用下面格式约定,引入pandas包:

pandas有两个主要数据结构:Series和DataFrame。

Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。

pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。

Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。

DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。

如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:

数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:

重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量; 默认True,生成新的对象,False时,新旧相等不复制。

删除指定索引 :默认返回的是一个新对象。
.drop() :能够删除Series和DataFrame指定行或列索引。
删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。
如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。
增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。

在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结

适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。
.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。
.sum() :计算各列数据的和
.count() :非NaN值的数量
.mean( )/.median() :计算数据的算术平均值、算术中位数
.var()/.std() :计算数据的方差、标准差
.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。
.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。
.min()/.max() :计算数据的最小值、最大值
.diff() :计算一阶差分,对时间序列很有效
.mode() :计算众数,返回频数最高的那(几)个
.mean() :计算均值
.quantile() :计算分位数(0到1)
.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集
适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。
.unique() :返回一个Series中的唯一值组成的数组。
.value_counts() :计算一个Series中各值出现的频率。
.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。

在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。

在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。

替换值
.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。

删除重复数据

利用函数或字典进行数据转换

df.head():查询数据的前五行
df.tail():查询数据的末尾5行
pandas.cut()
pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。
pandas.date_range() 返回一个时间索引
df.apply() 沿相应轴应用函数
Series.value_counts() 返回不同数据的计数值
df.aggregate()
df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用
numpy.zeros()

热点内容
java默认类 发布:2025-07-14 16:51:03 浏览:278
术后解压 发布:2025-07-14 16:39:47 浏览:660
手机版我的世界怎么输入服务器ip 发布:2025-07-14 16:25:21 浏览:721
pythonsysstdout 发布:2025-07-14 16:15:29 浏览:196
ef数据库更新模型 发布:2025-07-14 16:14:05 浏览:411
少儿编程教育平台 发布:2025-07-14 16:13:54 浏览:301
相关存储格式图片 发布:2025-07-14 16:13:50 浏览:144
搭建酒店服务器 发布:2025-07-14 16:13:49 浏览:133
下载pythonmysqldb 发布:2025-07-14 16:05:43 浏览:977
生化危机5配置要求怎么样 发布:2025-07-14 15:38:56 浏览:301