美文网首页
数据缺失

数据缺失

作者: D_Major | 来源:发表于2019-05-07 14:26 被阅读0次

对于交易记录有中断的股票, 我们采用向前填充, 即使用断点的值连续到下一个开始交易的地点。而不是直线连接两点, 原因是直线连接会创造出不存在的点, 影响判断.
而对于起点之前不存在的数据, 我们采用向后填充, 即将起点的数据连续到第一天.

向前填充:

df.fillna(method='ffill', inplace=True)
df.fillna(method='pad', inplace=True)  # 或者pad

inplace为True将会在同一个DataFrame中保存

向后填充:

df.fillna(method='bfill', inplace=True)
df.fillna(method='backfill', inplace=True)  # 或者backfill

注意: 一定要先使用向前填充再使用向后填充, 否则会使用到未来的值(即不存在的值)
全部代码如下

"""Fill missing values"""

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os

def fill_missing_values(df_data):
    """Fill missing values in data frame, in place."""
    df_data.fillna(method='ffill', inplace=True)
    df_data.fillna(method='bfill', inplace=True)
    return df_data


def symbol_to_path(symbol, base_dir="data"):
    """Return CSV file path given ticker symbol."""
    return os.path.join(base_dir, "{}.csv".format(str(symbol)))


def get_data(symbols, dates):
    """Read stock data (adjusted close) for given symbols from CSV files."""
    df_final = pd.DataFrame(index=dates)
    if "SPY" not in symbols:  # add SPY for reference, if absent
        symbols.insert(0, "SPY")

    for symbol in symbols:
        file_path = symbol_to_path(symbol)
        df_temp = pd.read_csv(file_path, parse_dates=True, index_col="Date",
            usecols=["Date", "Adj Close"], na_values=["nan"])
        df_temp = df_temp.rename(columns={"Adj Close": symbol})
        df_final = df_final.join(df_temp)
        if symbol == "SPY":  # drop dates SPY did not trade
            df_final = df_final.dropna(subset=["SPY"])

    return df_final


def plot_data(df_data):
    """Plot stock data with appropriate axis labels."""
    ax = df_data.plot(title="Stock Data", fontsize=2)
    ax.set_xlabel("Date")
    ax.set_ylabel("Price")
    plt.show()


def test_run():
    """Function called by Test Run."""
    # Read data
    symbol_list = ["JAVA", "FAKE1", "FAKE2"]  # list of symbols
    start_date = "2005-12-31"
    end_date = "2014-12-07"
    dates = pd.date_range(start_date, end_date)  # date range as index
    df_data = get_data(symbol_list, dates)  # get data for each symbol

    # Fill missing values
    fill_missing_values(df_data)

    # Plot
    plot_data(df_data)


if __name__ == "__main__":
    test_run()

相关文章

  • 数据的缺失值处理说明

    缺失值说明 缺失值产生的原因 缺失值处理 缺失值说明 缺失数据是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、...

  • 121、处理缺失数据

    处理缺失数据 滤除缺失数据 填充缺失数据 如果全为NA值则插值方法不起作用。 源码:

  • 应用R语言进行缺失数据探索及可视化

    R语言中缺失数据处理 应用高级方法进行缺失数据的管理 缺失数据主要包括missing completely at ...

  • 机器学习 - 特征工程

    数据处理 缺失值处理行数据缺失过多,用户区分度就会降低,列数据缺失过多会导致建模存在偏差fillna:填充缺失值;...

  • 7.pandas处理缺失数据

    生成数据 剔除缺失数据 填补缺失数据 附:不论是剔除,还是填补缺失数据,最后都需要做如下操作,例:

  • 2019-04-03

    一、数据清洗 1.1对缺失值的处理 定范围 定量:了解数据库中哪些字段有缺失,缺失比例如何。 定性:明确有缺失数据...

  • 数据清洗和准备

    一、处理缺失数据 处理方法有: 1、滤除缺失数据 2、填充缺失数据 填充用fillna函数,它的参数有: 其中me...

  • day80-数据清洗及数据库连接

    1数据清洗 1.1缺失数据处理 isnull检测缺失值;dropna删除缺失值;python内置的none值在对象...

  • pandas基础教程——Day2

    本章内容 数据处理 数据合并 一、数据处理 通过dropna()函数滤除缺失数据: 填充缺失数据:ffill与bf...

  • 数据分析工具pandas快速入门教程5-处理缺失数据

    第5章 缺失数据 介绍 很少没有任何缺失值的数据集。 有许多缺失数据的表示。 在数据库中是NULL值,一些编程语言...

网友评论

      本文标题:数据缺失

      本文链接:https://www.haomeiwen.com/subject/haueoqtx.html