问题描述
使用以下 csv 数据: Data Image
我已将 csv 中的数据加载到 Pandas 数据透视表中,并输出:
[[nan nan nan ... nan nan 0.]
[nan 21 nan ... nan 0. nan]
[nan nan nan ... 0. nan nan]
...
[23. nan 13. ... nan nan nan]
[nan nan nan ... nan nan nan]
[nan 14 nan ... nan nan nan]]
但是在对结果使用 Scipy Gaussian 过滤器之后,数据随后被消隐,如下所示:
[[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
...
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]
[nan nan nan ... nan nan nan]]
有没有办法将高斯滤波器应用于数据透视表而不会使数据消隐?
代码如下:
import pandas as pd
import numpy as np
import scipy as sp
import scipy.ndimage
FILE_PATH = "."
def load_nut_data(file_path=FILE_PATH):
csv_path = os.path.join(file_path,"csv_file.csv")
return pd.read_csv(csv_path,usecols = ['GPSLon','GPSLat','NutCount'])
nut = load_nut_data()
nut.head()
Z = nut.pivot_table(index='GPSLon',columns='GPSLat',values='NutCount').T.values
print(Z)
Zg= sp.ndimage.filters.gaussian_filter(Z,sigma,mode='grid-constant')
print(Zg)
解决方法
这个过滤器被实现为一维卷积过滤器的序列。如果您的数据是 nans
,则这些 nans
作为乘数进入卷积,htnce 将整个卷积结果转换为 nans
。考虑用零替换 nans
。