Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
eue
Commits
3096fb08
Commit
3096fb08
authored
Aug 02, 2021
by
KangMin An
Browse files
Update: 데이터 전처리 일부. 지역 코드 이름 오름차순 정렬 반환.
parent
a16834d5
Changes
4
Show whitespace changes
Inline
Side-by-side
server/Data명세서.md
View file @
3096fb08
...
...
@@ -64,9 +64,9 @@ PostgreSQL DB를 이용하여, 날씨 데이터와 분석 결과를 저장합니
데이터 분석용 파일의 형식은 csv이며 내용은 다음과 같습니다.
| Header | date | temp_out | humi_out | press | wind_speed | temp_in | humi_in |
| :------: | :----------: | :-------: | :-------: | :---: | :--------: | :-------: | :-------: |
| Contents | 날짜 및 시각 | 실외 온도 | 실외 습도 | 기압 | 풍속 | 실내 온도 | 실외 습도 |
| Header | date | temp_out | humi_out | press | wind_speed | temp_in | humi_in |
lights |
| :------: | :----------: | :-------: | :-------: | :---: | :--------: | :-------: | :-------: |
:----: |
| Contents | 날짜 및 시각 | 실외 온도 | 실외 습도 | 기압 | 풍속 | 실내 온도 | 실외 습도 |
광도 |
<br>
...
...
server/src/controllers/dataController.js
View file @
3096fb08
...
...
@@ -139,9 +139,18 @@ export const getOutWeatherData = (req, res) => {
export
const
getLocCode
=
async
(
req
,
res
)
=>
{
try
{
/* 통합 지역 코드 및 이름 json으로 생성 및 전송 */
const
does
=
await
db
.
Doe
.
findAll
({
logging
:
false
});
const
sggs
=
await
db
.
Sgg
.
findAll
({
logging
:
false
});
const
emds
=
await
db
.
Emd
.
findAll
({
logging
:
false
});
const
does
=
await
db
.
Doe
.
findAll
({
order
:
[[
"
name_doe
"
,
"
ASC
"
]],
logging
:
false
,
});
const
sggs
=
await
db
.
Sgg
.
findAll
({
order
:
[[
"
name_sgg
"
,
"
ASC
"
]],
logging
:
false
,
});
const
emds
=
await
db
.
Emd
.
findAll
({
order
:
[[
"
name_emd
"
,
"
ASC
"
]],
logging
:
false
,
});
let
doe_sgg
=
[];
let
sgg_emd
=
[];
...
...
server/src/data_processing/main.py
View file @
3096fb08
...
...
@@ -5,6 +5,7 @@
- 진행된 후의 Weights를 파일로 저장합니다.
"""
import
datetime
import
sys
import
psycopg2
...
...
@@ -14,6 +15,13 @@ from preprocessing import preprocess
dbconfig
=
{
"host"
:
sys
.
argv
[
1
],
"user"
:
sys
.
argv
[
2
],
"password"
:
sys
.
argv
[
3
],
"database"
:
sys
.
argv
[
4
]}
today
=
datetime
.
datetime
.
today
()
year
=
str
(
today
.
year
)
month
=
str
(
today
.
month
)
if
today
.
month
>=
10
else
'0'
+
str
(
today
.
month
)
day
=
str
(
today
.
day
)
if
today
.
day
>=
10
else
'0'
+
str
(
today
.
day
)
collected_at
=
year
+
"-"
+
month
+
"-"
+
day
# DB 연결
connection
=
psycopg2
.
connect
(
database
=
dbconfig
[
"database"
],
user
=
dbconfig
[
"user"
])
...
...
@@ -21,13 +29,23 @@ connection = psycopg2.connect(
# DB에 대한 동작을 위한 cursor 생성
cursor
=
connection
.
cursor
()
cursor
.
execute
(
"SELECT email as host, loc_code, using_aircon FROM Users"
)
hosts
=
cursor
.
fetchall
()
cursor
.
execute
(
"SELECT email, loc_code, using_aircon FROM Users"
)
users
=
cursor
.
fetchall
()
for
user
in
users
:
host
=
{
"email"
:
user
[
0
],
"loc_code"
:
user
[
1
],
"using_aircon"
:
user
[
2
]}
for
host
in
hosts
:
# 데이터 전처리
preprocess
(
cursor
,
host
)
# 데이터 분석
params
=
"main_proceduer_function"
# 데이터 분석 결과 저장
cursor
.
execute
(
"INSERT INTO
\"
Data_Processings
\"
(host,collected_at,params) VALUES (%s,%s,%s)"
,
(
host
[
"email"
],
collected_at
,
params
))
# Cursor와 Connection 종료
cursor
.
close
()
connection
.
close
()
server/src/data_processing/preprocessing.py
View file @
3096fb08
"""
#
##
preprocessing.py
# preprocessing.py
데이터 전처리를 위한 파일입니다.
DB에 저장된 값들을 불러와 사용자 등록 장소의 날씨 데이터와 외부 날씨 데이터를 결합해 CSV 파일을 생성합니다.
"""
def
preprocess
(
cursor
,
host
):
pass
"""
### preprocess(cursor, host)
- cursor : psycopg2의 SQL 실행을 위한 cursor.
- host : 사용자 정보.
사용자 정보를 바탕으로 외부 날씨와 내부 날씨를 검색해 CSV 파일로 작성합니다.
"""
cursor
.
execute
(
"SELECT t2.collected_at as
\"
date
\"
, temp_out, humi_out, press, wind_speed, temp_in, humi_in, lights FROM"
+
" (SELECT collected_at, temp as temp_out, humi as humi_out,press, wind_speed FROM Weather_Outs WHERE loc_code = %s) t1"
+
" JOIN "
+
" (SELECT collected_at, temp as temp_in, humi as humi_in, lights FROM Weather_Ins WHERE host = %s) t2"
+
" ON t1.collected_at = t2.collected_at"
,
(
host
[
"loc_code"
],
host
[
"email"
],))
results
=
cursor
.
fetchall
()
file
=
open
(
"/src/dataprocessing/temp.csv"
,
'w'
)
# header
file
.
write
(
"date,temp_out,humi_out,press,wind_speed,temp_in,humi_in,lights
\n
"
)
for
result
in
results
:
file
.
write
(
"{0},{1},{2},{3},{4},{5},{6},{7}
\n
"
.
format
(
result
[
0
],
result
[
1
],
result
[
2
],
result
[
3
],
result
[
4
],
result
[
5
],
result
[
6
],
result
[
7
]))
file
.
close
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment