У меня есть три блока данных панды, которые содержат три типа индекса 15 минут, 1 минута и 15 секунд, я добавил NaN
s в dataframes, как он идет дальше, и построил тему на том же рисунке.Как ограничить заполнение NaN в dataframe pandas
График:
Теперь я хочу, чтобы заменить один из dataframe NaN
с, я использовал ffill()
, он работал, но мне нужно, чтобы ограничить заполнение NaN
, мне не нужно то, что я отметил красным.
Graph2:
Мой участок должен выглядеть как это:
Dataframes:
http://bayanbox.ir/id/1324113030042053806?download
http://bayanbox.ir/id/774076250887409862?download
http://bayanbox.ir/id/6217190851751601245?download
Источник:
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')
Что вы имеете в виду «не показывает должного сюжета»? Если вам не хватает данных (в форме «NaN's», то ничего не будет строить. – Ffisegydd
Что-то не так в dataframe данных «data2», сюжет должен выглядеть как график NOAA, я думаю, что «NaN's больше, чем то, что должен быть – Moradi