《利用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,索引是唯一值序列,值是奇数个数,按照个数降序排序
发布了14 篇原创文章 · 获赞 0 · 访问量 174

猜你喜欢

转载自blog.csdn.net/pnd237/article/details/104363239