pandas-批量运算,apply,applymap

apply也是可以计算列的,但更重要的功能是按行计算和groupby联合使用。
但是我一直都没太搞懂这个apply,今天查了一下发现几个问题。
比如我想把股票的最高涨幅和最低涨幅算出来。
用tushare获取随便一只股票的一段时间的数据。

import pandas as pd
import tushare as ts

gf = ts.get_k_data('601888', start='2017-08-09', end='2017-08-23')
gf = gf.reset_index(drop=True)
gf['qclose'] = gf['close'].shift()

得到初始数据。
这里我就随便找了一只。数据如下,因为涨幅都是(今日最高价/昨日收盘价-1)*100
昨日收盘价用shift向下滑一格比较方便。然后初始数据就是这样了。
date open close high low volume code qclose
0 2017-08-09 28.19 28.50 28.56 28.02 67591.0 601888 NaN
1 2017-08-10 28.38 28.19 28.72 28.10 64321.0 601888 28.50
2 2017-08-11 28.16 27.85 28.37 27.77 59756.0 601888 28.19
3 2017-08-14 27.84 28.00 28.38 27.81 67315.0 601888 27.85
4 2017-08-15 28.18 27.97 28.18 27.89 52820.0 601888 28.00
5 2017-08-16 27.95 28.41 28.56 27.95 60186.0 601888 27.97
6 2017-08-17 28.41 28.82 28.89 28.41 49456.0 601888 28.41
7 2017-08-18 28.70 29.40 29.46 28.62 106633.0 601888 28.82
8 2017-08-21 29.30 29.76 30.20 29.29 129638.0 601888 29.40
9 2017-08-22 29.76 29.59 30.06 29.30 79633.0 601888 29.76
10 2017-08-23 29.59 29.48 30.25 29.40 80800.0 601888 29.59
对于今天的问题最简单的方法还是直接列计算。

gf['high_rate'] = (gf['high']/gf['qclose'] - 1) * 100
gf['low_rate'] = (gf['low'] / gf['qclose'] - 1) * 100

但是今天研究的是apply。就用apply试试。行元素axis=1,我想应该把dataframe变成跟参数一样多个数吧。

def rate(qclose,high,low):
        high_rate = (high / qclose - 1) * 100
        low_rate = (low / qclose - 1) * 100
        return high_rate,low_rate
gf = gf[['high', 'low','qclose']]
gf.apply(rate,axis=1)

哈哈,果然报错。


然后我用了这个网址的方法pandas中apply的使用方法

    def rate(gf):
        gf['high_rate'] = (gf['high'] / gf['qclose'] - 1) * 100
        gf['low_rate'] = (gf['low'] / gf['qclose'] - 1) * 100
        return gf

    gf = gf[['high', 'low','qclose']]
    df = gf.apply(rate,axis =1)
    # print(gf)
    print(df)

我觉得这是脱了裤子放屁啊,完全不懂为啥这么干,能用列计算的写这个def的价值何在?我可能需要单独一个元素然后去获得其他资源跟一列有啥关系?

查了查stackoverflow发现问题了。
多列apply问题
axis=1
如果def的参数f(x)x只是普通参数,比如str,float之类。这好像会默认按行计算,而不是按我想的是行元素。
行元素的话,要把参数变成dataframe才行。
如这篇文章第二个例子
df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)还是不太对,我想还是用回map吧。

最后apply应该是用于groupby比较多吧,但是groupby之后还是按列计算的比较多吧,applymap是对于一个dataframe中每一个元素进行计算,我觉得也不太好用,因为列都是各种特征要统一计算的话,我能想到的是normalize,这个用sklearn有专门的模块,好用。
失败的apply运用,有点没想到什么时候必须用到它。

然后又不死心,又搜索一番,发现了第二个方法。方法二
看起来好像要把dataframe切片之后才能用到元素级别。结果还是这样啊,

image.png

看起来还是一行为一个参数,看起来apply运用在多列上计算还是不太理想。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 1,106评论 0 1
  • 30 教练改变了丈夫? 这次在浩身上用教练,还是颇有成效的,为什么前些年反而没有呢? 我发现以前用教练的动机是“把...
    卫红教练阅读 413评论 1 1
  • “我跟你说,我做了一个好奇怪的梦。我梦见自己在宿舍睡觉,然后做梦去图书馆找依然,但是一进图书馆就趴着睡着了,接着梦...
    盲心桥阅读 443评论 0 0
  • 一次愉快、顺利的合作,必须是在双方互相信任的条件下的才能进行的。这种信任不该是表面上的、口头上的信任,而...
    玉林林林林阅读 659评论 0 0
  • 好久没回家,回家前期待着回家。 读大三的我,坚持早起,在餐厅吃早饭,坚持晚上运动。 相信此次自己的自律已经可以抵抗...
    刘梦月阅读 488评论 0 0