1. 聚合计算

pandas对象拥有一组常用的数学和统计方法。它们大部分都属于约简和汇总

统计,用于从Series中提取单个值(如sum或mean)或从DataFrame的行或

列中提取一个Series。跟对应的NumPy数组方法相比,它们都是基于没有缺 失数据的假设而构建的。看一个简单的DataFrame:

df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],

[np.nan, np.nan], [0.75, -1.3]],

index=['a', 'b', 'c', 'd'],

columns=['one', 'two'])

df

调用DataFrame的sum方法将会返回一个含有列的和的Series:

df.sum() #默认axis=0/'index'

传入axis='columns'或axis=1将会按行进行求和运算:

df.sum(axis='columns') #axis=1

NA值会自动被排除,除非整个切片(这里指的是行或列)都是NA。通过skipna选项可以禁用该功能:

print(df)

print("-----")

print(df.mean(axis='columns', skipna=False)) #axis=1

print("-----")

print(df.mean(axis='columns')) #axis=1 自动跳过na

下表列出了这些约简方法的常用选项:

有些方法(如idxmin和idxmax)返回的是间接统计(比如达到最小值或最大 值的索引):

print(df)

print("-------")

df.idxmax() #axis=0

另一些方法则是累计型的:

print(df)

print("-------")

df.cumsum() #axis=0

还有一种方法,它既不是约简型也不是累计型。describe就是一个例子,它 用于一次性产生多个汇总统计:

df.describe() #默认忽略空值

对于非数值型数据,describe会产生另外一种汇总统计:

obj = pd.Series(['a', 'a', 'b', 'c'] * 4)

obj.describe()

下表列出了所有与描述统计相关的方法。

2. 相关系数与协方差

有些汇总统计(如相关系数和协方差)是通过参数对计算出来的。我们来看

几个DataFrame,它们的数据来自Yahoo!Finance的股票价格和成交量,使

用的是pandas-datareader包(可以用conda或pip安装):

pip install pandas-datareader

我使用pandas_datareader模块下载了一些股票数据:

import pandas_datareader.data as web

all_data = {ticker: web.get_data_yahoo(ticker) for ticker in ['AAPL',

'IBM', 'MSFT', 'GOOG']}

price = pd.DataFrame({ticker: data['Adj Close'] for ticker, data in

all_data.items()})

volume = pd.DataFrame({ticker: data['Volume'] for ticker, data in

all_data.items()})

print(price.head())

print(volume.head())

现在计算价格的百分数变化,时间序列的操作后续会介绍:

returns = price.pct_change()

returns.tail()

Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值 的相关系数。与此类似,cov用于计算协方差:

print(returns['MSFT'].corr(returns['IBM']))

print(returns['MSFT'].cov(returns['IBM']))

因为MSTF是一个合理的Python属性,我们还可以用更简洁的语法选择列:

returns.MSFT.corr(returns.IBM)

另一方面,DataFrame的corr和cov方法将以DataFrame的形式分别返回完整 的相关系数或协方差矩阵:

print(returns.corr())

print("-----------")

print(returns.cov())

利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算)

returns.corrwith(returns.IBM)

无锡妇科检查医院 http://www.87554006.com/

传入一个DataFrame则会计算按列名配对的相关系数。这里,我计算百分比 变化与成交量的相关系数:

print(returns.head())

print(volume.head())

returns.corrwith(volume) #按列配对

传入axis='columns'/1即可按行进行计算。无论如何,在计算相关系数之前,所 有的数据项都会按标签对齐。

3. 唯一值、值计数以及成员资格

还有一类方法可以从一维Series的值中抽取信息。看下面的例子:

obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])

obj

第一个函数是unique,它可以得到Series中的唯一值数组:

uniques = obj.unique()

uniques

返回的唯一值是未排序的,如果需要的话,可以对结果再次进行排序

(uniques.sort())。相似的,value_counts用于计算一个Series中各值出现 的频率:

obj.value_counts()

为了便于查看,结果Series是按值频率降序排列的。value_counts还是一个 顶级pandas方法,可用于任何数组或序列:

pd.value_counts(obj.values, sort=False)

isin用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中 数据的子集:

print(obj)

print("-----------")

mask = obj.isin(['b', 'c'])

print(mask)

print("-----------")

obj[mask]

与isin类似的是Index.get_indexer方法,它可以给你一个索引数组,从可能包 含重复值的数组到另一个不同值的数组:

to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])

unique_vals = pd.Series(['c', 'b', 'a'])

pd.Index(unique_vals).get_indexer(to_match)

下表给出了这几个方法的一些参考信息:

有时,你可能希望得到DataFrame中多个相关列的一张柱状图。例如:

data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],

'Qu2': [2, 3, 1, 2, 3],

'Qu3': [1, 5, 2, 4, 4]})

data

将pandas.value_counts传给该DataFrame的apply函数,就会出现:

result = data.apply(pd.value_counts).fillna(0)

result

这里,结果中的行标签是所有列的唯一值。后面的频率值是每个列中这些值的相应计数。

python数据分析pandas_Python数据分析之 pandas汇总和计算描述统计相关推荐

  1. python数据分析pandas_Python数据分析之pandas学习(基础操作)

    一.pandas数据结构介绍 在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame.Series类似于numpy中的一维数组, 除了通吃一维数组可用的函数或方法,而且 ...

  2. Pandas 基础 (4)—— 汇总和计算描述统计

    Pandas 对象拥有一组常用的数学和统计方法,他们大部分都属于约简和汇总统计,用于从 Series 中提取单个值(如 sum/mean),或者从 DataFrame 的行或列中提取一个 Series ...

  3. pandas知识点(汇总和计算描述统计)

    调用DataFrame的sum方法会返还一个含有列的Series: In [5]: df = DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0 ...

  4. Python数据分析笔记——Numpy、Pandas库

    Python数据分析--Numpy.Pandas库 总第48篇 ▼ 利用Python进行数据分析中有两个重要的库是Numpy和Pandas,本章将围绕这两个库进行展开介绍. Numpy库 Numpy最 ...

  5. python对二维数组统计某一行的去重计数_Python数据分析笔记——Numpy、Pandas库

    利用Python进行数据分析中有两个重要的库是Numpy和Pandas,本章将围绕这两个库进行展开介绍. Numpy库 Numpy最重要的一个特点是就是其N维数组对象,即ndarray,ndarray ...

  6. 简述Python的Numpy,SciPy和Pandas,Matplotlib的区别

    Numpy: 基础的数学计算模块,以矩阵为主,纯数学. SciPy: 基于Numpy,提供方法(函数库)直接计算结果,封装了一些高阶抽象和物理模型.比方说做个傅立叶变换,这是纯数学的,用Numpy:做 ...

  7. python做数据分析的包_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

  8. python花萼长度表_Python 数据分析答疑 5:Pandas入门

    8.23 第五课 Pandas入门作业 1: 使用如下代码创建 DataFrame, gdp = {"country":["United States", &q ...

  9. 每天10分钟用python学数据分析_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

最新文章

  1. 项目: 打字母游戏图形化【C++ / C】
  2. ARM的存储器映射与存储器重映射【转载】2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来。
  3. Apache2 httpd.conf配置文件中文版详解
  4. U25%(1,16) and U25%(1,168)on《C4.5:programs for machine learning》
  5. solidworks无法获得下列许可standard_SolidWorks2020安装无法获得下列许可SOLIDWORKS Standard怎么解决?...
  6. java面试总结(第一天)
  7. 配置tomcat 7控制台账号
  8. git 子模块_Git子模块的问题
  9. 如何学习-我是这样学JS理论![不看后悔篇]
  10. 那个说技术本身并不可耻的快播王欣回来了!
  11. 电脑问题勘查 —— BIOS
  12. 计算机网络原理 实验2《Windows Socket编程》
  13. 表白代码大全,快来向你的ta表白吧~~~
  14. 合并两个有序链表-python
  15. Learning to Fuse Asymmetric Feature Maps in Siamese Trackers 论文与代码笔记
  16. 全国青少年软件编程等级考试标准 (预备级)1-4级
  17. 【Go语言】深入浅出chan(各种实例场景+分析)
  18. Java实验—四子棋进阶
  19. note4x rom android p,红米Note4x安卓8.0刷机包
  20. 【STM32】标准库-SDIO-SDHC

热门文章

  1. 论文笔记:Image Caption(Show and Tell)
  2. python dlib学习(四):单目标跟踪
  3. python pypdf2另存为图片_用Python玩转PDF的各种骚操作
  4. 英国正式启用首批5G服务
  5. Hack Knowledges
  6. 在WPF中,如何得到任何Object对象的XAML代码?
  7. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)
  8. 洛谷——P2118 比例简化
  9. Docker安装与镜像,容器命令管理
  10. 科普| 什么是图数据库?