
Pandas๋ ํ์ด์ฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ์์ ์ ํ์ฒ๋ผ ํ(row)๊ณผ ์ด(column) ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ถ์ยท์ ์ฒ๋ฆฌยท์๊ฐํ ๋ฑ ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ถ์์ ์ถ๋ฐ์ ์ด๋ค. Pandas์ ํต์ฌ ๊ฐ์ฒด๋ ๋ ๊ฐ์ง๋ค.
ํ์ค์ ๋ฐ์ดํฐ๋ ํ ํ์ผ์ ๋ชจ๋ ๋ค์ด ์์ง ์๋ค. ๊ณ ๊ฐ ์ ๋ณด, ๊ฑฐ๋ ๋ด์ญ, ์ค๋ฌธ ์๋ต ๋ฑ์ด ์๋ก ๋ค๋ฅธ DataFrame์ผ๋ก ์กด์ฌํ๋ค. ์ด๋ค์ ํจ์จ์ ์ผ๋ก ํฉ์น๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ๊ฒฐํฉ(Concatenate), ๋ณํฉ(Merge), ์ฐ๊ฒฐ(Join)์ด๋ค.
์ด๋ฒ ํ์ต์์๋ ์ค์ ๊ณต๊ฐ๋ ์๊ตญ ์จ๋ผ์ธ ์๋งค ๋ฐ์ดํฐ(ecommerce_sales.csv) ๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๋ฐ์ดํฐ์๋ 2010โ2011๋ ๊ฑฐ๋ ๊ธฐ๋ก์ด ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ฃผ์ ์ด์ ๋ค์๊ณผ ๊ฐ๋ค.
Matplotlib์ ํ์ด์ฌ ๋ฐ์ดํฐ ์๊ฐํ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ , ๋ง๋, ์ํ ๋ฑ ๋ค์ํ ํํ๋ก ์๊ฐํํ ์ ์์ผ๋ฉฐ, Pandas์ plot() ๋ฉ์๋์๋ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ๋๋ค. ๊ฐ์ฅ ๋จ์ํ๋ฉด์๋ ๊ฐ๋ ฅํ ์๊ฐํ ํํ.
๋ ์ง(date)์ ์๊ฐ(time)์ ์กฐํฉํด ์ฒ๋ฆฌํ๋ Python ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ. datetime ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ์ฐ๋, ์, ์ผ, ์, ๋ถ, ์ด ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค. ๋ค์ํ ํ์์ ๋ฌธ์์ด๋ ์ผ๊ด๋ datetime64 ํ์์ผ๋ก ์๋ ๋ณํ๋๋ค.
ํ ์คํธ ๋ฐ์ดํฐ๋ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ(์ซ์, ๋ ์ง)์ ๋ฌ๋ฆฌ ๊ฐ๊ณต์ด ํ์ํ๋ค. Pandas์ ๋ฌธ์์ด ์ฒ๋ฆฌ ๊ธฐ๋ฅ(.str)๊ณผ ๊ธฐ๋ณธ ํ์ด์ฌ ๋ฌธ๋ฒ์ ํ์ฉํ๋ฉด ์ ์ ยท๋ถ์์ด ๊ฐ๋ฅํ๋ค.
์๊ณ์ด ๋ถ์์ ์ฐ์๋ ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ์ฐ์ฐ ํจ์จ์ฑ + ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฅ๋ ฅ์ด ์ค์ํ๋ค. ์ด ๋ ๊ฐ์ง๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํต์ฌ ๋๊ตฌ๊ฐ ๋ฐ๋ก NumPy์ Pandas๋ค. NumPy: ๊ณ ์ ์์น ์ฐ์ฐ์ ์ํ ๋ฐฐ์ด ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Pandas๋ NumPy ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ๋ถ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. ์์ฑ ๋ฐ ๋ฉ์๋์ผ๋ฐ ์ฐ์ฐ์ดํ ์๊ณ์ด ๋ฐ์ดํฐ๋ CSV๋ API(JSON) ๋ฑ์ผ๋ก ๋ก๋๋๋ค. ์๊ณ์ด ๋ถ์์ ํต์ฌ์ ๋ ์ง๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
Statsmodels๋ ํ์ด์ฌ์ ํต๊ณ ๋ถ์ ๋ฐ ์๊ณ์ด ๋ชจ๋ธ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋ค์ํ ํต๊ณ ๊ฒ์ , ํ๊ท ๋ชจ๋ธ, ๊ทธ๋ฆฌ๊ณ ์๊ณ์ด ์์ธก ๋ชจํ(ARIMA, Holt-Winters ๋ฑ) ์ ์ ๊ณตํ๋ค.
์ด์ ๊ธ์์๋ Statsmodels ์ค์ฌ์ ํต๊ณ ๊ธฐ๋ฐ ์ ๊ทผ(AR, MA, ARIMA, Holt-Winters ๋ฑ)์ ๋ค๋ค๋ค. ์ด์ ๋ถํฐ๋ Scikit-Learn ๊ธฐ๋ฐ์ ์ผ๋ฐ ์์ธก ๋ชจ๋ธ๋ก ์๊ณ์ด์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณธ๋ค.
์ด์ ๊น์ง๋ ARIMA, SARIMA, SARIMAX ๋ฑ ํต๊ณ์ ์์ธก ๋ชจ๋ธ์ ์ค์ฌ์ผ๋ก ์๊ณ์ด์ ๋ค๋ค๋ค. ์ด๋ฒ ์น์ ์์๋ ์ธ๊ณต์ ๊ฒฝ๋ง(ANN), ์ํ์ ๊ฒฝ๋ง(RNN), ๊ทธ๋ฆฌ๊ณ LSTM/GRU๋ฅผ ํ์ฉํ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ์๊ณ์ด ์์ธก์ ๋ค๋ฃฌ๋ค. ํต์ฌ ๋ชฉํ:์ ๊ฒฝ๋ง์ ๊ธฐ๋ณธ ์๋ฆฌ
Facebook Prophet์ ํ์ด์ค๋ถ ๋ฐ์ดํฐ ๊ณผํํ์ด ๊ฐ๋ฐํ ์๊ณ์ด ์๋ ์์ธก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ผยท์ ๋จ์์ ๋น์ ์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์ง๊ด์ ์ผ๋ก ๋ถ์ํ ์ ์๋๋ก ์ค๊ณ๋์๋ค. ๐ ํต์ฌ ์ฒ ํโ๋ฐ์ดํฐ ๊ณผํ์๊ฐ ์๋๋๋ผ๋ ์๊ณ์ด ์์ธก์ ์ฝ๊ฒ ์ํํ ์ ์๋๋ก.โ
Hadoop์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์คํ์์ค ํ๋ ์์ํฌ๋ค. ํํ๋ฐ์ดํธ ๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒ ๋์ ์๋ฒ์ ๋๋ ์ ์ฅยท๋ถ์ํ ์ ์๋ค.
๋ชฉ์ : ๋ธ๋ผ์ฐ์ ์์ Pig ์คํฌ๋ฆฝํธ ์์ฑยท์คํยท์ ์ฅ. ๊ฒฝ๋ก: http://127.0.0.1:8080 โ ๋ก๊ทธ์ธ(maria_dev / maria_dev) โ Grid ์์ด์ฝ โ Pig View. Files View์์ ์ ๋ ฅ ๋ฐ์ดํฐ ํ์ธ
Hadoop์ ๋จ์ํ HDFS ํ์ผ ์ ์ฅ์๊ฐ ์๋๋ผ, ๋ฐ์ดํฐ์ ์ ํ์ ๋ฐ๋ผ ์ ์ ํ ์ ์ฅ์ ๊ณ์ธต์ ์กฐํฉํด ์ฌ์ฉํ๋ค. ๐ ์ ์ฅ์ ๊ณ์ธต ๊ตฌ์กฐ์ด ๊ธ์์๋ Hive โ MySQL โ HBase โ Cassandra โ MongoDB ์์๋ก ์ดํด๋ณธ๋ค.
์ด์ ํธ์์๋ Hadoop ํด๋ฌ์คํฐ์ ์ ์ฅ ๊ณ์ธต โ HDFS, Hive, HBase, MongoDB, Cassandra โ ๋ฅผ ๋ชจ๋ ๊ตฌ์ถํ๋ค. ์ด์ ๊ทธ ์์์ โ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ SQL๋ก ์ง์ํ ์ ์๋ ๊ณ์ธตโ์ ๋ค๋ฃฌ๋ค.
ํ๋ก์ ๋จ์ผ ์๋ฒ๊ฐ ์๋ ์ฌ๋ฌ ๋ ธ๋๊ฐ ๋ณ๋ ฌ๋ก ๋์ํ๋ ๋ถ์ฐ ํด๋ฌ์คํฐ๋ค. ์ด๋ฅผ ์์ ์ ์ผ๋ก ์ด์ํ๊ธฐ ์ํด ๋ค์ํ ์์ ๊ด๋ฆฌยท์กฐ์จยท์๋ํยท์คํธ๋ฆฌ๋ฐ ์ปดํฌ๋ํธ๊ฐ ํจ๊ป ๋์ํ๋ค.
์ด์ ๊น์ง Hadoop ์ํ๊ณ์ ํต์ฌ์ ์ผ๊ด ์ฒ๋ฆฌ(batch processing) ์ค์ฌ์ด์๋ค. ๊ทธ๋ฌ๋ ์ค์ ์๋น์ค ํ๊ฒฝ์์๋ ๋ฐ์ดํฐ๊ฐ ๋์์์ด ์ ์ ๋๋ ์คํธ๋ฆผ(stream) ํํ๋ก ๋ค์ด์จ๋ค. ์ผ๊ด ์ฒ๋ฆฌ(batch) โ ํ๋ฃจ/์๊ฐ ๋จ์๋ก ๋ชจ์ ๋ฐ์ดํฐ ๋ถ์์คํธ๋ฆผ ์ฒ๋ฆฌ
Apache Kafka๋ ๋๊ท๋ชจ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ด๋ค. ๋ก๊ทธ, ์ผ์, ๊ฑฐ๋, ์ด๋ฒคํธ ๋ฑ ๋ค์ํ ์์ค๋ก๋ถํฐ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ํ ํฝ(topic) ๋จ์๋ก ๋ชจ์ ์ฒ๋ฆฌยท์ ์ฅยท์ ์กํ๋ค.
Kafka๋ฅผ ์ค์นํ๋ฉด ์ฌ๋ฌ CLI(Command Line Interface) ๋๊ตฌ๊ฐ ํจ๊ป ์ ๊ณต๋๋ค. ์ด ๋๊ตฌ๋ค์ ํตํด ํ ํฝ ์์ฑ, ๋ฉ์์ง ์ก์์ , ์ปจ์๋จธ ๊ทธ๋ฃน ๊ด๋ฆฌ ๋ฑ Kafka์ ํต์ฌ ๊ธฐ๋ฅ์ ์ง์ ์ ์ดํ ์ ์๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ์ง์ ๊ตฌ์ถํ๋ค. ์ค์ต ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ๋ค.์ํค๋ฏธ๋์ด ์ค์๊ฐ ๋ณ๊ฒฝ ์คํธ๋ฆผ์ SSE(EventSource)๋ก ๋ฐ์์ด. Kafka Producer๊ฐ ์ด ์คํธ๋ฆผ ๋ฐ์ดํฐ๋ฅผ Kafka ํ ํฝ์ ์ ์ก
Kafka๋ ๊ธฐ๋ณธ์ ์ผ๋ก Producer์ Consumer๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ๋ฉ์์ง ์์คํ ์ด๋ค. ํ์ง๋ง ์ด๊ฒ๋ง์ผ๋ก๋ ๋๊ท๋ชจ ํ์ดํ๋ผ์ธ ์ค๊ณ๋ ๋ฐ์ดํฐ ํ์ง ๊ด๋ฆฌ, ์ค์๊ฐ ๋ถ์์ ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Kafka๋ ์ธ ๊ฐ์ง ํ์ฅ API๋ฅผ ์ ๊ณตํ๋ค.
Kafka ์ด์์ ์ฑํจ๋ ์ด๊ธฐ ์ค์ ๊ฐ๊ณผ ์ฑ๋ฅ ํ ์คํธ์ ๋ฌ๋ ค ์๋ค. ํนํ ํํฐ์ ์์ ๋ณต์ ๊ณ์(replication factor)๋ ํ ํฝ ์ค๊ณ์ ํต์ฌ์ด๋ค. ๐ก ๊ถ์ฅ ๊ฐ์ด๋๋ผ์ธ โ ๏ธ ์ฃผ์: ์ด๊ธฐ ์์ฑ ์ ์ถฉ๋ถํ ํ ์คํธ ํ ๊ฒฐ์ ํด์ผ ํ๋ค.
Kafka์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ํ ํฝ ์ค์ ๊ฐ(topic configuration) ์ ๋ฐ๋ผ ๊ทน์ ์ผ๋ก ๋ฌ๋ผ์ง๋ค. ๊ธฐ๋ณธ ๋ธ๋ก์ปค ์ค์ (server.properties)์ ๋ชจ๋ ํ ํฝ์ ๊ณตํต์ผ๋ก ์ ์ฉ๋์ง๋ง, ์ด์ ์ค์ธ ํน์ ํ ํฝ๋ง ๋ณ๋๋ก ์ต์ ํํ ์๋ ์๋ค.
Apache Spark๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ถ์ฐ ์ปดํจํ ํ๋ ์์ํฌ๋ค. MapReduce๋ณด๋ค 100๋ฐฐ ์ด์ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ฒ๋ฆฌ(In-Memory Computation) ์ ํจ์ํ API ๋ฅผ ํน์ง์ผ๋ก ํ๋ค.
์คํํฌ SQL์ ํ๋ ์คํํฌ์ ์ค์ฌ ์ถ์ด๋ค. RDD ๊ธฐ๋ฐ ์ฐ์ฐ๋ณด๋ค ํจ์ฌ ํจ์จ์ ์ด๊ณ , ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ต์ ํ๋ API๋ฅผ ์ ๊ณตํ๋ค. ์ด API์ ํต์ฌ์ด ๋ฐ๋ก DataFrame์ด๋ค.
์ด๋ฒ ์น์ ์ Spark ํ๋ก๊ทธ๋๋ฐ์ โ์ฌํ ํธโ์ด๋ค. ์ฃผ์ ์ฃผ์ ๋ ํจ์ํ ์ฐ์ฐ, ์กฐ์ธ, ๋ธ๋ก๋์บ์คํธ ๋ณ์, ์บ์, ๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ ์ต์ ํ๋ค. MovieLens์ Marvel ๋ฐ์ดํฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ๋ถ์ ๋ฐ ์ถ์ฒ ์์คํ ๊ตฌ์ถ ๊ณผ์ ์ ๋ค๋ฃฌ๋ค.
Spark๋ ๋ก์ปฌ์์๋ ์คํ ๊ฐ๋ฅํ์ง๋ง, ์ง์ ํ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ๋ถ์ฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์์ ์ด๋ฃจ์ด์ง๋ค. ์ด๋ฒ ํธ์์๋ Spark๋ฅผ ๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฌ๋ค.
Spark๋ ๋จ์ํ ๋ถ์ฐ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ๋์ด, MLlib(Machine Learning Library) ๋ผ๋ ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ด์ฅํ๊ณ ์๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ํ์ต์ํค๊ธฐ ์ํด ์ค๊ณ๋ ๋ถ์ฐํ ML ์์ง์ด๋ค.
์คํํฌ๋ ์๋ ์ ์ ๋ฐ์ดํฐ ๋ถ์์ ํนํ๋ ํ๋ ์์ํฌ์์ง๋ง, ํ์ค์ ๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ๋์์์ด ์์ฑ๋๋ ์คํธ๋ฆผ(stream) ํํ๋ค. Spark Streaming์ ์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ปดํฌ๋ํธ๋ค.