Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何限制pandas数据帧中的NaN填充_Python_Matplotlib_Pandas - Fatal编程技术网

Python 如何限制pandas数据帧中的NaN填充

Python 如何限制pandas数据帧中的NaN填充,python,matplotlib,pandas,Python,Matplotlib,Pandas,我有三个熊猫数据框,其中包含三种类型的索引15分钟周期,1分15秒,我在接下来的数据框中添加了NaNs,并在同一个图中绘制了主题 图表: 现在我想替换dataframeNaNs中的一个,我使用了ffill(),它工作了,但我需要限制填充NaN,我不需要我标记为红色的内容 图2: 我的情节应该是这样的: (来源:) 数据帧: 资料来源: import matplotlib.pyplot as plt import pandas as pd import numpy as np # 1

我有三个熊猫数据框,其中包含三种类型的索引15分钟周期,1分15秒,我在接下来的数据框中添加了
NaN
s,并在同一个图中绘制了主题

图表:

现在我想替换dataframe
NaN
s中的一个,我使用了
ffill()
,它工作了,但我需要限制填充
NaN
,我不需要我标记为红色的内容

图2:

我的情节应该是这样的:


(来源:)

数据帧:

资料来源:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 1 minutes recorded data
data = pd.read_csv('1m.csv', parse_dates=True, index_col='time')
# 15 minutes recorded data
data2 = pd.read_csv('15m.csv', parse_dates=True, index_col='time')
# 15 seconds recorded data
data3 = pd.read_csv('15s.csv', parse_dates=True, index_col='time')

del data['Unnamed: 0'], data2['Unnamed: 0'], data3['Unnamed: 0']

def add_nan(DF, T):
    start = DF.time[len(DF)-1]
    stop = DF.time[0]
    rng = pd.date_range(start, stop, freq=T)
    DF = DF.drop_duplicates('time').set_index('time').reindex(rng)
    return DF

data = pd.DataFrame({"1-min":np.array(data.Height[:]), "time":data.index})
data2 = pd.DataFrame({"15-min":np.array(data2.Height[:]), "time":data2.index})
data3 = pd.DataFrame({"15-sec":np.array(data3.Height[:]), "time":data3.index}) 

data = add_nan(data, '1min')
data2 = add_nan(data2, '15min')
data3 = add_nan(data3, '1S')

ax = data.plot(color='g', figsize=(10, 6))
data2.plot(ax=ax, color='b')
data3.plot(ax=ax, style='.-r')

plt.savefig('plot.png')
根据Pandas,限制参数应设置为
True

DataFrame.ffill(axis=0, inplace=False, limit=None, downcast=None)
Synonym for NDFrame.fillna(method=’ffill’)

此函数用于将
NaN
数据添加到数据帧,对于限制
NaN
填充
limit=True
应在数据帧中设置:

def add_nan(DF, T):
    start = DF.time[len(DF)-1]
    stop = DF.time[0]
    rng = pd.date_range(start, stop, freq=T)
    DF = DF.drop_duplicates('time').set_index('time').reindex(rng)
    return DF.ffill(limit=True)
你说“不显示正确的情节”是什么意思?如果您缺少数据(以
NaN
s的形式),那么它将不会绘制任何内容。“data2”数据帧有些错误,该绘图应该看起来像NOAA绘图,我认为“NaN”的绘图比它应该的要多