Padas中DataFrame运算


1 算术运算

  • add(other)

比如进行数学运算加上具体的一个数字

data['open'].add(1)2018-02-27    24.53
2018-02-26    23.80
2018-02-23    23.88
2018-02-22    23.25
2018-02-14    22.49
  • sub(other)'

2 逻辑运算

2.1 逻辑运算符号

  • 例如筛选data["open"] > 23的日期数据

    • data["open"] > 23返回逻辑结果
    • data["open"] > 232018-02-27     True
      2018-02-26    False
      2018-02-23    False
      2018-02-22    False
      2018-02-14    False
      
# 逻辑判断的结果可以作为筛选的依据
data[data["open"] > 23].head()

  • 完成多个逻辑判断,
data[(data["open"] > 23) & (data["open"] < 24)].head()

2.2 逻辑运算函数

  • query(expr)

    • expr:查询字符串

通过query使得刚才的过程更加方便简单

data.query("open<24 & open>23").head()
  • isin(values)

例如判断'open'是否为23.53和23.85

# 可以指定值进行一个判断,从而进行筛选操作
data[data["open"].isin([23.53, 23.85])]

3 统计运算

3.1 describe

综合分析: 能够直接得出很多统计结果,countmeanstdminmax 等

# 计算平均值、标准差、最大值、最小值
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)open                   34.99
high                   36.35
close                  35.21
low                    34.01
volume             501915.41
price_change            3.03
p_change               10.03
turnover               12.56
my_price_change         3.41
dtype: float64
  • std()、var()
# 方差
data.var(0)open               1.545255e+01
high               1.662665e+01
close              1.554572e+01
low                1.437902e+01
volume             5.458124e+09
price_change       8.072595e-01
p_change           1.664394e+01
turnover           4.323800e+00
my_price_change    6.409037e-01
dtype: float64# 标准差
data.std(0)open                   3.930973
high                   4.077578
close                  3.942806
low                    3.791968
volume             73879.119354
price_change           0.898476
p_change               4.079698
turnover               2.079375
my_price_change        0.800565
dtype: float64
  • median():中位数

中位数为将数据从小到大排列,在最中间的那个数为中位数。如果没有中间数,取中间两个数的平均值。

df = pd.DataFrame({'COL1' : [2,3,4,5,4,2],'COL2' : [0,1,2,3,4,2]})df.median()COL1    3.5
COL2    2.0
dtype: float64
  • idxmax()、idxmin()
# 求出最大值的位置
data.idxmax(axis=0)open               2015-06-15
high               2015-06-10
close              2015-06-12
low                2015-06-12
volume             2017-10-26
price_change       2015-06-09
p_change           2015-08-28
turnover           2017-10-26
my_price_change    2015-07-10
dtype: object# 求出最小值的位置
data.idxmin(axis=0)open               2015-03-02
high               2015-03-02
close              2015-09-02
low                2015-03-02
volume             2016-07-06
price_change       2015-06-15
p_change           2015-09-01
turnover           2016-07-06
my_price_change    2015-06-15
dtype: object

3.3 累计统计函数

函数 作用
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()
  • 对p_change进行求和
stock_rise = data['p_change']
# plot方法集成了前面直方图、条形图、饼图、折线图
stock_rise.cumsum()2015-03-02      2.62
2015-03-03      4.06
2015-03-04      5.63
2015-03-05      7.65
2015-03-06     16.16
2015-03-09     16.37
2015-03-10     18.75
2015-03-11     16.36
2015-03-12     15.03
2015-03-13     17.58
2015-03-16     20.34
2015-03-17     22.42
2015-03-18     23.28
2015-03-19     23.74
2015-03-20     23.48
2015-03-23     23.74

那么如何让这个连续求和的结果更好的显示呢?

如果要使用plot函数,需要导入matplotlib.

import matplotlib.pyplot as plt
# plot显示图形
stock_rise.cumsum().plot()
# 需要调用show,才能显示出结果
plt.show()

4 自定义运算

  • apply(func, axis=0)

    • func:自定义函数
    • axis=0:默认是列,axis=1为行进行运算
  • 定义一个对列,最大值-最小值的函数
data[['open', 'close']].apply(lambda x: x.max() - x.min(), axis=0)open     22.74
close    22.85
dtype: float64

5 小结

  • 算术运算
  • 逻辑运算
    • 1.逻辑运算符号
    • 2.逻辑运算函数
      • 对象.query()
      • 对象.isin()
  • 统计运算
    • 1.对象.describe()
    • 2.统计函数
    • 3.累积统计函数
  • 自定义运算
    • apply(func, axis=0)

Padas中DataFrame运算相关推荐

  1. Pandas中DataFrame基本函数整理(全)

    [python]Pandas中DataFrame基本函数整理(全) 构造函数 DataFrame([data, index, columns, dtype, copy]) #构造数据框 属性和数据 D ...

  2. python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并

    目录 1 pandas介绍 1.1 Pandas介绍 1.2 为什么使用Pandas 1.3 案例:在numpy当中创建的股票涨跌幅数据形式 1.4 DataFrame 1.4.1 DataFrame ...

  3. 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)

    文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...

  4. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  5. Python—pandas中DataFrame类型数据操作函数

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构.  本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数.  1)查看DataFram ...

  6. pandas中dataframe默认不显示所有的数据行(中间省略)、使用option_context函数自定义设置单个dataframe允许显示的行的个数、set_option函数全局设置显示行的个数

    pandas中dataframe默认不显示所有的数据行(中间省略).使用option_context函数自定义设置单个dataframe允许显示的行的个数.set_option函数全局设置显示行的个数 ...

  7. Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件

    Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...

  8. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

  9. Java执行字符串中的运算公式

    在实现执行字符串中的运算公式时,采用了如下所示的代码: public static String StringfinalResult (String original) { try { String ...

最新文章

  1. Python 笔试面试及常用技巧 (1)
  2. 深度学习上的又一重点发现——利用MSCNN实现人群密度监测
  3. 让瘫痪失语患者「说话」,脑机接口首次从大脑活动解码完整句子,登上新英格兰医学杂志...
  4. 关于MVVM与MVC
  5. Mysql中Check约束无效的原因以及解决方法
  6. 来自微信团队的6个开源项目
  7. 编程中常见的安全算法
  8. 64位锐捷多网卡、VMWareNat模式、ICS共享破解
  9. excel常用函数公式及技巧搜集4
  10. MaxKey单点登录认证系统微服务架构v3.0.0GA发布
  11. java获取date的时分秒_java Date简单的 获得时分秒代码
  12. Synopsys Formality 2018操作流程
  13. Vue 实现拖拽模块(二)自定义拖拽组件位置
  14. 2022年「博客之星」 无知的人_的程序人生
  15. [翻译]如何用YII写出安全的WEB应用
  16. 小型电子商务网站数据管理系统
  17. vue实现标签云效果
  18. linux服务器上的项目读取本地文件,java访问linux服务器读取文件路径
  19. java毕业设计 ssm公寓宿舍后勤管理系统(含源码+论文)
  20. SiamFC响应图热力图绘制

热门文章

  1. Git 看这一篇就够了
  2. 从4个月到7天,Netflix开源Python框架Metaflow有何提升性能的魔法?
  3. 今日头条李磊等最新论文:用于文本生成的核化贝叶斯Softmax
  4. 不止最佳长论文,腾讯AI在ACL上还有这些NLP成果
  5. 新一届最强预训练模型上榜,出于BERT而胜于BERT
  6. 如何通过引入硬注意力机制来学习视觉问答任务?
  7. AI一分钟 | 知乎融资2.7亿美元;腾讯投资特斯拉大赚特赚
  8. AI一分钟|腾讯与三星结盟,以对抗苹果和谷歌;亚马逊回应“AI误将国会议员标记为罪犯”...
  9. Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器
  10. 机器学习4个常用超参数调试方法!