Pandas统计计算
基本的统计方法
| Method | Description | 
|---|---|
| count | Number of non-NA values | 
| describe | Compute set of summary statistics for Series or each DataFrame column | 
| min,max | Compute minimum and maximum values | 
| argmin,argmax | Compute index locations (integers) at which minimum or maximum value obtained, respectively | 
| idxmin,idxmax | Compute index labels at which minimum or maximum value obtained, respectively | 
| quantile | Compute sample quantile ranging from 0 to 1 | 
| sum | Sum of values | 
| mean | Mean of values | 
| median | Arithmetic median (50% quantile) of values | 
| mad | Mean absolute deviation from mean value | 
| prod | Product of all values | 
| var | Sample variance of values | 
| std | Sample standard deviation of values | 
| skew | Sample skewness (third moment) of values | 
| kurt | Sample kurtosis (fourth moment) of values | 
| cumsum | Cumulative sum of values | 
| cummin,cummax | Cumulative minimum or maximum of values, respectively | 
| cumprod | Cumulative product of values | 
| diff | Compute First arithmetic diference (useful for time series) | 
| pct_change | Compute percent changes | 
| 参数 | 描述 | 
|---|---|
| axis | 默认axis=0沿行统计,设置axis=1沿列统计 | 
| skipna | 默认skipna=True忽略NaN值,skipna=False时不忽视 | 
| level | 用于多层索引 | 
#统计相加
sum(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
#平均值
mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
#返回索引值
idxmax(axis=0, skipna=True)
#累加
cumsum(axis=None, skipna=True, *args, **kwargs)
#统计描述,默认percentiles=[.25, .5, .75]三个分位数
describe(percentiles=None, include=None, exclude=None)
In [1]: import pandas as pd
In [2]: import numpy as np
In [4]: df = pd.DataFrame([[np.nan,3],[3.5,np.nan],[4,5],[np.nan,5.5]],
                          index=list('abcd'),columns=['one','two'])
In [5]: df
Out[5]:
   one  two
a  NaN  3.0
b  3.5  NaN
c  4.0  5.0
d  NaN  5.5
#默认axis=0,沿行统计
In [6]: df.sum()
Out[6]:
one     7.5
two    13.5
dtype: float64
In [7]: df.sum(axis=1)
Out[7]:
a    3.0
b    3.5
c    9.0
d    5.5
dtype: float64
#skipna=False表示有np.nan值时跳过不统计
In [8]: df.mean(axis=1, skipna=False)
Out[8]:
a    NaN
b    NaN
c    4.5
d    NaN
dtype: float64
#idxmax()返回最大值的索引,默认axis=0
In [9]: df.idxmax()
Out[9]:
one    c
two    d
dtype: object
In [10]: df.idxmax(axis=1)
Out[10]:
a    two
b    one
c    two
d    two
dtype: object
#累加,默认axis=0
In [11]: df.cumsum()
Out[11]:
   one   two
a  NaN   3.0
b  3.5   NaN
c  7.5   8.0
d  NaN  13.5
In [12]: df.cumsum(axis=1)
Out[12]:
   one  two
a  NaN  3.0
b  3.5  NaN
c  4.0  9.0
d  NaN  5.5
#统计描述
In [13]: df.describe()
Out[13]:
            one       two
count  2.000000  3.000000
mean   3.750000  4.500000
std    0.353553  1.322876
min    3.500000  3.000000
25%    3.625000  4.000000
50%    3.750000  5.000000
75%    3.875000  5.250000
max    4.000000  5.500000
In [16]: obj = pd.Series(['a','a','b','c']*4)
In [17]: obj
Out[17]:
0     a
1     a
2     b
3     c
4     a
5     a
6     b
7     c
8     a
9     a
10    b
11    c
12    a
13    a
14    b
15    c
dtype: object
In [18]: obj.describe()
Out[18]:
count     16
unique     3
top        a
freq       8
dtype: object
相关性和协方差
#增长率
pct_change(
    periods=1,
    fill_method='pad',
    limit=None,
    freq=None,
    **kwargs,
)
#相关系数(pearson)
corr(method='pearson', min_periods=1)
corrwith(other, axis=0, drop=False, method='pearson')
#协方差
cov(min_periods=None)
In [25]: volumn = pd.read_pickle('D:\个人文件\学习资料\Python\利用Python进行数
    ...: 据分析\datasets\examples\yahoo_volume.pkl')
In [26]: price
Out[26]:
                  AAPL        GOOG         IBM       MSFT
Date
2010-01-04   27.990226  313.062468  113.304536  25.884104
2010-01-05   28.038618  311.683844  111.935822  25.892466
2010-01-06   27.592626  303.826685  111.208683  25.733566
2010-01-07   27.541619  296.753749  110.823732  25.465944
2010-01-08   27.724725  300.709808  111.935822  25.641571
...                ...         ...         ...        ...
2016-10-17  117.550003  779.960022  154.770004  57.220001
2016-10-18  117.470001  795.260010  150.720001  57.660000
2016-10-19  117.120003  801.500000  151.259995  57.529999
2016-10-20  117.059998  796.969971  151.520004  57.250000
2016-10-21  116.599998  799.369995  149.630005  59.660000
[1714 rows x 4 columns]
In [27]: volumn
Out[27]:
                 AAPL      GOOG       IBM      MSFT
Date
2010-01-04  123432400   3927000   6155300  38409100
2010-01-05  150476200   6031900   6841400  49749600
2010-01-06  138040000   7987100   5605300  58182400
2010-01-07  119282800  12876600   5840600  50559700
2010-01-08  111902700   9483900   4197200  51197400
...               ...       ...       ...       ...
2016-10-17   23624900   1089500   5890400  23830000
2016-10-18   24553500   1995600  12770600  19149500
2016-10-19   20034600    116600   4632900  22878400
2016-10-20   24125800   1734200   4023100  49455600
2016-10-21   22384800   1260500   4401900  79974200
[1714 rows x 4 columns]
#计算与上一个周期值的偏差率:(现期-基期)/基期
In [28]: returns=price.pct_change()
In [29]: returns
Out[29]:
                AAPL      GOOG       IBM      MSFT
Date
2010-01-04       NaN       NaN       NaN       NaN
2010-01-05  0.001729 -0.004404 -0.012080  0.000323
2010-01-06 -0.015906 -0.025209 -0.006496 -0.006137
2010-01-07 -0.001849 -0.023280 -0.003462 -0.010400
2010-01-08  0.006648  0.013331  0.010035  0.006897
...              ...       ...       ...       ...
2016-10-17 -0.000680  0.001837  0.002072 -0.003483
2016-10-18 -0.000681  0.019616 -0.026168  0.007690
2016-10-19 -0.002979  0.007846  0.003583 -0.002255
2016-10-20 -0.000512 -0.005652  0.001719 -0.004867
2016-10-21 -0.003930  0.003011 -0.012474  0.042096
[1714 rows x 4 columns]
#tail()最后的五条数据,head()开始的五条数据
In [30]: returns.tail()
Out[30]:
                AAPL      GOOG       IBM      MSFT
Date
2016-10-17 -0.000680  0.001837  0.002072 -0.003483
2016-10-18 -0.000681  0.019616 -0.026168  0.007690
2016-10-19 -0.002979  0.007846  0.003583 -0.002255
2016-10-20 -0.000512 -0.005652  0.001719 -0.004867
2016-10-21 -0.003930  0.003011 -0.012474  0.042096
#corr()相关系数
In [31]: returns['MSFT'].corr(returns['IBM'])
Out[31]: 0.49976361144151144
#cov()协方差
In [32]: returns['MSFT'].cov(returns['IBM'])
Out[32]: 8.870655479703546e-05
In [33]: returns.MSFT.corr(returns.IBM)
Out[33]: 0.49976361144151144
#相关矩阵
In [34]: returns.corr()
Out[34]:
          AAPL      GOOG       IBM      MSFT
AAPL  1.000000  0.407919  0.386817  0.389695
GOOG  0.407919  1.000000  0.405099  0.465919
IBM   0.386817  0.405099  1.000000  0.499764
MSFT  0.389695  0.465919  0.499764  1.000000
#协方差矩阵
In [35]: returns.cov()
Out[35]:
          AAPL      GOOG       IBM      MSFT
AAPL  0.000277  0.000107  0.000078  0.000095
GOOG  0.000107  0.000251  0.000078  0.000108
IBM   0.000078  0.000078  0.000146  0.000089
MSFT  0.000095  0.000108  0.000089  0.000215
#与具体的某个对象的相关性系数
In [36]: returns.corrwith(returns['IBM'])
Out[36]:
AAPL    0.386817
GOOG    0.405099
IBM     1.000000
MSFT    0.499764
dtype: float64
Pandas唯一性\计数\隶属关系函数
#唯一性
unique()
#计数
value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True,)
#隶属关系判断
isin(values)
#获取匹配获取索引值
pd.Index.get_indexer(self, target, method=None, limit=None, tolerance=None)
In [37]: obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
In [38]: obj
Out[38]:
0    c
1    a
2    d
3    a
4    a
5    b
6    b
7    c
8    c
dtype: object
#判断obj的唯一性
In [39]: uniques = obj.unique()
In [40]: uniques
Out[40]: array(['c', 'a', 'd', 'b'], dtype=object)
#对obj进行计数
In [41]: obj.value_counts()
Out[41]:
a    3
c    3
b    2
d    1
dtype: int64
In [42]: pd.value_counts(obj.values,sort=False)
Out[42]:
b    2
c    3
a    3
d    1
dtype: int64
In [43]: obj
Out[43]:
0    c
1    a
2    d
3    a
4    a
5    b
6    b
7    c
8    c
dtype: object
#判断obj是否包含b或c元素
In [44]: mask = obj.isin(['b','c'])
In [45]: mask
Out[45]:
0     True
1    False
2    False
3    False
4    False
5     True
6     True
7     True
8     True
dtype: bool
In [46]:  obj[mask]
Out[46]:
0    c
5    b
6    b
7    c
8    c
dtype: object
#pd.Index(unique_vals)获取unique_vals的索引,get_indexer(to_match)获取to_match与unique_vals一样值的索引
In [47]: to_match = pd.Series(['c','a','b','b','c','a'])
In [48]: unique_vals = pd.Series(['c','b','a'])
In [49]: pd.Index(unique_vals).get_indexer(to_match)
Out[49]: array([0, 2, 1, 1, 0, 2], dtype=int64)
In [50]: data = pd.DataFrame({'Q1':[1,3,4,3,4],'Q2':[2,3,1,2,3],'Q3':[1,5,2,4,4]})
#对每一行或列的元素进行计数,返回唯一元素当做索引,统计数量作为值的表格
In [51]: data
Out[51]:
   Q1  Q2  Q3
0   1   2   1
1   3   3   5
2   4   1   2
3   3   2   4
4   4   3   4
In [52]: data.apply(pd.value_counts)
Out[52]:
    Q1   Q2   Q3
1  1.0  1.0  1.0
2  NaN  2.0  1.0
3  2.0  2.0  NaN
4  2.0  NaN  2.0
5  NaN  NaN  1.0
In [53]: data.apply(pd.value_counts).fillna(0)
Out[53]:
    Q1   Q2   Q3
1  1.0  1.0  1.0
2  0.0  2.0  1.0
3  2.0  2.0  0.0
4  2.0  0.0  2.0
5  0.0  0.0  1.0
Pandas统计计算的更多相关文章
- Pandas统计计算和描述
		Pandas统计计算和描述 示例代码: import numpy as np import pandas as pd df_obj = pd.DataFrame(np.random.randn(5,4 ... 
- Pandas的函数应用、层级索引、统计计算
		1.Pandas的函数应用 1.apply 和 applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random ... 
- 统计计算与R语言的资料汇总(截止2016年12月)
		本文在Creative Commons许可证下发布. 在fedora Linux上断断续续使用R语言过了9年后,发现R语言在国内用的人逐渐多了起来.由于工作原因,直到今年暑假一个赴京工作的机会与一位统 ... 
- sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)
		---sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計) ---2014-08-26 塗聚文(Geovin Du) CREATE PROCEDURE proc_Select_BookKi ... 
- Python基础-使用range创建数字列表以及简单的统计计算和列表解析
		1.使用函数 range() numbers = list(range[1,6]) print (numbers) 结果: [1,2,3,4,5] 使用range函数,还可以指定步长,例如,打印1~1 ... 
- CyclicBarrier开启多个线程进行计算,最后统计计算结果
		有一个大小为50000的数组,要求开启5个线程分别计算10000个元素的和,然后累加得到总和 /** * 开启5个线程进行计算,最后所有的线程都计算完了再统计计算结果 */ public class ... 
- 使用if else if else 统计计算
		package review20140419;/* * 统计一个班级的成绩,并统计优良中差和不及格同学个数以及求平均分 */public class Test2 { //程序的入口 pub ... 
- 智能ERP收银统计-优惠统计计算规则
		1.报表统计->收银统计->优惠统计规则 第三方平台优惠:(堂食订单:支付宝口碑券优惠)+(外卖订单:商家承担优惠) 自平台优惠:(堂食订单:商家后台优 ... 
- MongoDB 中聚合统计计算--$SUM表达式
		我们一般通过表达式$sum来计算总和.因为MongoDB的文档有数组字段,所以可以简单的将计算总和分成两种:1,统计符合条件的所有文档的某个字段的总和:2,统计每个文档的数组字段里面的各个数据值的和. ... 
- pandas中计算总体标准差
		标准差(或方差),分为 总体标准差(方差)和 样本标准差(方差). 前者分母为n,后者为n-1.后者是无偏的. pandas里的 .std() 和 .var() 都是算的无偏的. 而numpy是有偏的 ... 
随机推荐
- Java新建一个子线程异步运行方法
			如何在运行主方法的同时异步运行另一个方法,我是用来更新缓存: 1. 工具类 public class ThreadPoolUtils { private static final Logger LOG ... 
- 【ACM专项练习#03】打印图形、栈的合法性、链表操作、dp实例
			运营商活动 题目描述 小明每天的话费是1元,运营商做活动,手机每充值K元就可以获赠1元,一开始小明充值M元,问最多可以用多少天? 注意赠送的话费也可以参与到奖励规则中 输入 输入包括多个测试实例.每个 ... 
- 【Azure K8S】记录AKS VMSS实例日志收集方式
			问题描述 如何从AKS的VMSS集群中收集实例日志? 参考步骤 第一步:登陆VMSS实例 参考官网步骤:使用 SSH 连接到 Azure Kubernetes 服务 (AKS) 群集节点以进行维护或故 ... 
- 【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
			问题描述 在Azure App Service for Windows 中部署web项目时候,需要在wwwroot下设置web.config,对于不同语言的项目,web.config文件中的httpP ... 
- C#多线程(10):读写锁
			目录 ReaderWriterLockSlim ReaderWriterLockSlim 常用方法 订单系统示例 并发字典写示例 ReaderWriterLock 本篇的内容主要是介绍 ReaderW ... 
- C++ STL //vector容器存放内置数组
			1 //STL初始 2 // 3 //vector容器存放内置数组 4 5 #include <iostream> 6 #include <string> 7 #include ... 
- 9、mysql的并发参数调整
			从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程.多线程可以有效利用服务器资源,提高数据库的并发性能.在Mysql中,控制并发连接和线程的主要参数包括 max_conn ... 
- 13 Codeforces Round 886 (Div. 4)G. The Morning Star(简单容斥)
			G. The Morning Star 思路:用map记录x,y,以及y-x.y+x 从前往后统计一遍答案即可 公式\(ans+=cnt[x]+cnt[y]-2 * cnt[x,y]+cnt[y+x] ... 
- CSS(语义化标签、多媒体标签、新表单元素、属性选择器、结构伪类选择器、伪元素选择器、盒子模型、滤镜、calc函数、过渡)
			一.HTML5新特性 概述 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签.新的表单和新的表单属性等. 这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑 ... 
- Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
			这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性 ... 
