使用 .fillNA() 填充数据,数据来自 Quandl
Filling data using .fillNA(), data pulled from Quandl
我从 Quandl 中提取了一些原油价格 (WTI) 和卡特彼勒 (CAT) 价格的股票数据。当我将两个数据帧连接在一起时,我留下了一些 NaN。我的最终目标是 运行 a .Pearsonr() 来评估相关性(连同 p 值),但是由于所有的 Nan,我无法让 Pearsonr() 工作。所以我想清理它们。当我使用 .fillNA() 函数时,它似乎不起作用。我什至尝试过 .interpolate() 和 .dropna()。 None 其中似乎有效。这是我的工作代码。
import Quandl
import pandas as pd
import numpy as np
#WTI Data#
WTI_daily = Quandl.get("DOE/RWTC", collapse="daily",trim_start="1986-10-10", trim_end="1986-10-15")
WTI_daily.columns = ['WTI']
#CAT Data
CAT_daily = Quandl.get("YAHOO/CAT.6", collapse = "daily",trim_start="1986-10-10", trim_end="1986-10-15")
CAT_daily.columns = ['CAT']
#Combine Data Frames
daily_price_df = pd.concat([CAT_daily, WTI_daily], axis=1)
print daily_price_df
#Verify they are dataFrames:
def really_a_df(var):
if isinstance(var, pd.DataFrame):
print "DATAFRAME SUCCESS"
else:
print "Wahh Wahh"
return 'done'
print really_a_df(daily_price_df)
#Fill NAs
#CAN'T GET THIS TO WORK!!
daily_price_df.fillna(method='pad', limit=8)
print daily_price_df
# Try to interpolate
#CAN'T GET THIS TO WORK!!
daily_price_df.interpolate()
print daily_price_df
#Drop NAs
#CAN'T GET THIS TO WORK!!
daily_price_df.dropna(axis=1)
print daily_price_df
当我使用以下代码从头开始创建数据框时,我设法使该功能正常工作,这是值得的:
import pandas as pd
import numpy as np
d = {'a' : 0., 'b' : 1., 'c' : 2.,'d':None,'e':6}
d_series = pd.Series(d, index=['a', 'b', 'c', 'd','e'])
d_df = pd.DataFrame(d_series)
d_df = d_df.fillna(method='pad')
print d_df
起初我以为我的数据可能不是数据框形式,但我使用了一个简单的测试来确认它们实际上是数据框。我留下的唯一结论(在我看来)是它与 Quandl 数据帧的结构有关,或者可能与 TimeSeries 性质有关。请知道我对 python 有点陌生,所以请为 begginner/novice 构建答案。非常感谢任何帮助!
pot shot - 你是不是忘了分配或使用 inplace 标志。
daily_price_df = daily_price_df.fillna(method='pad', limit=8)
OR
daily_price_df.fillna(method='pad', limit=8, inplace=True)
我从 Quandl 中提取了一些原油价格 (WTI) 和卡特彼勒 (CAT) 价格的股票数据。当我将两个数据帧连接在一起时,我留下了一些 NaN。我的最终目标是 运行 a .Pearsonr() 来评估相关性(连同 p 值),但是由于所有的 Nan,我无法让 Pearsonr() 工作。所以我想清理它们。当我使用 .fillNA() 函数时,它似乎不起作用。我什至尝试过 .interpolate() 和 .dropna()。 None 其中似乎有效。这是我的工作代码。
import Quandl
import pandas as pd
import numpy as np
#WTI Data#
WTI_daily = Quandl.get("DOE/RWTC", collapse="daily",trim_start="1986-10-10", trim_end="1986-10-15")
WTI_daily.columns = ['WTI']
#CAT Data
CAT_daily = Quandl.get("YAHOO/CAT.6", collapse = "daily",trim_start="1986-10-10", trim_end="1986-10-15")
CAT_daily.columns = ['CAT']
#Combine Data Frames
daily_price_df = pd.concat([CAT_daily, WTI_daily], axis=1)
print daily_price_df
#Verify they are dataFrames:
def really_a_df(var):
if isinstance(var, pd.DataFrame):
print "DATAFRAME SUCCESS"
else:
print "Wahh Wahh"
return 'done'
print really_a_df(daily_price_df)
#Fill NAs
#CAN'T GET THIS TO WORK!!
daily_price_df.fillna(method='pad', limit=8)
print daily_price_df
# Try to interpolate
#CAN'T GET THIS TO WORK!!
daily_price_df.interpolate()
print daily_price_df
#Drop NAs
#CAN'T GET THIS TO WORK!!
daily_price_df.dropna(axis=1)
print daily_price_df
当我使用以下代码从头开始创建数据框时,我设法使该功能正常工作,这是值得的:
import pandas as pd
import numpy as np
d = {'a' : 0., 'b' : 1., 'c' : 2.,'d':None,'e':6}
d_series = pd.Series(d, index=['a', 'b', 'c', 'd','e'])
d_df = pd.DataFrame(d_series)
d_df = d_df.fillna(method='pad')
print d_df
起初我以为我的数据可能不是数据框形式,但我使用了一个简单的测试来确认它们实际上是数据框。我留下的唯一结论(在我看来)是它与 Quandl 数据帧的结构有关,或者可能与 TimeSeries 性质有关。请知道我对 python 有点陌生,所以请为 begginner/novice 构建答案。非常感谢任何帮助!
pot shot - 你是不是忘了分配或使用 inplace 标志。
daily_price_df = daily_price_df.fillna(method='pad', limit=8)
OR
daily_price_df.fillna(method='pad', limit=8, inplace=True)