import pandas as pd
####### Series 一维数据/列数据 定长的有序字典
s = pd.Series(data, index=index)
data = np.random.randn(5) # 一维数据
ind = list("abcde") # index 行索引
s = pd.Series(data, index=ind)
s.unipue() # 去重
s.order() # Series排序
######## DataFrame 数据表
pd.DataFrame(data,index = ind,columns = col) # (二维数据,index 行索引, columns 列索引)
data = np.random.randn(6,4) # 二维数据
ind = [1,2,3,4,5,6] # index 行索引
col = list("abcd") # columns 列索引
df = pd.DataFrame(data,index = ind,columns = col)
查看
df.head(3) / df.tail(3) # 查看frame中头部和尾部的行
df.index / df.columns # 显示索引、列和底层的numpy数据
df.values # 显示底层的numpy数据
df["a"] = df.a # 列标签可以直接当作df的属性
运算
df.describe() # 对数据的快速统计汇总 (如每一列的元素个数,均值,最大最小值等)
df.T # 对数据的转置
df.apply(f) # Apply函数 讲函数应用于行/列
f = lambda x : x.max() - x.min()
df.apply(f) # 应用于每列 (默认为列计算)
df.apply(f, axis = 1) # 应用于每行
df.drop(["a","b"]) # 删除行
df.drop(["aa","bb"],axis=1) # 删除列
排序
df.sort_index() # 按照rowID进行排序,默认升序
df.sore_index(axis=1,ascending=False) # 按照columnID进行排序,设定为降序
df.sort_values(by='a') # 以 a 列数据进行排序
df.sort_values(by=['A','B'],ascending=[True, False],inplace=True) # 以列数据进行排序 ,inplace设定为True, 即改变原数组
df.rename(index = reind, columns = recol) # 重命名索引
选择数据
df.loc(rowIDs,colIDs) # 行列的交叉部分,通过索引名来指定行列号(如 "a" "b" ..), 可以用切片
df.iloc(rowIDs,colIDs) # 行列的交叉部分,通过索引值来指定行列号(如 0 1 2 3...), 可以用切片
df[df["a"]>0] # 使用一个单独列的值来选择数据(布尔索引)
df["a"].isin([1.1, 3.2]) # 返回符合条件的行(过滤)
df.isnull() / df.notnull() # 判断NaN
df['Ohio'] # 索引, 相当于选择列
df[:2] # 切片, 针对行
df.ix[:2,:2] # 切片, 行列的交叉区
统计方法
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 计算百分数变化