modified
Here I'll present an approach which approximates the derivatives of an unknown area f[x,y] in an irregular {x,y}-mesh (of course also in a regular mesh)!
Assumptions:
irregular mesh (2D) is available
unknown area can be approximated by a polynom O[3,3] in the neighborhood of every meshpoint
the area parameters are estimated (LeastSquares) using some neighboring meshpoints
startup:
mesh = DiscretizeRegion[Disk[] ] ; (* mesh*) pts = MeshCoordinates[mesh ]; (* meshpoints*) nf = Nearest[pts -> "Index" ]; (* Neighbor points*)
neighbors of every meshpoint:
neighbors = Table[nf[pts[[ii]], 8 + 1] , {ii, 1, Length[pts]}] ; (* assuming 8 neighbors for every meshpoint*)
calculation of differentiation matrices:
Unknown area is approximated by taylor expansion up to O[3]. Coefficients are the area parameters fx,fy,fxx,fxy,fyy,fxxx,fxxy,fxyy,fyyy All these area parameters are evaluated in one step!
diffmat = Table[ index = neighbors[[i]]; {xi, yi} = pts[[index[[1]]]]; (* aktueller Punkt*) nj = Length[index] - 1;(* aktuelle Anzahl Nachbarn*) sparse = SparseArray[ Flatten[ Table[{{j, index[[j + 1]]} -> 1, {j, index[[1]]} -> -1}, {j, 1, nj}] , 1] , {nj, Length[pts] }]; pinv = PseudoInverse[ Table[ {xj, yj} = pts[[ index[[j + 1]] ]] ; {xj - xi, yj - yi, 1/2 (xj - xi)^2, (xj - xi) (yj - yi), 1/2 (yj - yi)^2, 1/6 (xj - xi)^3, 1/2 (xj - xi)^2 (yj - yi), 1/2 (xj - xi) (yj - yi)^2 , 1/6 (yj - yi)^3}, {j, 1, nj}] ]; pinv . sparse , {i, 1, Length[pts]}] ;
diffmat[[All,i,All] gives the i'th area parameter {fx,fy,fxx,fxy,fyy,fxxx,fxxy,fxyy,fyyy}[[i]]!
example:
f = Function[{x, y}, Sin[ x y ] ]; fi = Map[Apply[f, #] &, pts]; xyf = MapThread[Join[#1, {#2}] &, {pts, fi}] ; ListPlot3D[xyf , Mesh -> All]

Calculation of the area parameters:
{fx,fy,fxx,fxy,fyy,fxxx,fxxy,fxyy,fyyy} =Map[diffmat[[All, #, All ]] &, Range[1, 9]];
check result:
Show[{Plot3D[Derivative[1, 1][f][x, y], Element[{x, y}, mesh], Mesh -> All, PlotRange -> {All, {-1, 1}}[[1]] , AxesLabel -> {x, y, "Derivative[1,1][f][x,y]"}, PlotStyle -> Opacity[.5]] , Graphics3D[Point[MapThread[Join[#1, {#2}] &, {pts, fxy . fi }]]] } , PlotLabel -> "diffmat"]

Result agrees very well with the analytical derivative, especially for inner meshpoints!
This approach might be easily modified by changing the order of the local polynomial approximation and/or by adapting the number of neighbors to be considered
User @xzczd (thanks!) gave me the hint that this approach possibly is known as GFDM (generalized finite difference method)
1. addendum
To check the approach for the example used in @xzczd's answer we only have to change the two lines in my previous code
mesh = DiscretizeRegion[Rectangle[]] (*mesh*) f = Function[{x, y}, Sin[2 Pi (x - Pi/2)] Cos[Pi y]];

2. addendum
Qp's question finds an answer too. Changing pts=... in my previous code
pts = {{-2.30259, 2.40259}, {-2.30259, 2.70259}, {-2.30259, 3.00259}, {-2.30259, 3.30259}, {-0.310155, 0.410155}, {-0.310155, 0.710155}, {-0.310155, 1.01015}, {-0.310155, 1.31015}, {0.312375, -0.212375}, {0.312375, 0.0876253}, {0.312375, 0.387625}, {0.312375, 0.687625}, {0.693147, -0.593147}, {0.693147, -0.293147}, \ {0.693147, 0.00685282}, {0.693147, 0.306853}};
we get the differentiation matrix Derivative[1,1] (size 16X16)
diffmat[[All, 4, All]] (*{{-0.120679, 7.26295, -11.693, 4.76711, -0.940285, 6.46903, -11.841, 5.76336, 0., 0., 0., 0.332489, 0., 0., 0., 0.}, {-6.51901, 25.0985, -28.2169, 9.85328, -2.39166, 11.8775, -18.2575, 8.22388, 0., 0., 0., 0.331834, 0., 0., 0., 0.}, {-12.5212, 41.6491, -43.3899, 14.4732, -4.41721, 19.0184, -26.4006, 11.2637, 0., 0., 0., 0.324519, 0., 0., 0., 0.}, {-14.2909, 45.4676, -45.8112, 14.8384, -10.706, 38.9511, -47.3309, 18.5684, 0., 0., 0., 0.313474, 0., 0., 0., 0.}, {0., 0., 0., 0., 7.79339, -10.8215, 3.44813, -0.329057, 2.12253, -8.47835, 5.42944, 0.706927, 0., 0., 0., 0.128473}, {0., 0., 0., 0., -0.353074, 9.5816, -12.1636, 3.25332, 0.482822, 1.26365, -9.82602, 7.31184, 0., 0., 0., 0.449441}, {0., 0., 0., 0., -9.35514, 32.1033, -29.7607, 7.46485, -0.635949, 9.55741, -23.4592, 13.4467, 0., 0., 0., 0.638743}, {0., 0., 0., 0., -11.1111, 41.7677, -41.5247, 10.8681, 0., 2.67716, -19.463, 16.7858, 0., 0., 5.43178, -5.43178}, {0., 0., 0., 0., -0.272051, 0., 0., 0., 13.9969, -20.8049, 8.6933, -1.20906, 0.837216, -13.091, 15.3607, -3.51116}, {0., 0., 0., 0., -0.1769, 0., 0., 0., 3.89094, 0.999506, -4.81686, 0.366166, 0.0993203, -2.32354, -4.0086, 5.96998}, {0., 0., 0., 0., 2.03213, -2.03213, 0., 0., -2.03213, 10.8756, -12.2551, 3.41168, 0., 2.26766, -9.96709, 7.69943}, {0., 0., 0., 0., -11.1112, 30.6567, -25.9472, 6.40178, 0., 13.7884, -24.1771, 10.3887, 0., 0., -5.43178, 5.43178}, {0., 0., 0., 0., 0.275168, 0., 0., 0., 25.8154, -45.3621, 21.0069, -2.22901, 2.61984, -29.0903, 41.7112, -14.747}, {0., 0., 0., 0., 0.250612, 0., 0., 0., 14.5269, -20.0665, 4.34738, 0.491935, 3.03887, -21.7865, 25.8588, -6.66145}, {0., 0., 0., 0., 0.178312, 0., 0., 0., 6.44284, -4.34281, -2.6579, 0.0596134, 0.328696, -5.16065, 0.779191, 4.37271}, {0., 0., 0., 0., 0.0513305, 0., 0., 0., -2.73798, 14.7178, -12.9065, 0.783275, -1.19754, 7.83736, -20.5616, 14.0139}}*)
Hope it helps!