鉴于 regplot 计算间隔和引导程序中的平均值来查找每个箱的置信区间,因此必须手动重新计算它们以进行进一步研究似乎是一种浪费,因此:
问题:如何访问正则图的计算平均值和置信区间?
示例:此代码生成一个漂亮的 bin 均值与 CI 的图:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# just some random numbers to get started
fig, ax = plt.subplots()
x = np.random.uniform(-2, 2, 1000)
y = np.random.normal(x**2, np.abs(x) + 1)
# Manual binning to retain control
binwidth=4./10
x_bins=np.arange(-2+binwidth/2,2,binwidth)
sns.regplot(x=x, y=y, x_bins=x_bins, fit_reg=None)
plt.show()
Run Code Online (Sandbox Code Playgroud)
并不是说按箱计算平均值并不容易,而是 CI 是使用随机数计算的。最好能够访问与绘制的完全相同的数字,那么我如何访问它们呢?一定有某种我忽略的 get_* 方法。
我有一个大(O(10^6)行)数据集(带值的点),我需要对所有点执行以下操作:
“非矢量化”方法是简单地循环所有点......对于所有点,然后应用逻辑。然而,这扩展性很差。
我已经包含了一个可以完成我想要的玩具示例。我已经考虑过的想法是:
这是我要实现的逻辑的一个玩具示例:
import pandas as pd
import numpy as np
from shapely.wkt import loads
import geopandas as gp
points=[
'POINT (1 1.1)', 'POINT (1 1.9)', 'POINT (1 3.1)',
'POINT (2 1)', 'POINT (2 2.1)', 'POINT (2 2.9)',
'POINT (3 0.8)', 'POINT (3 2)', 'POINT (3 3)'
]
values=[9,8,7,6,5,4,3,2,1]
df=pd.DataFrame({'points':points,'values':values})
gdf=gp.GeoDataFrame(df,geometry=[loads(x) for x in df.points], crs={'init': 'epsg:' + str(25832)})
for index,row in gdf.iterrows(): # Looping over all points
gdf['dist'] …Run Code Online (Sandbox Code Playgroud)