关键词:Numpy,数据分析常用命令,数据处理,
类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame 分别对应于一维的序列和二维的表结构。pandas 约定俗成的导入方法如下:
from pandas import Series, DataFrame
import pandas as pd
排序和排名
Series 的sort_index(ascending=True)方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。
若要按值对 Series 进行排序,当使用.order(na_last=True, ascending=True, kind='mergesort')方法,任何缺失值默认都会被放到 Series 的末尾。
在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True)方法多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):
>>> df.sort_index(by='Ohio')
>>> df.sort_index(by=['California','Texas'])
>>> df.sort_index(axis=1)
排名(Series.rank(method='average', ascending=True))的作用与排序的不同之处在于,他会把对象的 values 替换成名次(从 1 到 n)。这时唯一的问题在于如何处理平级项,方法里的method参数就是起这个作用的,他有四个值可选:average, min, max, first。
注意在 ser[0]=ser[3] 这对平级项上,不同 method 参数表现出的不同名次。
DataFrame 的.rank(axis=0, method='average', ascending=True)方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。
统计方法
pandas 对象有一些统计方法。它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series。
比如DataFrame.mean(axis=0,skipna=True)方法,当数据集中存在 NA 值时,这些值会被简单跳过,除非整个切片(行或列)全是 NA,如果不想这样,则可以通过skipna=False来禁用此功能:
其他常用的统计方法有:
########################*******************************************
count 非 NA 值的数量
describe 针对 Series 或 DF 的列计算汇总统计
min , max 最小值和最大值
argmin , argmax 最小值和最大值的索引位置(整数)
idxmin , idxmax 最小值和最大值的索引值
quantile 样本分位数(0 到 1)
sum 求和
mean 均值
median 中位数
mad 根据均值计算平均绝对离差
var 方差
std 标准差
skew 样本值的偏度(三阶矩)
kurt 样本值的峰度(四阶矩)
cumsum 样本值的累计和
cummin , cummax 样本值的累计最大值和累计最小值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化
协方差与相关系数
Series 有两个方法可以计算协方差与相关系数,方法的主要参数都是另一个 Series。DataFrame 的这两个方法会对列进行两两运算,并返回一个 len(columns) 大小的方阵:
.corr(other, method='pearson', min_periods=1)相关系数,默认皮尔森
.cov(other, min_periods=None)协方差
min_periods参数为样本量的下限,低于此值的不进行运算。
列与 Index 间的转换
DataFrame 的.set_index(keys, drop=True, append=False, verify_integrity=False)方法会将其一个或多个列转换为行索引,并返回一个新对象。默认drop=True表示转换后会删除那些已经变成行索引的列。另一个.reset_index()方法的作用正相反,会把已经层次化的索引转换回列里面。
参考网址:http://my.oschina.net/lionets/blog/277847#OSC_h3_12
网友评论