PostgreSQL рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдкрд┐рд╡рдЯ рдЯреЗрдмрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛

рд╢реБрдн рджрд┐рдиред

рдЬрдм рдореИрдВ рд╕рдВрд╕реНрдерд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдХрдИ рдЕрд░реНрдз-рд╕рдВрд░рдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЙрдкрд╕рд░реНрдЧ "рд╕реЗрдореА" рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ, .xls, .txt рдпрд╛ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ (рд╕реНрддрд░ рд╕реЗрдВрд╕рд░, рддрд╛рдкрдорд╛рди, рд╡рд░реНрддрдорд╛рди рд╡реЗрдЧ, рд╡рд╛рдпреБрдордВрдбрд▓реАрдп рджрдмрд╛рд╡, рдЖрд░реНрджреНрд░рддрд╛, рдФрд░ рдЗрддрдиреЗ рдкрд░ 20-30 рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ) рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рд╣реИред рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ: рдпрд╛ рддреЛ рдПрдПрд╕рд╕реАрдЖрдИ рдпрд╛ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдЬрд┐рд╕реЗ рддрдм рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдПрд╕рд╕реАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЦреБрдж рдЗрд╕ рдЕрд░рд╛рдЬрдХрддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рддрд╛рдХрд┐ рд╕рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреА рдЦреЛрдЬ рди рдХрд░ рд╕рдХреВрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рднреВ-рд╕реВрдЪрдирд╛) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдЙрдкрд▓рдмреНрдз рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрди рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдкрдиреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рди рдкрд░рд┐рд╕рд░ рдирд╣реАрдВ рдерд╛ред

рдЗрд╕ рдкреВрд░реЗ рдлрд╝рд╛рд░реНрдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдорд╛рдирдХ рдЪреАрдЬрд╝ рд╣реИ, рдирдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ: рдЕрдЦрдВрдбрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди), рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рдирд╛, рдЗрд╕ рдбреЗрдЯрд╛ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓ рдЪрд▓рд╛рдирд╛, рдореЙрдбрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ (рдлрд┐рд░ рд╕реЗ, рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛), рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред


рдЖрдВрдХрдбрд╝реЗ


рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рджреБрдЦрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рди рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХреЗрддрдХ (рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдФрд╕рдд, рд╡рд┐рдЪрд▓рди, рдЖрджрд┐) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдмрд▓реНрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдЯреЗрдмрд▓ (рдкрд┐рд╡рдЯ рдЯреЗрдмрд▓) рднреА рдереЗред

рд╕рд░рд▓

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрддрд┐ рдбреЗрдЯрд╛ рд╣реИ, рд╣рдореЗрдВ рдлрд╝реЙрд░реНрдо рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЧрддрд┐ рдХреЗ рд╕реНрдирд╛рддрдХ, рд╕реЗрдореА / рдПрд╕Repeatability,%
0-1060%
10-2030%
20-3010%

рдореВрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд▓рдЧрднрдЧ 10k рдЧрддрд┐ рдорд╛рди рд╣реИред рдореИрдВ рдПрдХ рдПрдХреНрд╕реЗрд▓ рдЧреБрд░реБ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ VBA рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ (рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрднреА рднреА рд╕реВрддреНрд░реЛрдВ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдлрд┐рд░ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣, рд╕рд╛рде рд╣реА рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛рдПрдВ рднреА рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ред рдпрд╣ рдУрд╡рд░рдХрд┐рд▓ рд╣реИ)ред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ (рдореИрдВ PostgresSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ) рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

REATE TABLE tbldata ( dataid serial NOT NULL, measurementdate timestamp without time zone, velocity double precision, direction double precision ); Select 100*(count(velocity)/(select count(*) from tbldata)::float) from tbldata velocity>0 and measurement<10; 


рдХрд┐рддрдиреЗ рдЙрдиреНрдирдпрди - рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЕрдиреБрд░реЛрдз, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ, рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдиреЛрдВ рдХреЛ "рд╕реЗ", "рдЪрд░рдг", "рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛" рдФрд░ рдЬреЛ SETOF RECORDS рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓

рд╕рдорд╕реНрдпрд╛ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬрдм рдлреЙрд░реНрдо рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
рдЧрддрд┐ рдХреЗ рд╕реНрдирд╛рддрдХ, рд╕реЗрдореА / рдПрд╕рд░рдВрдмрдо рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рд╡,%
рд╕реАNEрдПрд╕рдИYooрджрдкрдбрдмреНрд▓реНрдпреВNW
0 - 1010.88.21.31.32.110.16.925.4
10 - 204.00.10.11.63.30.60.110.9
20 - 301.80.00.01.23.40.10.02.2
рейреж - рекреж0.70.00.00.81.20.00.00.3
рекреж - релреж0.10.00.00.30.20.00.00.1
релреж - ремреж0.10.00.00.20.10.00.00.0
60 - 700.00.00.00.10.00.00.00.0
реж - 80реж0.00.00.00.10.00.00.00.0

рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ рджреЛ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЧреНрд░реЗрдбреЗрд╢рди рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 Select 100*(count(*)/(select count(*) from tbldata)::float) from tbldata where velocity >0 and velocity<10 and (direction>337.5 or direction<22.5); 


рдЖрдЧреЗ рдЖрдк рдЕрджреНрднреБрдд рдХреНрд░реЙрд╕рд╕реНрдЯреИрдм рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧрддрд┐ рдореЗрдВ рдХреНрд░рдорд┐рдХ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ рджрд┐рд╢рд╛ рдореЗрдВ рдХреНрд░рдорд┐рдХ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдХрд░ SQL рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 select 1 as VelGrd,1 as DirGrid, 100*(count(*)/(select count(*) from tbldata)::float) from tbldata where velocity >0 and velocity<10 and (direction>337.5 or direction<22.5); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрддрд┐ рдФрд░ рджрд┐рд╢рд╛ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрдд, рдЪрд░рдг рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА, рдЬреЛ рдЗрди рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ UNION рджреЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
 select * from crosstab('fnMakePercentageByTwoVariables(0,10,10,22.5,45,8)') as tbldata(velGrid int,dirGrid1 double precision, тАж,dirGrid8 double precision); 

рдХрд╛рдлреА рдмреБрд░рд╛

рдЧрддрд┐ рдХреЗ рд╕реНрдирд╛рддрдХ, рд╕реЗрдореА / рдПрд╕рд░рдВрдмрдо рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рд╡,%рдпреЛрдЧрд╕реБрд░рдХреНрд╖рд╛,%
рд╕реАNEрдПрд╕рдИYooрджрдкрдбрдмреНрд▓реНрдпреВNW
0 - 1010.88.21.31.32.110.16.925.466.1100.0
10 - 204.00.10.11.63.30.60.110.920.633.9
20 - 301.80.00.01.23.40.10.02.28.813.3
рейреж - рекреж0.70.00.00.81.20.00.00.33.14.5
рекреж - релреж0.10.00.00.30.20.00.00.10.71.4
релреж - ремреж0.10.00.00.20.10.00.00.00.40.7
60 - 700.00.00.00.10.00.00.00.00.20.3
реж - 80реж0.00.00.00.10.00.00.00.00.10.1
рдпреЛрдЧ17.68.31.45.510.310.97.139.0100.0
рдФрд╕рдд рдЧрддрд┐, рд╕реЗрдореА / рдПрд╕10.72.62.922.619.94.33.39.29.7
рдЕрдзрд┐рдХрддрдо рдЧрддрд┐, рд╕реЗрдореА / рдПрд╕76.257.850.278.361.148.842.962.578.3


рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдзреИрд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рддреАрди рдпреВрдирд┐рдпрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рджреНрд╡рд┐рдШрд╛рдд рд╡рд┐рдЪрд▓рди рдФрд░ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдПрдХ рдФрд░ рд╕рдВрдШ, рдФрд░ рдЗрддрдиреЗ рдкрд░, рдкрд░реНрдпрд╛рдкреНрдд рдХрд▓реНрдкрдирд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдПрдХ рд╕рдВрдЪрдпреА рдкреНрд░рддрд┐рд╢рдд рд╣реИ) рдореБрдЭреЗ рдЕрднреА рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд▓рдореЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рддрд┐рд░рд╕реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмрд╣реБрдд рдмреБрд░рд╛

рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░реАрдбрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рддрдм рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдХреЛ рдЕрднреА рднреА рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЧрддрд┐ рдХреЗ рд╕реНрдирд╛рддрдХ, рд╕реЗрдореА / рдПрд╕рд░рдВрдмрдо рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рд╡,%
рд╕реА...NW
рдбрд┐рд╡рд╛рдЗрд╕ 1рдЙрдкрдХрд░рдг реи...рдбрд┐рд╡рд╛рдЗрд╕ 1рдЙрдкрдХрд░рдг реи
0 - 1010.88.2...1.31.3
..................


рд╣рдо рддреБрд░рдВрдд рд░реАрдбрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдореЗрд░реЗ рд▓рд┐рдП, рд╣рд╛рдБред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рддреЛ рдореБрдЭреЗ рд╡рд╛рдХрдИ рджреБрдЦ рд╣реБрдЖред SPSS рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ, рд╕рдмрдХреБрдЫ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдХрд░рдиреЗ рдФрд░ рдЖрдкрдХреЛ рд╣реЗрдЯ рдЯрди рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд╣рд╛рдВ рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдЪрдпреА рдкреНрд░рддрд┐рд╢рдд рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рд╣рд╛рде рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдирд┐рд░реНрдгрдп


рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рдЕрдЬрдЧрд░ рд╣реИ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕рдм рдХреБрдЫ рдирд░рдХ рдХреЗ рд╕рд╛рде, рдкрд░реНрдпрд╛рдкреНрдд рджрд░реНрдж рдФрд░ рдкреАрдбрд╝рд╛ред рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рддреЗрдЬрд╝ рдФрд░ рдЕрдЪреНрдЫреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИред рд╕рд╛рде рд╣реА, рдХрд╛рдо рдХреА рдЧрддрд┐ рдХреЛрдИ рдХрд╛рд░рдХ рдирд╣реАрдВ рд╣реИ - рдЬреЛ рд▓реЛрдЧ рдореЗрд░реЗ рд╕рд╛рде рдпрд╣ рд╕рдм рдХрд░рддреЗ рд╣реИрдВ, рднрдЧрд╡рд╛рди рди рдХрд░реЗ, рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред рддреЛ рдПрдХ рдорд┐рдирдЯ рд░реБрдХрд┐рдП - рдПрдХ рджреЛ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп - рдпрд╣ рд╕рд┐рд░реНрдл рд╕реНрд╡рд░реНрдЧреАрдп рдЖрдирдВрдж рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдореЛрдХреНрд╖ рдкрдВрдбреЛрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЖрдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд╣рдмреЗрд░рд╛ рдкрд░ рдПрдХ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ "рдкрд╛рдВрдбрд╛" рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдгред рдПрдХ-рдЖрдпрд╛рдореА - рд╢реНрд░реГрдВрдЦрд▓рд╛ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдореИрдВ рддрд╛рдирд╛рд╢рд╛рд╣ рдореЗрдВ рдпрд╛рдж рдХрд░рддрд╛ рдерд╛ред рд╢рдмреНрджрдХреЛрд╢ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдЗрдХрд┐рд▓реЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рдм рдкрд╛рдВрдбрд╛ рдХреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рд╕реЗ рд╣реИред
рдЖрдк рдкреНрд░рдореБрдЦ s ['a'] рдХреЗ рд╕рд╛рде-рд╕рд╛рде sa рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдХреА рд╕рдм, рдкрд╛рдВрдбрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ numpy рд╕реЗ рд╡реЗрдХреНрдЯрд░рдХреГрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ (рдореИрдВ numpy.where рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд░рд╣ рд╕рдХрддрд╛)ред рдПрдХ DataFrame рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдвреЗрд░ - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рджреЛ рдЖрдпрд╛рдореА рд╕рдВрд░рдЪрдирд╛ред рдкреИрдирд▓ рдореЗрдВ DataFrameред рдпрд╣ рд╕рдм рд╕реНрд▓рд╛рдЗрд╕, рд╕рдмрдЗрдВрдбреЗрдХреНрд╕, рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдорд┐рд╢реНрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рджрд┐рд╡реНрдп рд╣реИ!

рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╣ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
 import psycopg2 import pandas as pd import numpy as np from pandas.io.sql import frame_query conn_string = "host='localhost' dbname='test' user='postgres' password='**********'" conn = psycopg2.connect(conn_string) #frame_query   sql ,   DataFrame df = frame_query('select velocity,direction from tbldata', con=conn) 


рдЙрдирдХреЗ рд▓рд┐рдП рдЧреНрд░реЗрдбреЗрд╢рди рдФрд░ рд▓реЗрдмрд▓ рдмрдирд╛рдПрдВред

 def makeVelocityLabels(c): ret = dict() for levidx in xrange(len(c.levels)): lev=c.levels[levidx] ret[levidx]=str(lev).replace('(',"").replace(", ","-").replace(']',"") return ret velGrid = np.linspace(0,100,11) dirGrid = np.linspace(-22.5,337.5,9) dirLabels=['','',"","","","","",""] velLabels = makeVelocityLabels(pd.cut(velGrid,velGrid)).values() 

рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рджреЗрдЦреЛ рдХрдЯ рд╕рдорд╛рд░реЛрд╣ рджреЗрдЦрд╛ред рд╡рд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд▓рдЧреА рд╣реБрдИ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд░рдВрддрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рд╡рд╣ рдПрдХ рдЕрд╕рддрдд рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЪрд░ рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЕрдЧрд░ рдкрд╣рд▓реЗ, рдореИрдВ рд╣рдореЗрд╢рд╛ numpy.where рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ , рддреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:
 for i in xrange(len(velGrid)-1): veloity[np.where((velocity>velGrid[i]) & (velocity<velGrid[i+1]))]=velGrid[i] 

рддреЛ рдЕрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
 pd.cut(velocity,velGrid) 


рдЕрдЧрд▓рд╛, рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдмрдирд╛рдПрдБ, рдЗрд╕рдореЗрдВ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдЪрд░ рдбрд╛рд▓реЗрдВ:
 resultDf = pd.DataFrame(index=df.index,columns=df.columns) #df[df.direction>337.5].direction -   . # ,     . df.direction[df.direction>337.5]-=360 resultDf.velocity = pd.cut(df.velocity,velGrid,labels=velLabels,include_lowest=True) resultDf.direction = pd.cut(df.direction,dirGrid,labels=dirLabels,include_lowest=True) 


рддрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рджрд┐рд╢рд╛рдПрдВ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЧрддрд┐ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ), рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдЖрджрд┐), рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рджрд┐рд╢рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдиреНрдирдпрди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрд▓ рдХрд┐рддрдиреЗ рдорд╛рдк рд╣реИрдВред
 totalDir = resultDf.groupby("direction").size() direction  97  503  1251  592  2773  736  388  773 

рдореИрдВ рдЖрдХрд╛рд░ () рдХреЗ рдмрдЬрд╛рдп рдЧрд┐рдирддреА () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛, рдЬреЛ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рднреА, рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдП, рдФрд╕рдд рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕реНрд╡рдпрдВред

 dfDGr = df.copy() dfDGr.direction = resultDf.direction meanVel = dfDGr.groupby("direction").mean() maxVel = dfDGr.groupby("direction").max() totalVel = resultDf.groupby("velocity").size() pivot = 100 * pd.pivot_table(resultDf,rows='velocity',cols='direction',aggfunc=len, fill_value=0)/totalDir.sum() direction         velocity 0-10 1.279348 6.916913 10.839308 8.224378 25.432307 2.066639 1.265289 10.066076 10-20 0.056235 0.126529 3.992689 0.070294 10.881485 3.303810 1.560523 0.632644 20-30 0.000000 0.014059 1.813581 0.014059 2.235344 3.388163 1.223113 0.112470 30-40 0.014059 0.000000 0.674821 0.000000 0.323352 1.237171 0.801350 0.014059 40-50 0.000000 0.014059 0.140588 0.000000 0.056235 0.224940 0.253058 0.042176 50-60 0.014059 0.000000 0.084353 0.014059 0.042176 0.112470 0.168705 0.000000 60-70 0.000000 0.000000 0.028118 0.000000 0.014059 0.014059 0.126529 0.000000 70-80 0.000000 0.000000 0.014059 0.000000 0.000000 0.000000 0.056235 0.000000 


рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд▓реЗрдЯреЛрдВ рдХреЛ рдЖрдВрдХрдбрд╝реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдЧреЛрд▓ рдФрд░ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдХреЙрд▓рдо рдбрд╛рд▓рддреА рд╣реИред
 def getCumulate(s): ns = s.copy() for val in xrange(s.size): ns[ns.index[val]]=np.sum(s[s.index[val]:s.index[s.size-1]]) return ns pivot[""] = 100 * np.round(totalVel/float(np.sum(totalVel)),3) pivot[',%']=getCumulate(pivot[""]) totalDirFr = pd.DataFrame(100*totalDir/float(np.sum(totalDir))).T totalDirFr.index= [""] pivot = pivot.append(totalDirFr) meanVelFr = meanVel.T meanVelFr.index=[" "] pivot = pivot.append(meanVelFr) maxVelFr = maxVel.T maxVelFr.index=[" "] pivot = pivot.append(maxVelFr) #    -   ,    ,     NA pivot=pivot.reindex(columns=np.append(dirLabels,["",",%"])) pivot = np.round(pivot,1).fillna(0)          ,% 0-10 10.8 8.2 1.3 1.3 2.1 10.1 6.9 25.4 66.1 100.0 10-20 4.0 0.1 0.1 1.6 3.3 0.6 0.1 10.9 20.6 33.9 20-30 1.8 0.0 0.0 1.2 3.4 0.1 0.0 2.2 8.8 13.3 30-40 0.7 0.0 0.0 0.8 1.2 0.0 0.0 0.3 3.1 4.5 40-50 0.1 0.0 0.0 0.3 0.2 0.0 0.0 0.1 0.7 1.4 50-60 0.1 0.0 0.0 0.2 0.1 0.0 0.0 0.0 0.4 0.7 60-70 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.2 0.3 70-80 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.1 0.1  17.6 8.3 1.4 5.5 10.3 10.9 7.1 39.0 0.0 0.0   10.7 2.6 2.9 22.6 19.9 4.3 3.3 9.2 0.0 0.0   76.2 57.8 50.2 78.3 61.1 48.8 42.9 62.5 0.0 0.0 

рд╕рд╛рд░рд╛рдВрд╢:

рдкрд░рд┐рдгрд╛рдо рдареАрдХ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред рдХрдо рдЦреВрди? - рд╣рд╛рдВред рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ? - рд╣рд╛рдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реЗ рдмрд╡рд╛рд╕реАрд░ рд╣реИ рдХрд┐ рдЪрд░ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рдЕрдЧрд░ рд╡реЗ рддреБрд░рдВрдд рдЗрдирдкреБрдЯ рдереЗ, рддреЛ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдХрдордЬреЛрд░ рд▓реИрдкрдЯреЙрдк рдкрд░, рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ 7113 рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП 0.2 рд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд▓рддреА рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In162893/


All Articles