[Python] numpy fillna() for Dataframe
2023-09-14 09:00:51 时间
In the store marketing, for many reason, one stock's data can be incomplete:
We can use 'forward fill' and 'backward fill' to fill the gap:
forward fill:
backward fill:
TO do those in code, we can use numpy's 'fillna()' mathod:
"""Fill missing values""" import numpy as np import pandas as pd import matplotlib.pyplot as plt import os def fill_missing_values(df_data): df_data.fillna(method='ffill', inplace=True) return df_data.fillna(method='bfill', inplace=True) 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()
相关文章
- [Python]架设python虚拟环境以及部署PythonWeb服务
- [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决
- python类中的self参数和cls参数
- python及numpy,pandas易混淆的点
- Python使用numpy实现BP神经网络
- Python中第三方库Requests库的高级用法详解
- python工具——NumPy
- 使用Python处理Excel表格的简单方法
- 【Python入门】NumPy 入门知识介绍,看这一篇足矣
- Python图像处理丨OpenCV+Numpy库读取与修改像素
- python numpy数组中冒号 : 的使用--全局选择、表示区间
- python关闭socket端口立即释放
- python 怎么让list里面设置NAN numpy.nan
- python函数回顾:hex()
- Python自动化部署工具-Fabric
- 【Python-Numpy】numpy.expand_dims()的解析与使用
- Python制作字符画(pillow,numpy的使用)
- python工具方法 3 numpy多维数组清洗,删除任意维度的数组,仅保留感兴趣的一维数据
- 【学习经验分享NO.16】超全代码-python画Sigmoid,ReLU,Tanh等十多种激活函数曲线及其梯度曲线(持续更新)
- 第9讲:Python列表对象查操作之通过索引获取列表中的元素
- Python科学库sklearn.numpy.scipy. matplotlib.pandas
- 如何构建一个Python包