전체 글

여행, 일상,IT 이야기를 가볍게 풀어갑니다. 잘못된 정보 지적은 항상 감사히 듣겠습니다. 찾아와주셔서 감사드립니다.
[Python] 빅데이터분석 시각화 - 그래프 그리기 (Matplotlib) Matplotlib는 그래프를 그리는 함수를 내장하고 있는 확장 라이브러리다. matplotlib.pyplot을 import하여 해당 모듈의 각 함수를 사용해 간편하게 그래프를 만들고 변화를 줄 수 있다. 기본적으로 plot() xl-shine.tistory.com import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rc('font', family='malgun gothic') plt.rc('axes', unicode_minus=False) %matplotlib inline # jupyter notebook에서 그래프를 보기 위한 코드 weathe..
소규모 프로젝트나 개인적으로 토이 프로젝트를 진행할 때는 굳이 DB를 나누지 않아도 괜찮지만, 대규모 프로젝트를 다루는 현업에서는 개발서버에서 테스트를 진행한 뒤 문제가 없음을 파악하고 운영서버에 반영해 사용자들에게 서비스하는게 일반적이다. 이럴 때 개발서버의 DB와 운영서버의 DB를 동기화 시키는 것이 중요한데, 대표적인 무료 DBMS 툴인 SqlDeveloper를 사용하면 각 DB의 차이점을 쉽게 비교가 가능하다. 1. 상단 메뉴 Tools(도구) → Database Diff(데이터베이스 차이) 2. Source Connection, Destination Connection에 각각 개발DB, 운영DB 지정 3. 비교가 필요한 Standard Object Types 선택 4. 비교 대상 상세 지정(미지..
Matplotlib는 그래프를 그리는 함수를 내장하고 있는 확장 라이브러리다. matplotlib.pyplot을 import하여 해당 모듈의 각 함수를 사용해 간편하게 그래프를 만들고 변화를 줄 수 있다. 기본적으로 plot() 함수를 사용해 그래프를 그릴 수 있으며, 인자로 리스트 형식의 값을 2개(x축, y축) 받는다. plt.plot([1, 2, 3, 4]) 이렇게 하나의 리스트만 전달하게 됐을 때, 인자로 넘겨준 리스트는 y축으로 인식하고 x축은 인자로 넘겨준 리스트의 길이에 맞춰 자동 생성된다. 예시의 경우 자동 생성되는 x축 리스트는 [0, 1, 2, 3]이다. 나타나는 그래프는 다음과 같다. plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) 다음과 같이 두개의 리스트를 전달..
올해 크리스마스에는 여자친구와 함께 거대한 크리스마스 트리를 보며 크리스마스 마켓에서 같이 쇼핑하는 낭만을 느끼고 싶었다. 마침 잠실 롯데월드몰에서 대형 트리와 크리스마스 마켓을 준비했다고 해서 가보기로 했다. 크리스마스 당일에 갔으면 더 좋았겠지만, 사람이 너무 많고 마켓을 못들어갈 수도 있겠다는 생각에 미리 다녀오기로 했다(사실 더현대를 가려고 했는데 더현대는 사람이 너무 많아서 사진도 못찍을 정도라고 하기에 포기했다..). 트리가 진짜 크긴 엄청 컸다. 이때가 오후 4시쯤이라 아직 밝았는데 사람이 꽤 많아서 좀 놀랐다. 더 어두워지면 더 이쁠 것 같아서 일단 간단하게 끼니를 해결하고 오기로 했다. 저녁으로는 간단하게 팬케이크를 먹었다. 제철과일이 토핑으로 올라가있는 메뉴였는데, 과일도 신선하고 팬케..
concat() concat() 함수는 데이터프레임을 이어붙일 때 사용하는 함수이다. 인자로 다음과 같은 파라미터를 받는다. pd.concat(objects, axis=0, join=outer, ignore_index=False) objects에는 병합할 데이터 프레임을 리스트형태로 묶어서 전달해주면 된다. axis는 어떤 방향을 기준으로 병합할지 선언한다. 0이면 행, 1이면 열을 기준으로 병합하고, 비선언 시 디폴트 값으로 0이 들어간다. join은 어느 데이터 프레임을 기준으로 병합할 지 선택한다. left, outer 값을 줄 수 있으며, 비선언 시 디폴트 값으로 outer가 들어간다. ignore_index는 기존 index를 무시하고 병합한 데이터 프레임을 기준으로 index 값을 새로 지정한..
GROUPING() 함수는 SELECT 절에서 사용하는 함수이다. GROUPING() 함수의 인자로 그룹핑 대상인 컬럼을 지정하면 해당 컬럼이 NULL일 때 1, NOT NULL일 때 2를 반환하는 함수이다. SELECT B.DNAME , A.JOB , SUM(A.SAL) , GROUPING(B.DNAME) AS GP1 , GROUPING(A.JOB) AS GP2 FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY ROLLUP(B.DNAME, A.JOB) ORDER BY 1,2 ; 이를 CASE-WHEN 절과 함께 활용하면 NULL 값을 소계, 총계 등으로 지정할 수 있다. SELECT CASE WHEN T.GP1 = 1 THEN '총계' ELSE T.DNA..
CUBE() 함수는 인자로 받는 컬럼으로 만들 수 있는 모든 조합으로 집계하여 추출하는 함수이다. 위와 같은 결과를 얻으려면, 다음과 같이 작성할 수 있다. SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(B.DNAME) ORDER BY 1 ; 얼핏보면 ROLLUP() 함수와 다를 거 없는 함수처럼 보이지만, CUBE() 함수는 받는 인자가 많아질수록 조합이 다양해져 출력하는 결과가 훨씬 많아진다. SELECT B.DNAME , A.JOB , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(B.DNAME, A.JOB) ..
GROUPING SETS() 함수는 이전 포스팅에서 다뤘던 ROLLUP()과 마찬가지로 GROUP BY 절에서 사용하는 함수이며, 인자로 받는 컬럼 별 집계함수 값을 리턴하는 함수이다. 위와 같은 결과를 얻고 싶을 때, GROUPING SETS 함수를 활용하면 다음과 같이 짤 수 있다. SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY GROUPING SETS(B.DNAME) ORDER BY 1 ; 근데 뭔가 이상하지 않은가? 위와 같은 결과를 더 쉽게 추출하는 방법을 우리는 알고 있다. SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B...
일상적인 업무에서 쿼리를 짜다 보면, 합계를 구하고 싶을 때가 정말 많다. 예시로 DEPT 테이블의 부서명 컬럼을 기준으로 해당 부서에 속한 사원들의 총 급여를 구하려면 쿼리를 어떻게 짜야할까? 확장 GROUP 함수를 모른다면, 다음과 같이 작성했을 것이다. SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY B.DNAME UNION ALL SELECT NULL , SUM(A.SAL) FROM EMP A ORDER BY 1 ; 위 방식이 틀렸다는 것은 아니다. 하지만 확장 GROUP 함수를 쓴다면 다음처럼 간략하게 표현 가능하다. SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEP..
설정하고자하는 프로젝트 경로 내 .settings 폴더로 이동 C:\SEED128\SEED128\.settings 만약 해당 폴더가 보이지 않는다면, 숨김처리 되어 있을 수도 있으니 보기 - 표시 - 숨긴 항목 체크 해주면 된다. 그 중 org.eclipse.wst.common.project.facet.core.xml 파일을 열어준다. 이 부분이 해당 프로젝트에 설정된 web module version이니 해당 버전과 같은 버전으로 설정해주면 된다. 이클립스에서 다른 버전으로 바꾸고 싶은데 안바뀔 때도 해당 파일에서 강제로 버전을 바꾸고 싶은 버전으로 바꿔주면 된다. 만약 위 파일이 수정되지 않는다면, 메모장을 작업관리자 모드로 열고 파일 열기로 해당 파일을 열어 수정하고 저장하면 된다.
xoghks_h
XL-Shine