Loading...

[GP] R ν”„λ‘œκ·Έλž˜λ°κ³Ό 데이터-처리

λ°˜μ‘ν˜•

이 글은 N.K Dev Labμ—μ„œ μž‘μ„±λœ κΈ€μž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”. μš” λͺ‡ κ°œμ›” κ°„ 제 λΈ”λ‘œκ·Έμ˜ ν¬μŠ€νŒ…μ΄ μ—†μ—ˆμ£ ?.. μš”μ¦˜ 데이터와 μ”¨λ¦„ν•˜λŠλΌκ³  정신이 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. 이제 ν”„λ‘œκ·Έλž˜λ°μ„ λ„˜μ–΄μ„œ 데이터에 λŒ€ν•œ μž‘μ—…μ„ μ‘°κΈˆμ”© λ°°μ›Œλ‚˜κ°€κ³  μžˆμŠ΅λ‹ˆλ‹€λ§Œ SQL λͺ¨λΈλ§μ€ 쑰금 ν•΄λ΄€μœΌλ©΄μ„œλ„ κ°€μž₯ 기초적인 λ°μ΄ν„°μ²˜λ¦¬ 등은 μ„œνˆ΄λŸ¬μ„œ μž‘μ—…μ„ ν•˜λŠ” λ‚΄λ‚΄ μƒκ°ν•˜λŠ” 것은 κ΅­κ°€μ—μ„œ μ œκ³΅ν•˜λŠ” μ»€λ¦¬ν˜λŸΌμ„ 쑰금 μ΅ν˜€λ³ΌκΉŒ λΌλŠ” 생각도 많이 ν•˜κ³€ ν•©λ‹ˆλ‹€.

μ €λŠ” 은근 My-way μŠ€νƒ€μΌμ΄λ©΄μ„œλ„ 가끔씩은 이게 λ§žλ‚˜ 싢은 고민이 생길 λ•ŒλŠ” κ°€μ΄λ“œλΌμΈμ„ 타곀 ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ·Έ κ°€μ΄λ“œλΌμΈμ„ λ³΄λ©΄μ„œλ„ β€œλΉ„νš¨μœ¨μ μ΄λ‹€β€, β€œλ‚΄ μŠ€νƒ€μΌμ€ μ•„λ‹ˆλ‹€.”, β€œλ” κΉ”λ”ν•˜κ²Œβ€λΌλŠ” μš•μ‹¬μ„ κ°€μ§€κ²Œ λ˜λŠ”λ°, κ·ΈλŸ¬λ‹€λ³΄λ©΄ ν•œμ°Έμ„ κ³ λ―Όν•˜λ‹€κ°€λ„ 진도 진행이 λ˜μ§€ μ•Šμ•„μ„œ μš”μ¦˜μ—λŠ” μ§œλ‹€κ°€λ„ λ‚΄ μŠ€νƒ€μΌ μ•„λ‹Œ μ½”λ“œμ— λŒ€ν•΄μ„œλŠ” 일단 λ°©μΉ˜ν•΄λ‘μ—ˆλ‹€κ°€ 쑰금 μ‹œκ°„μ μΈ μ—¬μœ κ°€ μžˆμ„ λ•Œ λ‹€μ‹œκΈˆ κ·Έ μŠ€νƒ€μΌμ„ λ°”κΏ”μ„œ μ½”λ”©ν•˜λŠ” 것이 μ €μ˜ μŠ€νƒ€μΌμ΄ λ˜λ²„λ ΈμŠ΅λ‹ˆλ‹€.

Data Processing

μ†Œν”„νŠΈμ›¨μ–΄ 개발자 μž…μž₯μ—μ„œ 데이터 μ²˜λ¦¬β€¦ 사싀 DBA의 직책을 가지신 뢄듀이 주둜 ν•˜λŠ” 일이라고 λ³΄λŠ” 것이 λ§žκ² μ§€λ§Œ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžκ°€ μ§μ ‘μ μœΌλ‘œ 데이터에 κ΄€μ—¬ν•˜λŠ” κ²½μš°λŠ” 극히 λ“œλ­…λ‹ˆλ‹€. 사싀상 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžλŠ” μ‚¬μš©μžμ˜ 츑면을 κ³ λ €ν•˜κ³  μ–Όλ§ˆλ‚˜ νŽΈν•˜κ³  더 쒋은 κ²°κ³Όλ₯Ό λ‚Ό 수 μžˆλŠλƒμ— 달렀 μžˆλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ΄λ²ˆμ— 데이터 처리λ₯Ό ν•˜λ©΄μ„œ 사싀상 μ΄λ ‡κ²Œ 마ꡬ작이둜 λ§ˆμ΄λ‹ν•œ 데이터λ₯Ό μ²˜λ¦¬ν•˜μ—¬ 정보와 μ§€μ‹μœΌλ‘œ λ§Œλ“œλŠ” λ°λŠ” μ—¬λŸ¬ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 데이터 μ²˜λ¦¬μ™€ μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ°œλ°œμ€ λ°˜λ“œμ‹œ λ°˜λŒ€μ˜ 츑면을 가지지 μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜λŠ” 데 μžˆμ–΄μ„œλ„ μ‚¬μš©μžκ°€ μ–΄λ– ν•œ 인풋을 주게 되면 그에 λ”°λ₯Έ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” κ²ƒμ²˜λŸΌ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 데도 μ–΄λ– ν•œ λͺ¨μ•„진 데이터λ₯Ό 정보와 μ§€μ‹μœΌλ‘œ μΆ•μ ν•˜λŠ” 데 μžˆμ–΄ μ—¬λŸ¬ μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•˜λŠ” 것 λ˜ν•œ 같은 μΌμž…λ‹ˆλ‹€.

ETL

데이터 처리 μž‘μ—…μ„ ν•˜λ©΄μ„œ λ“£κ²Œ 된 단어 쀑 ν•˜λ‚˜κ°€ λ°”λ‘œ ETLμ΄λΌλŠ” λ‹¨μ–΄μ˜€μŠ΅λ‹ˆλ‹€. 사싀 데이터 μ—”μ§€λ‹ˆμ–΄μ— μž…λ¬Έν•œ 것은 μ²˜μŒμ΄μ—ˆκ³  κ·Έ 쀑 μ œκ°€ μ œκ°€ 처음 ν–ˆλ˜ μž‘μ—…μ΄ ETLμ΄λΌλŠ” 것도 μž‘μ—…μ„ ν•˜λŠ” 도쀑 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ETL은 Extract(μΆ”μΆœ), Transform(λ³€ν™˜), Load(적재)의 μ•½μžλ‘œ 사싀상 κ·Έλ ‡κ²Œ μ–΄λ €μ›Œ λ³΄μ΄λŠ” μž‘μ—…μ€ μ•„λ‹ˆμ§€λ§Œ μ€κ·Όνžˆ 손이 많이 κ°€κ²Œ 된 μž‘μ—… 쀑에 ν•˜λ‚˜μ˜€μŠ΅λ‹ˆλ‹€.

μ œκ°€ κ°„λ‹¨νžˆ ν•˜κ³  μžˆλŠ” 일을 λ§μ”€λ“œλ¦¬μžλ©΄, μ €λŠ” μ–΄λ–€ 이미지λ₯Ό 가지고 ν•΄λ‹Ή 이미지가 μ–΄λ–€ 이미지인지, ν¬κΈ°λŠ” μ–Όλ§ˆλ‚˜ λ˜λŠ”μ§€, λ§Œμ•½ 크기가 λ‹€λ₯΄λ‹€λ©΄ 일정 크기에 맞좰 λ³€ν™˜ν•˜λŠ” μž‘μ—…μ„ 거쳐야 ν•˜κ³ , 그거에 λ§žμΆ°μ„œ λ‹€μ‹œ DB에 μ μž¬ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. 쑰금 λ‹€λ₯Έ 원리λ₯Ό μ•Œκ²Œ 된 것은 이미지 처리λ₯Ό μœ„ν•΄μ„œ Not only SQL을 μ‚¬μš©ν•  것이라고 μƒκ°ν–ˆμ§€λ§Œ κ·Έλƒ₯ SQLλ§Œμ„ 가지고도 μž‘μ—… μ²˜λ¦¬κ°€ μ›ν™œν•˜κ²Œ λŒμ•„κ°ˆ 수 μžˆμŒμ„ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 이미지 λ°μ΄ν„°μ˜ μΆ”μΆœμ€ ν”½μ…€ 데이터가 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Όν…Œλ©΄ OpenCV와 같은 컴퓨터 λΉ„μ „ 라이브러리λ₯Ό μ‚¬μš©ν•΄μ„œ ν”½μ…€ 데이터λ₯Ό λΆ„μ„ν•˜κ³  이λ₯Ό ν†΅ν•˜μ—¬ 데이터λ₯Ό μΆ”μΆœν•˜λŠ” 방법도 μžˆκ² μ§€λ§Œ μš”μ¦˜μ—λŠ” 메타데이터 ν™œμ„±ν™”κ°€ 잘 λ˜μ–΄μž‡λŠ”μ§€ μ΄λŸ¬ν•œ 메타데이터λ₯Ό λ§ˆμ΄λ‹ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•œ 정보λ₯Ό κΈμ–΄μ˜¬ μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그것 μ—­μ‹œ μ œκ°€ ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. κ·Έλž˜μ„œ PixelDataλ₯Ό μ‚¬μš©ν•΄ ν‘œμ€€ μ΄λ―Έμ§€λ‘œ μ €μž₯ν•˜μ—¬ 이λ₯Ό λ‹€μ‹œ OpenCV둜 μ²˜λ¦¬ν•˜μ—¬ DB에 μ μž¬ν•˜λŠ” 방법을 μ“°λŠ”κ°€ ν•˜λŠ” 방법도 고렀해보고 μžˆμŠ΅λ‹ˆλ‹€.

μ •ν™•ν•˜κ²ŒλŠ” μž‘μ€ 규λͺ¨μ˜ ν”„λ‘œκ·Έλž¨μ€ 파일 λ‹¨μœ„λ‘œ λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ νŒ¨ν‚€μ§€λ₯Ό μ΄μš©ν•΄ κ·Έ 데이터듀을 κ°„λ‹¨νžˆ κΈμ–΄μ™€μ„œ ν‘œν˜„ν•  수 μžˆμ§€λ§Œ λ°μ΄ν„°μ˜ 규λͺ¨κ°€ 컀지면 그것 λ˜ν•œ ν•œκ³„κ°€ μƒκΉλ‹ˆλ‹€. 또 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ§€μ›ν•˜λŠ” 자료 κ΅¬μ‘°λŠ” ν•œμ •λ˜μ–΄ 있고 λΉ… 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ Data Structure λ˜ν•œ μ •ν•΄μ Έ μžˆμŠ΅λ‹ˆλ‹€. 이에 μ΅œμ ν™” 된 μ–Έμ–΄λŠ” Pythonκ³Ό R μ–Έμ–΄μ˜€κ³  μ €λŠ” μ΄λŸ¬ν•œ 데이터 처리λ₯Ό μœ„ν•΄ R 을 κ³΅λΆ€ν•˜μ—¬μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

R

μ œκ°€ 처음 λ³Έ R μ–Έμ–΄λŠ” Pythonκ³Ό μœ μ‚¬ν•œ μ–Έμ–΄μ˜€μŠ΅λ‹ˆλ‹€. λ³€μˆ˜ νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šκ³  자유둭게 μ‚¬μš©ν•  수 μžˆλŠ” 슀크립트 ν˜•νƒœμ˜ μ–Έμ–΄, ν•˜μ§€λ§Œ μ €μ—κ²Œ μ΅μˆ™ν•΄μ§€λŠ” 데 λ„ˆλ¬΄λ‚˜ λ§Žμ€ μ‹œκ°„μ„ λ“€μ—¬μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. λ‹¨μˆœνžˆ μžλ£Œν˜• νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•ŠλŠ” 문제 λ•Œλ¬Έμ΄ μ•„λ‹ˆλΌ μ—¬λŸ¬κ°€μ§€ 문법이 μ‘΄μž¬ν•˜μ˜€κ³ , ν‰μƒμ‹œ 자주 μ‚¬μš©ν–ˆλ˜ OOP와 같은 ν”„λ‘œκ·Έλž˜λ°μ€ 잘 μ°Ύμ•„λ³Ό 수 μ—†μ—ˆμœΌλ©° λͺ¨λ“ˆν™”λŠ” 또 μ–΄λ–»κ²Œ ν•΄μ•Όν•˜λŠ”μ§€λ₯Ό 잘 λͺ°λΌ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν•΄μ•Όν•˜λŠ”μ§€λ„ μ΅μˆ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.



μ΄μ–΄μ„œ μ½μœΌμ‹œλ €λ©΄ μ•„λž˜μ˜ λ²„νŠΌμ„ ν΄λ¦­ν•΄μ£Όμ„Έμš”.


... 계속 읽기



λ°˜μ‘ν˜•
TAGS.

Tistory Comments