《利用python进行数据分析》读书笔记之pandas基础(三)

描述性统计的概述与计算

pandas对象装配了一个常用数学。统计学方法的集合。以以下这个简单的DataFrame为例:

import pandas as pd
import numpy as np

df = pd.DataFrame([[1.4,np.nan],[7.1,4.5],
                   [np.nan,np.nan],[0.75,-1.3]],
                  index = list('abcd'),
                  columns=['one','tow'])
#     one  tow
# a  1.40  NaN
# b  7.10  4.5
# c   NaN  NaN
# d  0.75 -1.3

使用sum方法可以求得行上的加和,以Series的形式返回:

df.sum()
# one    9.25
# tow    3.20
# dtype: float64

如果我们在列上求和,可以加入axis参数:

df.sum(axis = 1)
# a     1.40
# b    11.60
# c     0.00
# d    -0.55
# dtype: float64

NaN是被自动排除的。可以将skipna的值指定为False来选择不跳过NaN,即只要有一个NaN,那么结果就为NaN:

df.sum(axis = 1,skipna = False)
# a      NaN
# b    11.60
# c      NaN
# d    -0.55
# dtype: float64

idxmax和idxmin方法可以得到每行或者每列最大值或者最小值的索引:

df.idxmax(axis = 1)
# a    one
# b    one
# c    NaN
# d    one

describe方法可以产生多个数值统计量:

df.describe(())
#             one       tow
# count  3.000000  2.000000
# mean   3.083333  1.600000
# std    3.493685  4.101219
# min    0.750000 -1.300000
# 50%    1.400000  1.600000
# max    7.100000  4.500000

常见的描述性统计和汇总统计方法:

方法描述
count非NA值的个数
describe计算Series或者DataFrame各列的汇总统计集合
min,max计算最小值,最大值
argmin,argmax分别计算最小值、最大值所在的索引位置(整数)
idxmin,idxmax分别计算最小值或者最大值所在的索引标签
quantile计算样本的从0到1的分位数
sum加和
mean均值
median中位数
mad平均值的平均绝对偏差
prod所有值的积
var值的样本方差
std值的样本标准差
skew样本刻度(第三时刻)值
kurt样本峰度(第四时刻)值
cumsum累计值
cumin,cummax累计值的最大值和最小值
cumpord值的累积积
diff计算第一个算数差值(对时间序列有用)
pct_change计算百分比

有一类方法可以从Series包含的数值中提取信息,首先考虑以下Series对象:

obj = pd.Series(list('cadaabbcc'))
# 0    c
# 1    a
# 2    d
# 3    a
# 4    a
# 5    b
# 6    b
# 7    c
# 8    c
# dtype: object

首先是unique方法,它可以给出对象中的所有值(唯一的),但是并不一定按顺序给出::

uniques = obj.unique()
# ['c' 'a' 'd' 'b']

value_counts()方法可以计算Series中某个值出现的个数:

obj.value_counts()
# a    3
# c    3
# b    2
# d    1
# dtype: int64

该方法默认会按照数量从多到少排列,也可以添加sort = False取消排列。
isin指定向量化的成员检测,即逐个判断元素是否是给定的集合中的一员,以此配合布尔值索引可以进行数值集的过滤:

obj.isin(['b','c'])
# 0     True
# 1    False
# 2    False
# 3    False
# 4    False
# 5     True
# 6     True
# 7     True
# 8     True
# dtype: bool
obj[obj.isin(['b','c'])]
# 0    c
# 5    b
# 6    b
# 7    c
# 8    c
# dtype: object

唯一值、计数和集合成员属性方法见下表:

方法描述
isin计算表征Series中每个值是否包含于传入序列的布尔值数组
match计算数组中每个值的整数索引,形成一个唯一值数组,有助于数据对其和join类型的操作
unique计算Series值中的唯一值数组,按照观察顺序返回
value_counts返回一个Series,索引是唯一值序列,值是奇数个数,按照个数降序排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值