使用tushare包获取某股票历史行情数据 输出该股票全部收盘比开盘上涨3%以上的日期 输出该股票全部开盘比前日收盘跌幅超过2%的日期 假如我从2010年1.1日开始,每个月第一个交易日买入1手股票,每一年最后一个交易日卖出全部的股票,到今天为止,个人收益如何
import pandas from pandas import Series,DataFrame import numpy as np import tushare
df_tushare = tushare.get_k_data(code='600519',start='2000-01-01') # code是股票代码,start是起始日期,写的早于上市时间,就按上市时间开始
# 写入数据
df_tushare.to_csv('./maotai.csv')
# 将data列的数据转成时间序列,而后将改列做为整个数据的行索引
data = pandas.read_csv('./maotai.csv',index_col='date',parse_dates=['date']) data.drop(labels='Unnamed: 0',axis=1,inplace=True) # 关于drop的方法,axis=1表明列,0表明行,inplace=True,表明在原数据上修改
# 输出该股票全部收盘比开盘上涨3%的日期 # (收盘-开盘)/开盘 > 0.03
indexs = (data['close']-data['open'])/data['open'] > 0.03 # 返回的是布尔值,知足条件是True
data.loc[indexs].index # 中括号里面能够写布尔值
data['close'].head().shift(1)
indexs = (data['open'] - data['close'].shift(1))/data['close'].shift(1)< -0.02 data.loc[indexs].index
new_data = data['2010-01':'2019'] # 切片能够只切年,也能够切到月,日
# 找出每年的第一个交易日对应的行数据(数据的从新取样)
df_month_first = new_data.resample('M').first() # M表明月份 日期是最后一天,可是数据是第一天的数据
# 获取每一年的最后一次开盘价
df_year_last = new_data.resample('Y').last() df_year_last[:-1] # 而后本身算就OK啦
1. None数组
2. num.nan(NaN)dom
import numpy import pandas from pandas import Series,DataFrame
df = DataFrame(data=numpy.random.randint(0,100,size=(10,12))) # 将某些数组元素复制为nan
df.iloc[1,1] = None df.iloc[5,6] = None df.iloc[3,5] = None df.iloc[4,4] = None df.iloc[2,8] = numpy.nan # 将NaN对应的行删除 # 1.进行空值检测
df.isnull() df.isnull().any(axis=1) # isnull 和 any一块儿用 True证实有空值
df.notnull().all(axis=1) # notnull 和 all一块儿用 False证实有空值
过滤函数 df.dropna() 因为是与drop相关的函数,因此axis=0表明行 df.dropna(axis=0) # 删除NaN所在的行
填充函数 df.fillna() 返回的是DateFrame,能够继续调用fillna df.fillna(method='bfill',axis=0) # 这里的axis=0是列 ,按照前边的值填充
df.fillna(method='ffill',axis=1) # 按照 行 后边的值填充
# 若是一列里连着多个NaN,这时候就须要用行填充