第三期 金融数据处理
51.使用绝对路径读取本地Excel数据
#请将下面的路径替换为你存储数据的路径
data = pd.read_excel('/Users/Desktop/600000.SH.xls')
WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero
52.查看数据前三行
53.查看每列数据缺失值情况
54.提取日期列含有空值的行
data[data['日期'].isnull()]
55.输出每列缺失值具体行数
for columname in data.columns:
if data[columname].count() != len(data):
loc = data[columname][data[columname].isnull().values==True].index.tolist()
print('列名:"{}", 第{}行位置有缺失值'.format(columname,loc))
56.删除所有存在缺失值的行
'''
备注
axis:0-行操作(默认),1-列操作
how:any-只要有空值就删除(默认),all-全部为空值才删除
inplace:False-返回新的数据集(默认),True-在原数据集上操作
'''
data.dropna(axis=0, how='any', inplace=True)
57.绘制收盘价的折线图
import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid') # 设置画图的风格
plt.rc('font', size=6) #设置图中字体和大小
plt.rc('figure', figsize=(4,3), dpi=150) # 设置图的大小
data['收盘价(元)'].plot()
# 等价于
import matplotlib.pyplot as plt
plt.plot(df['收盘价(元)'])
58.同时绘制开盘价与收盘价
data[['收盘价(元)','开盘价(元)']].plot()
59.绘制涨跌幅的直方图
plt.hist(df['涨跌幅(%)'])
# 等价于
df['涨跌幅(%)'].hist()
60.让直方图更细致
data['涨跌幅(%)'].hist(bins = 30)
61.以data的列名创建一个dataframe
temp = pd.DataFrame(columns = data.columns.to_list())
62.打印所有换手率不是数字的行
for i in range(len(data)):
if type(data.iloc[i,13]) != float:
temp = temp.append(data.loc[i])
temp
63.打印所有换手率为--的行
data[data['换手率(%)'].isin(['--'])]
64.重置data的行号
data = data.reset_index()
65.删除所有换手率为非数字的行
k =[]
for i in range(len(data)):
if type(data.iloc[i,13]) != float:
k.append(i)
data.drop(labels=k,inplace=True)
66.绘制换手率的密度曲线
data['换手率(%)'].plot(kind='kde')
67.计算前一天与后一天收盘价的差值
68.计算前一天与后一天收盘价变化率
data['收盘价(元)'].pct_change()
69.设置日期为索引
data = data.set_index('日期')
70.以5个数据作为一个数据滑动窗口,在这个5个数据上取均值(收盘价)
data['收盘价(元)'].rolling(5).mean()
71.以5个数据作为一个数据滑动窗口,计算这五个数据总和(收盘价)
data['收盘价(元)'].rolling(5).sum()
72.将收盘价5日均线、20日均线与原始数据绘制在同一个图上
data['收盘价(元)'].plot()
data['收盘价(元)'].rolling(5).mean().plot()
data['收盘价(元)'].rolling(20).mean().plot()
73.按周为采样规则,取一周收盘价最大值
data['收盘价(元)'].resample('W').max()
74.绘制重采样数据与原始数据
data['收盘价(元)'].plot()
data['收盘价(元)'].resample('7D').max().plot()
75.将数据往后移动5天
76.将数据向前移动5天
77.使用expending函数计算开盘价的移动窗口均值
data['开盘价(元)'].expanding(min_periods=1).mean()
78.绘制上一题的移动均值与原始数据折线图
data['expanding Open mean']=data['开盘价(元)'].expanding(min_periods=1).mean()
data[['开盘价(元)', 'expanding Open mean']].plot(figsize=(16, 6))
79.计算布林指标
data['former 30 days rolling Close mean']=data['收盘价(元)'].rolling(20).mean()
data['upper bound']=data['former 30 days rolling Close mean']+2*data['收盘价(元)'].rolling(20).std()#在这里我们取20天内的标准差
data['lower bound']=data['former 30 days rolling Close mean']-2*data['收盘价(元)'].rolling(20).std()
80.计算布林线并绘制
data[['收盘价(元)', 'former 30 days rolling Close mean','upper bound','lower bound' ]].plot(figsize=(16, 6))