前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas库的简单介绍(4)

pandas库的简单介绍(4)

作者头像
python数据可视化之路
发布2023-02-23 21:24:38
1.4K0
发布2023-02-23 21:24:38
举报

4 pandas基本功能

4.1-4.5见之前文章

4.6 排名

排名这个功能目前我用的不怎么多,但还是简单说明一下。排名用到了rank方法。默认情况下,rank通过将平均排名分配到每个组来打破平级关系。

rank的常用参数如下,rank(method='', axis='')。当为DataFrame时,axis可以为columns。

rank打破平级常用方法

方法

描述

'average'

默认:每个组分配平均排名

'min'

对整个组使用最小排名

'max'

对整个组使用最大排名

'first'

按照值在数据中的出现次序排名

'dense'

类似method='min',但是组间排名总是增加1,而不是一个组中相等的元素数量

大家可以下面自己练习。


5 描述性统计概述与计算

5.1 描述性统计和汇总统计

pandas对象有一个常用数学、统计学方法的集合,大部分属于规约和汇总统计,并且还有处理缺失值的功能。

下面是对一个DataFrame的一个示例:

代码语言:javascript
复制
import pandas as pd
import numpy as np
frame = pd.DataFrame([[2, np.nan], [7, -3],
                     [np.nan, np.nan], [0.5, -2]],
                    index = list('abcd'),
                    columns = ['one', 'two'])
print(frame)
print('列上求和:\n', frame.sum())
print('行上求和:\n', frame.sum(axis = 1))
print('行上求均值:\n', frame.mean(axis = 1, skipna = False)) #skipnan表示是否跳过缺失值
print('最大值的索引:\n', frame.idxmax()) #查找最大值所在位置
print('列上累计和:\n', frame.cumsum())
print('获取描述性信息:\n', frame.describe()) #获取描述性信息
代码语言:javascript
复制
   one  two
a  2.0  NaN
b  7.0 -3.0
c  NaN  NaN
d  0.5 -2.0
列上求和:
one    9.5
two   -5.0
dtype: float64
行上求和:
a    2.0
b    4.0
c    0.0
d   -1.5
dtype: float64
行上求均值:
a     NaN
b    2.00
c     NaN
d   -0.75
dtype: float64
最大值的索引:
one    b
two    d
dtype: object
列上累计和:
    one  two
a  2.0  NaN
b  9.0 -3.0
c  NaN  NaN
d  9.5 -5.0
获取描述性信息:
             one       two
count  3.000000  2.000000
mean   3.166667 -2.500000
std    3.403430  0.707107
min    0.500000 -3.000000
25%    1.250000 -2.750000
50%    2.000000 -2.500000
75%    4.500000 -2.250000
max    7.000000 -2.000000

对于任何方法,都有axis和skipna这两个参数,在具体情况中具体使用。

描述性统计和汇总统计函数表

方法

描述

count

计算非NA个数

describe

计算描述性统计信息

min, max

最小值,最大值

argmin, argmax

最小值,最大值所在索引位置

idxmin, idxmax

最小值,最大值索引标签

quantile

计算样本从0到1间的分位数

sum

加和

mean

均值

median

中位数(50%分位数)

prod

所有值的积

var

值的样本方差

std

值的样本标准差

skew, kurt

样本偏度(第三时刻)、样本峰度(第四时刻)的值

cumsum

累计值

cummin, cummax

累计值的最小值和最大值

cumprod

值的累计积

pct_change

计算百分比


5.2 相关性和协方差

相关性和协方差分别用到了corr和cov函数。例如,frame['one'].corr(frame['two'])表示frame的'one'和'two'两列的相关性;frame['one'].cov(frame['two'])表示frame两列的协方差;利用corrwith来计算每一列对某一列的相关性,例如frame.corrwith(frame['two'])计算每一列对two列的的相关性,也可以传入axis='columns'逐行计算。


5.3 唯一值、计数和成员属性

一维Series也有一些统计方法,例如:

1、计算唯一值,unique方法

代码语言:javascript
复制
series1 = pd.Series(list('abcdacdabcabc'))
unique = series1.unique() #计算唯一值
print('唯一值:\n', unique)
代码语言:javascript
复制
唯一值:
 ['a' 'b' 'c' 'd']

2、计算包含值的个数,并降序排列

代码语言:javascript
复制
pd.value_counts(series1.values, sort = True) #计算值并降序
代码语言:javascript
复制
c    4
a    4
b    3
d    2
dtype: int64

3、过滤操作——isin方法

代码语言:javascript
复制
mask = series1.isin(['a', 'c']) #过滤操作
print('过滤后的值:\n', series1[mask]) #子集
代码语言:javascript
复制
过滤后的值:
0     a
2     c
4     a
5     c
7     a
9     c
10    a
12    c

某些情况下,可能要计算DataFrame多个相关列的直方图,使用方法如下:

代码语言:javascript
复制
data = pd.DataFrame({'A':[1, 5, 4, 100, 5],
                     'B':[4, 100, 3, 2, 1],
                     'C':[2, 3, 101, 5, 2]})
result = data.apply(pd.value_counts).fillna(0)
result
代码语言:javascript
复制

    A    B    C
1  1.0  1.0  0.0
2  0.0  1.0  2.0
3  0.0  1.0  1.0
4  1.0  1.0  0.0
5  2.0  0.0  1.0
100  1.0  1.0  0.0
101  0.0  0.0  1.0

如结果所示,行标签为所有列的不同值,数值则是不同值在每个列出现次数。

至此,pandas基础操作已经全部完成,熟练运用这些方法能大大减少编程的复杂度,也能提高效率;下一篇将对时间类型做一个专题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档