使用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,這時候就須要用行填充