重新研读fish课代码 01

前言: fish在千聊的课已经收尾了。 她的课备得特别好,尤其是代码的注释做得特别好。 是很好的学习材料,我决定从头,重新复现她的可见代码,并把作业做一遍。 扎好基础,重新出发
import pandas as pd
%matplotlib inline

## stock = pd.read_csv('stock',parse_dates =True,index_col='Date')
## !! 文件名后面要加格式,才能被引用啊!  老犯这个错误
stock = pd.read_csv('stock.csv',parse_dates =True,index_col='Date')
stock.head()

stock.shape
(22, 5)
stock.columns
Index(['Open', 'High', 'Low', 'Close', 'Volume'], dtype='object')
stock.describe()
##!!  错误点1 少输入了括号,为什么有些要加括号,有些不加呢?
##  错误点2 ,单词总是打错


stock.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x21d86f6e128>
stock.Close.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x21d86f8c8d0>

接下来是索引和切片
我认为这些事第一课最有价值的地方。

print(stock.Open)
print (stock['Close'])
## @ stock.Open,意味着stock这个文件中的Open这列的数据。 
Date
2017-06-01    153.17
2017-06-02    153.58
2017-06-05    154.34
2017-06-06    153.90
2017-06-07    155.02
2017-06-08    155.25
2017-06-09    155.19
2017-06-12    145.74
2017-06-13    147.16
2017-06-14    147.50
2017-06-15    143.32
2017-06-16    143.78
2017-06-19    143.66
2017-06-20    146.87
2017-06-21    145.52
2017-06-22    145.77
2017-06-23    145.13
2017-06-26    147.17
2017-06-27    145.01
2017-06-28    144.49
2017-06-29    144.71
2017-06-30    144.45
Name: Open, dtype: float64
Date
2017-06-01    153.18
2017-06-02    155.45
2017-06-05    153.93
2017-06-06    154.45
2017-06-07    155.37
2017-06-08    154.99
2017-06-09    148.98
2017-06-12    145.42
2017-06-13    146.59
2017-06-14    145.16
2017-06-15    144.29
2017-06-16    142.27
2017-06-19    146.34
2017-06-20    145.01
2017-06-21    145.87
2017-06-22    145.63
2017-06-23    146.28
2017-06-26    145.82
2017-06-27    143.73
2017-06-28    145.83
2017-06-29    143.68
2017-06-30    144.02
Name: Close, dtype: float64
## 接下来是精确索引,感觉超有用!
print(stock.Close['2017-06-01'])
print(stock['Open']['2017-06-02'])
### 确实很好用,这个功能。

153.18
153.58
stock['Close'][0]

153.18000000000001
stock[['Close']]
### 这个双层方括号,意思是只显示close的列
stock[['Open','Close']]
##@ 这功能真的太好用了吧。  相当于剪切两列数据在一起,然后拼凑成新表格,这excle中,要好多次的操作才能实现哦。 
## 我之前还想 好好地学习excle来增进计算技能,现在看来,不用了耶,直接深挖python的函数和方法,能直接省去好多环节,哈哈哈哈我爱python
.loc 的作用到底是什么呢?

有点不记得了,这次好好体验试试吧

stock.loc['2017-06-01','Close']
## @ 我尝试把日期放在后面,发现不行,原理应该是先读取索引列,这个数据的索引列是“date”,只有先在索引列种寻找,才可以进行下一步。
153.18000000000001

感悟:

  • 直接索引,比如stock.Cloes['2017-06-01],是从列开始找数据. 是先找到close这列,然后再去找其中的时间对应项。
    而.loc则像是先找时间项。
  • 这种感觉就像一个军官,来巡视十字方队的军人。
  1. A军官,从方队的西北角走来,先是横着走,去找到某个士兵
  2. 而B军官(.loc),则是竖着走,去找到某个士兵。
  3. 那么C军官(.iloc)呢?
    慢慢摸索吧
stock.loc[:,'Close']
##@ :冒号的意思,原本是x:y,即索引列种第x到第y之间的数据,如果只是冒号,那就表示从头到尾全部的列。
Date
2017-06-01    153.18
2017-06-02    155.45
2017-06-05    153.93
2017-06-06    154.45
2017-06-07    155.37
2017-06-08    154.99
2017-06-09    148.98
2017-06-12    145.42
2017-06-13    146.59
2017-06-14    145.16
2017-06-15    144.29
2017-06-16    142.27
2017-06-19    146.34
2017-06-20    145.01
2017-06-21    145.87
2017-06-22    145.63
2017-06-23    146.28
2017-06-26    145.82
2017-06-27    143.73
2017-06-28    145.83
2017-06-29    143.68
2017-06-30    144.02
Name: Close, dtype: float64
stock.loc['2017-06-01':'2017-06-05','Open':'Close']
stock.loc['2017-06-01':'2017-06-05',['Close','Open']]
###@@ .loc[x,y]中的有两个基本参数,x代表基本的索引列参数,即竖着的第一排位置,y代表横着的位置

接下来是iloc时间啦。 我的理解iloc就是军官直接把每个位置都编好了坐标,不再说,第几排的,第几个,而是直接用数字坐标[3,2],大家都默认这种规则是第三排的第二个人,不再管每排的名称了。

stock.iloc[0,3]
153.18000000000001

那好吧,我就把iloc'索引理解为类似于经纬度的坐标系统吧。
以前我们说我现在的这个个地方,肯定是说“中国-四川-成都-温江”

而,坐标直接说‘北纬30.41.17,东经103.51.55’ 索引列就不再那么重要了。
所以iloc是很重要的索引方式,我称之为坐标索引法。

它的索引是从0 开始的,0代表第一位哦 ,大哥

0:3 代表第0,第1,第2. 不包含第3哦

stock.iloc[0:3,0:4]
stock.iloc[0:4,:]
stock['f']=stock['Open']-stock['Close']
stock.head()
stock['Close'].shift(1)
###@ 我的理解这个shift(1)是把那一列往下移动一格。 他的目的是想用昨天的收盘价,减去今天的开盘价,然后来计算闭盘期间发生了什么变化
Date
2017-06-01       NaN
2017-06-02    153.18
2017-06-05    155.45
2017-06-06    153.93
2017-06-07    154.45
2017-06-08    155.37
2017-06-09    154.99
2017-06-12    148.98
2017-06-13    145.42
2017-06-14    146.59
2017-06-15    145.16
2017-06-16    144.29
2017-06-19    142.27
2017-06-20    146.34
2017-06-21    145.01
2017-06-22    145.87
2017-06-23    145.63
2017-06-26    146.28
2017-06-27    145.82
2017-06-28    143.73
2017-06-29    145.83
2017-06-30    143.68
Name: Close, dtype: float64
stock['change']=stock['Close']-stock['Close'].shift(1)
stock.head()

过滤

我的理解是这个过滤相当于筛选功能

stock.Volume>5e7

## 原来这是一个布尔索引啊,不能够直接显示是哪些明细吗?
Date
2017-06-01    False
2017-06-02    False
2017-06-05    False
2017-06-06    False
2017-06-07    False
2017-06-08    False
2017-06-09     True
2017-06-12     True
2017-06-13    False
2017-06-14    False
2017-06-15    False
2017-06-16     True
2017-06-19    False
2017-06-20    False
2017-06-21    False
2017-06-22    False
2017-06-23    False
2017-06-26    False
2017-06-27    False
2017-06-28    False
2017-06-29    False
2017-06-30    False
Name: Volume, dtype: bool
stock[stock.Volume>5e7]
###这功能也太强大了吧
##??? 不过为什么一定要先在前面加上文件名称,才能显示成数据呢?

布尔运算是有规则的

  • and 且
  • or 或
  • not 非
## stock[stock.Close>stock.Open&stock.Volume>3e7]
stock[(stock.Close>stock.Open)&(stock.Volume>3e7)]
#!!! 我在原来代码中,没有加括号,这实在是个失误。 为什么呢?其实复杂运算都是要加括号的啊

##@@这是and的关系,并且。就是要满足两个条件才可以的
#接下来是或者关系
stock[(stock.Open>stock.Close)|(stock.change<0)]







#第一题:2017年6月22日当天的收盘价是多少?
stock.loc['2017-6-22','Close']
145.63
##第二题:第二题:** 成交量超过7千万的是哪一天?
stock[stock.Volume>7e7]
#第三题:在2017年6月28日,收盘价减去开盘价是多少?
stock.loc['2017-06-28','Close']-stock.loc['2017-06-28','Open']
1.3400000000000034
#第四题: 开盘价低于144并且成交量大于5千万那一天的收盘价是多少?
stock[(stock.Open<144)&(stock.Volume>5e7)]

stock.change.max()
4.0699999999999932

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

推荐阅读更多精彩内容