热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pandas中用于描述性统计分析的关键方法与技术

在数据科学领域,Pandas是一个强大的Python库,广泛应用于数据处理和分析。本文详细探讨了Pandas中用于描述性统计分析的关键方法和技术,包括`describe`、`mean`、`median`、`std`等函数的使用方法及其应用场景。通过实例演示,展示了如何利用这些工具高效地进行数据探索和初步分析,为后续的深入研究提供坚实的基础。


汇总计算

看一个简单的DataFrame:

In [230]: 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'])


In [231]: df
Out[231]:
one two
a 1.40 NaN
b 7.10 -4.5
c NaN NaN
d 0.75 -1.3

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

In [232]: df.sum()
Out[232]:
one 9.25
two -5.80
dtype: float64

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

In [233]: df.sum(axis=1)
Out[233]:
a 1.40
b 2.60
c NaN
d -0.55


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

In [234]: df.mean(axis='columns', skipna=False)
Out[234]:
a NaN
b 1.300
c NaN
d -0.275
dtype: float64


下表列出了这些汇总计算方法的常用选项。


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

In [235]: df.idxmax()
Out[235]:
one b
two d
dtype: object

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

In [236]: df.cumsum()
Out[236]:
one two
a 1.40 NaN
b 8.50 -4.5
c NaN NaN
d 9.25 -5.8

describe用于一次性产生多个汇总统计:

In [237]: df.describe()
Out[237]:
one two
count 3.000000 2.000000
mean 3.083333 -2.900000
std 3.493685 2.262742
min 0.750000 -4.500000
25% 1.075000 -3.700000
50% 1.400000 -2.900000
75% 4.250000 -2.100000
max 7.100000 -1.300000

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

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


In [239]: obj.describe()
Out[239]:
count 16
unique 3
top a
freq 8
dtype: object



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



相关系数与协方差

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

pct_change用于计算百分比变化率:

df = pd.DataFrame({
'FR': [4.0405, 4.0963, 4.3149],
'GR': [1.7246, 1.7482, 1.8519],
'IT': [804.74, 810.01, 860.13]},
index=['1980-01-01', '1980-02-01', '1980-03-01'])
df
FR GR IT
1980-01-01 4.0405 1.7246 804.74
1980-02-01 4.0963 1.7482 810.01
1980-03-01 4.3149 1.8519 860.13
df.pct_change()
FR GR IT
1980-01-01 NaN NaN NaN
1980-02-01 0.013810 0.013684 0.006549
1980-03-01 0.053365 0.059318 0.061876



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

s1 = pd.Series([.2, .0, .6, .2])
s2 = pd.Series([.3, .6, .0, .1])
s1.corr(s2)
-0.85106449634699
s1.cov(s2)
-0.05666666666666666


DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系

或协方差矩阵:

df = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
columns=['dogs', 'cats'])
df
dogs cats
0 0.2 0.3
1 0.0 0.6
2 0.6 0.0
3 0.2 0.1


df.corr()
dogs cats
dogs 1.000000 -0.851064
cats -0.851064 1.000000


df.cov()
dogs cats
dogs 0.063333 -0.056667
cats  -0.056667  0.070000


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

df.corrwith(df.dogs)
dogs 1.000000
cats -0.851064
dtype: float64



传入一个DataFrame则会计算按列名配对的相关系数。

df1 = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
columns=['dogs', 'cats'])
df2 = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
columns=['cats', 'dogs'])
df1.corrwith(df2)
cats -0.851064
dogs -0.851064
dtype: float64

传入axis='columns'即可按行进行计算。


无论如何,在计算相关系数之前,所有的数据项都会按标签对齐。






推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • #print(34or4 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • Java多线程实现:从1到100分段求和并汇总结果
    本文介绍如何使用Java编写一个程序,通过10个线程分别计算不同区间的和,并最终汇总所有线程的结果。每个线程负责计算一段连续的整数之和,最后将所有线程的结果相加。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
author-avatar
中国中国NO1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有