学习目标
- 目标
- 使用describe完成综合统计
- 使用max完成最大值计算
- 使用min完成最小值计算
- 使用mean完成平均值计算
- 使用std完成标准差计算
- 使用cumsum等实现累计分析
- 应用逻辑运算符号实现数据的逻辑筛选
- 应用isin实现数据的筛选
- 应用query实现数据的筛选
- 应用add等实现数据间的加法运算
- 应用apply函数实现数据的自定义处理
- 应用
- 股票每日数据的统计
1 算术运算
- add(other)
比如进行数学运算加上具体的一个数字
data['最低价'].add(1)
- sub(other)
如果想要得到每天的涨跌大小?求出每天收盘价与开盘价的价格差
# 1、筛选两列数据
close = data['收盘价']
open1 = data['开盘价']
# 2、收盘价减去开盘价
data['收盘价减去开盘价'] = close.sub(open1)
data.head()
2 逻辑运算
2.1 逻辑运算符号<、 >、|、 &
- 例如筛选'最低价' > 18的日期数据
- data['最低价'] > 18返回逻辑结果
data['最低价'] > 18
# 逻辑判断的结果可以作为筛选的依据
data[data['最低价'] > 18]
- 完成一个多个逻辑判断, 筛选'最低价' > 18并且'最高价' > 20
data[(data['最低价'] > 18) & (data['最高价']>20)]
2.2 逻辑运算函数
- query(expr)
- expr:查询字符串
通过query使得刚才的过程更加方便简单
data.query("最低价 > 18 & 最高价 > 20")
- isin(values)
例如判断'最低价'是否为17.51,18.05
# 可以指定值进行一个判断,从而进行筛选操作
data[data['最低价'].isin([17.51, 18.05])]
3 统计运算
3.1 describe()
综合分析: 能够直接得出很多统计结果,count
, mean
, std
, min
, max
等
# 计算平均值、标准差、最大值、最小值
data.describe()
3.2 统计函数
Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)结果,
count | Number of non-NA observations |
---|---|
sum | Sum of values |
mean | Mean of values |
median | Arithmetic median of values |
min | Minimum |
max | Maximum |
mode | Mode |
abs | Absolute Value |
prod | Product of values |
std | Bessel-corrected sample standard deviation |
var | Unbiased variance |
idxmax | compute the index labels with the maximum |
idxmin | compute the index labels with the minimum |
对于单个函数去进行统计的时候,坐标轴还是按照这些默认为“columns” (axis=0, default),如果要对行“index” 需要指定(axis=1)
- max()、min()
# 使用统计函数:0 代表列求结果, 1 代表行求统计结果
data.max(0)
- std()、var()
# 方差
data.var(0)
# 标准差
data.std(0)
- median():中位数
中位数为将数据从小到大排列,在最中间的那个数为中位数。如果没有中间数,取中间两个数的平均值。
df = pd.DataFrame({'COL1' : [2,3,4,5,4,2],
'COL2' : [0,1,2,3,4,2]})
df.median()
4 累计统计函数
函数 | 作用 |
---|---|
cumsum | 计算前1/2/3/…/n个数的和 |
cummax | 计算前1/2/3/…/n个数的最大值 |
cummin | 计算前1/2/3/…/n个数的最小值 |
cumprod | 计算前1/2/3/…/n个数的积 |
以上这些函数可以对series和dataframe操作
这里我们按照时间的从前往后来进行累计
- 排序
# 排序之后,进行累计求和
data = data.sort_index()
- 对'前收盘'进行求和
stock_rise = data['前收盘']
# plot方法集成了前面直方图、条形图、饼图、折线图
stock_rise.cumsum()
那么如何让这个连续求和的结果更好的显示呢?
如果要使用plot函数,需要导入matplotlib.
import matplotlib.pyplot as plt
# plot显示图形
stock_rise.cumsum().plot()
# 需要调用show,才能显示出结果
plt.show()
5 自定义运算
- apply(func, axis=0)
- func:自定义函数
- axis=0:默认是列,axis=1为行进行运算
- 定义一个对列,最大值-最小值的函数
data[['开盘价', '收盘价']].apply(lambda x: x.max() - x.min(), axis=0)
6 小结
- 算术运算【掌握】
- 逻辑运算【知道】
- 1.逻辑运算符号
- 2.逻辑运算函数
- 对象.query()
- 对象.isin()
- 统计运算【知道】
- 1.对象.describe()
- 2.统计函数
- 3.累积统计函数
- 自定义运算【知道】
- apply(func, axis=0)