zoukankan      html  css  js  c++  java
  • 数据可视化基础专题(十九):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))

  • 相关阅读:
    http://codeforces.com/problemset/problem/594/A
    http://codeforces.com/contest/610/problem/D
    http://codeforces.com/contest/612/problem/D
    http://codeforces.com/problemset/problem/712/D
    http://codeforces.com/problemset/problem/545/D
    18/10/26 周五集训队第二次比赛补题题解
    归并排序
    hdu 2510 符号三角形
    位运算符的小总结
    hdu 1584 蜘蛛纸牌
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14728387.html
Copyright © 2011-2022 走看看