Wie kann ich Perzentilergebnisse in Postgres und Pandas übereinstimmen?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich Perzentilergebnisse in Postgres und Pandas übereinstimmen?

by Anonymous » 03 Apr 2025, 04:43

Ich mache Berechnungen in der Datenbank und möchte die Ergebnisse gegen Pandas 'Berechnungen validieren. Die Endverwendung ist eine statistische Berechnung, also prozentuell_cont () die postgres -Funktion, die ich verwende.

Code: Select all

SELECT percentile_cont(0.25) WITHIN GROUP (order by obs1) as q1
, percentile_cont(0.5) WITHIN GROUP (order by obs1) as med
, percentile_cont(0.75) WITHIN GROUP (order by obs1) as q3
FROM my_table;
Es gibt Q1 = zurück

Code: Select all

73.99
, med =

Code: Select all

74.0
und Q3 =

Code: Select all

74.0085
als Ergebnis. Ich habe gesucht und der Konsens online ist das Interpolation = 'linear' Argument in pandas führt dazu, dass die Berechnungsmethode der von Perzentile_Cont () .
übereinstimmt

Code: Select all

dataframe = pandas.read_sql(sql='SELECT obs1 FROM my_table', con='my_connection_info')
dataframe = dataframe.sort_values(by='obs1')
percentiles = dataframe.quantile(q=[0.25, 0.5, 0.75],
axis=0,
numeric_only=False,
interpolation='linear',
method='single')
< /code>
Die Ergebnisse sind: < /p>
        obs1
0.25  73.992
0.50  74.000
0.75  74.006
< /code>
Ich bin verwirrt, weil nur das 75. Perzentil ausgeschaltet ist.  Q1 
und Q2 sehen wie ein Rundungsproblem aus, aber Q3 ist einfach ausgeschaltet. Postgres erhält das Ergebnis q3 , dass dies der Fall ist, oder wie die Ergebnisse von postgres und pandas zu Testzwecken übereinstimmen.
Was soll ich als nächstes versuchen?

Code: Select all

      obs1
24  73.982
12  73.983
18  73.984
7   73.985
2   73.988
20  73.988
4   73.992
10  73.994
16  73.994
1   73.995
6   73.995
9   73.998
15  74.000
19  74.000
3   74.002
11  74.004
21  74.004
13  74.006
17  74.006
8   74.008
5   74.009
22  74.010
14  74.012
23  74.015
0   74.030

Top