gpt4 book ai didi

python - 避免在 Seaborn 中绘制缺失值

转载 作者:行者123 更新时间:2023-12-02 06:51:35 34 4
gpt4 key购买 nike

问题:我有几天的时间序列数据,并且我使用 sns.FacetGrid Seaborn python 库的函数以分面形式绘制这些数据。在某些情况下,我发现提到的seaborn函数用连续线绘制了两个读数之间的连续缺失值(nan值)。虽然 matplotlib 将缺失值显示为间隙,这是有道理的。演示示例如下

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# create timeseries data for 3 days such that day two contains NaN values
time_duration1 = pd.date_range('1/1/2018', periods=24,freq='H')
data1 = np.random.randn(len(time_duration1))
ds1 = pd.Series(data=data1,index=time_duration1)
time_duration2 = pd.date_range('1/2/2018',periods=24,freq='H')
data2 = [float('nan')]*len(time_duration2)
ds2 = pd.Series(data=data2,index=time_duration2)
time_duration3 = pd.date_range('1/3/2018', periods=24,freq='H')
data3 = np.random.randn(len(time_duration3))
ds3 = pd.Series(data=data3,index=time_duration3)
# combine all three days series and then convert series into pandas dataframe
DS = pd.concat([ds1,ds2,ds3])
DF = DS.to_frame()
DF.plot()

结果如下图 enter image description here

上面的 Matplotlib 图显示了带有间隙的缺失值。现在让我们为seaborn函数准备相同的数据

DF['col'] = np.ones(DF.shape[0])# dummy column but required for facets
DF['timestamp'] = DF.index
DF.columns = ['data_val','col','timestamp']
g = sns.FacetGrid(DF,col='col',col_wrap=1,size=2.5)
g.map_dataframe(plt.plot,'timestamp','data_val')

enter image description here

看看seaborn 图如何用一条线显示缺失的数据。我应该如何强制seaborn不使用这样的线绘制nan值?

注意:这是一个虚拟示例,无论如何我都需要分面网格来绘制数据。

最佳答案

FacetGrid 默认情况下会从数据中删除 nan。原因是seaborn中的一些函数无法与nans一起正常工作(特别是一些统计函数,我想说)。

为了保留数据中的 nan 值,请使用 FacetGriddropna=False 参数:

g = sns.FacetGrid(DF,... , dropna=False)

关于python - 避免在 Seaborn 中绘制缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757375/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com