一、排序
排序有两种形式,一种对索引排序,一种对内容排序
1. DataFrame排序
· 使用df.sort_values(by=, ascending=)
对单个键或者多个键进行排序(列);
参数:
· by:指定排序参考的键;
· ascending:默认升序,值为False表降序,值为True表升序;
# 创建10行5列的数据,数据范围40~100
data = pd.DataFrame(np.random.randint(40,100,(10,5)))
# 按列“0”一列进行排序,ascending表示升序排序
data = data.sort_values(by=0, ascending=True)
print(data)
# 按照多个键进行排序
data = data.sort_values(by=[0,1,2])
print(data)
· 使用df.sort_index()
对索引进行排序,默认顺序升序,从小到大(行);
2. Series排序
· 使用series.sort_values(ascending=True)
对Series的唯一一列进行排序,不需要参数;
· 使用series.sort_index()
对索引进行排序,默认顺序升序,从小到大(唯一一行);
二、DataFrame运算
1. 算术运算
· data[col].add(num)
对某一列所有元素相加num
· data[col].sub(num)
对某一列的所有元素相减num
# 相加与相减运算
data = data[1].add(1)
print(data)
data = data[3].sub(2)
print(data)
2. 逻辑运算
· data[col] > num
对某一列所有元素进行逻辑判断,赋值为True或False
· 运算函数:
· query(expr)
expr:要查询的字符串
通过query,可以让逻辑赋值的过程更方便简单
# 判断data数据中open一列大于22小于24的元素
data.query("open<24 & open>22").head()
· isin(values)
指定某个值进行判断,从而进行筛选操作
# 判断open列的值是否是23.53或23.85
data[data['open'].isin([23.53, 23.85])]
3. 统计运算
· 综合分析:describe
describe()函数能够直接得到许多统计结果:
· count
· mean(平均值)
· std(标准差)
· min
· max
data.describe()
· 统计函数
除describe显示的之外,还可以显示这些数值:
· sum(求和)
· prod(求乘积)
· median(中位数)
· mode(众数)
· var(方差)
· idxmax / idxmin(最大值索引和最小值索引)
对于单个函数去进行统计的时候,坐标轴还是默认按照“列”(axis=0,default)进行统计的;如果要对“行index”进行统计,需要指定(axis=1)
· 累计统计函数
· cumsum:计算前1/2/3/.../n个数的和;
· cummax:计算前1/2/3/.../n个数的最大值;
· cummin:计算前1/2/3/.../n个数的最小值;
· cumprod:计算前1/2/3/.../n个数的乘积;
# 统计函数操作
# 1.排序
data = data.sort_index()
# 2.累计求和
# 首先取data的change一列
stock_rise = data['change']
# 对该列进行求和并打印
print(stock_rise.cumsum())
# 3.显示
# plot显示图形
stock_rise.cumsum().plot()
plt.show()
4. 自定义运算
· apply(func, axis=0)
func:自定义函数;
axis=0:默认为列,改为1为对行运算;
如图所示,定义一个对两个列,分别求最大值-最小值的函数:
三、pandas绘图
绘图函数:
· DataFrame.plot(kind='line')
· Series.plot(kind='line')
※ plot聚合了所有类图形,kind参数尤为重要,用来指定要绘制的图形类型,默认折线图
· kind参数的取值:
'line':折线图;
'bar':条形图;
'barh':横向条形图;
'hist':直方图;
'pie':饼图;
'scatter':散点图;
仍然运用Matplotlib的相关知识进行绘图,绘图步骤基本和Matplotlib绘图一致。