Pandas模块学习笔记3:运算、排序与统计

1、dataframe和series的加减

df1 = DataFrame(np.arange(9.).reshape((3, 3)), columns=list('bcd'),
                index=['Ohio', 'Texas', 'Colorado'])
df2 = DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),
                index=['Utah', 'Ohio', 'Texas', 'Oregon']) 


df1 + df2  //有对应索引值则相加,无对应索引值则取并集(缺失值为NaN)
df3 = df1.add(df2, fill_value=0)  //将缺失值填充为0

***广播机制:DataFrame和Series之间的算术运算***
frame + series  //frame每一行都会加上series
frame +- series  //frame每一行都会减去series
frame.sub(series, axis=0)  //frame每一列都会减去series
frame.add(series, axis=0)  //frame每一列都会加上series

2、Numpy的ufuncs也可用于操作pandas对象

np.abs(frame)  //取绝对值
np.mean(frame) //取每一列的均值 相当于frame.mean()
np.mean(frame,axis=1)  //取每一行的均值

Dataframe的apply()方法可以将一个函数作用于DataFrame中的每个行或者列,applymap()方法可以将函数做用于DataFrame中的所有元素

format = lambda x:  //定义函数
frame.apply(format )  //将函数作用于每一列
frame.apply(format , axis=1)   //将函数作用于每一行
frame.applymap(format )  //将函数作用于每一个元素

3、排序

frame.sort_index()  // 按照索引对行进行升序排序
frame.sort_index(axis=1,ascending=False)  // 按照索引对列进行降序排序
frame.sort_values(by='column1') // 按照列1的值对行进行升序排序
frame.sort_values(by='column1', axis=1) // 按照列1的值对列进行降序排序

frame.rank(axis=1,ascending=False, method='max') //对每行中的各列格进行降序排序,将对应的排名赋为列格值,max 指两个出现相同排名,取他们排名序号最大作为他们的排名

其他method见下:

 

 

4、统计

frame.sum() //加总各行
frame.sum(axis=1)#加总各列  ######
frame.cumsum() //按行进行累积求和
frame.cumsum(axis=1) //按列进行累计求和
frame.idxmax() //求出每列中,值最大所在行
frame.mean(axis=1, skipna=False) //计算每一行的均值,如果无法计算则返回NaN

frame.describe()  //输出结果格式如下

 


 frame["column1"].cov(frame["column2"]) //求column1和column2的协方差

 frame.cov() //返回frame中所有列变量的协方差矩阵

 frame["column1"].corr(frame["column2"]) //求column1和column2的相关系数

 frame.corr() //返回frame中所有列变量的相关系数矩阵

 

 frame2 = frame.apply(pd.value_counts).fillna(0) //计算每一列中各个值的出现次数,未出现则为缺失值,将缺失值用0替换

 

posted @ 2021-01-20 00:04  venko  阅读(132)  评论(0)    收藏  举报