Python (x,y)空间中值的分数
我有一个看起来像这样的数据框,但有几十万行:Python (x,y)空间中值的分数,python,pandas,Python,Pandas,我有一个看起来像这样的数据框,但有几十万行: df D x y 0 y 5.887672 6.284714 1 y 9.038657 10.972742 2 n 2.820448 6.954992 3 y 5.319575 15.475197 4 n 1.647302 7.941926 5 n 5.825357 13.747091 6 n 5.937630 6.43
df
D x y
0 y 5.887672 6.284714
1 y 9.038657 10.972742
2 n 2.820448 6.954992
3 y 5.319575 15.475197
4 n 1.647302 7.941926
5 n 5.825357 13.747091
6 n 5.937630 6.435687
7 y 7.789661 11.868023
8 n 2.669362 11.300062
9 y 1.153347 17.625158
我想知道每个x:y网格空间中的值(“D”)的比例是“n”
我可以用蛮力,通过x和y,计算出百分比:
zonexy = {}
for x in np.arange(0,10,2.5):
dfx = df[(df['x'] >= x) & (df['x'] < x+2.5)]
zonexy[x] = {}
for y in np.arange(0,24,6):
dfy = dfx[(dfx['y'] >= y) & (dfx['y'] < y+6)]
try:
pctn = len(dfy[dfy['Descr']=='n'])/len(dfy) * 100.0
except ZeroDivisionError:
pctn = 0
zonexy[x][y] = pctn
但是这个,还有我尝试过的关于这个主题的所有变化,都非常缓慢。似乎应该有一种更有效的方法(可能是通过numpy),但我对此一无所知 一种方法是使用numpy的2D直方图功能:
pd.DataFrame(zonexy)
0.0 2.5 5.0 7.5
0 0 0 0 0
6 100 100 50 0
12 0 0 50 0
18 0 0 0 0