数据可视化基础专题(十九):Pandas120题(四)51-80

第三期 金融数据处理

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.查看数据前三行

data.head(3)

53.查看每列数据缺失值情况

data.isnull().sum()

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.计算前一天与后一天收盘价的差值

data['收盘价(元)'].diff()

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天

data.shift(5)

76.将数据向前移动5天

data.shift(-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))

原文地址:https://www.cnblogs.com/qiu-hua/p/14728387.html