5. HAVING절의 서브 쿼리 HAVING절은 그룹 함수로 검색된 데이터 간 비교할 때 사용한다. EX ) 직업과 직업별 토탈 월급을 출력하는데, 직업이 SALESMAN인 사원들의 토탈 월급보다 더 큰 값들만 출력하시오 직업이 SALESMAN인 사원이라는 조건이 있기 때문에 WHERE절을 사용해 작성할 수도 있다. SELECT JOB, SUM(SAL) FROM EMP WHERE SUM(SAL) > (SELECT SUM(SAL) FROM EMP WHERE JOB = 'SALESMAN') GROUP BY JOB; 하지만 그룹 함수로 검색조건을 작성했기 때문에 에러가 발생한다. 이 처럼 그룹 함수로 검색조건을 작성할 때는 HAVING절을 사용해야한다. SELECT JOB SUM(SAL) FROM EMP GR..
3. NOT IN 특정 쿼리에서 검색한 데이터 중 다른 쿼리에 없는 데이터를 검색하려면 NOT IN 연산자를 사용한다. EX ) 관리자가 아닌 사원들의 이름과 월급, 직업을 출력하라. 관리자가 아닌 사원은 직속 부하 직원이 한 명도 없는 사원을 의미한다. 즉 사원번호(EMPNO)가 관리자 번호(MGR)와 같지 않은 사원을 찾으면 된다. 이 경우 또한 단일행 서브 쿼리의 연산자를 사용하면 에러가 발생한다. SELECT ENAME, SAL, JOB FROM EMP WHERE EMPNO != (SELECT MGR FROM EMP); ORA-01427: single-row subquery returns more than one row 따라서 이 경우에는 다중 행 서브 쿼리 중 NOT IN을 사용하여 문제를 해결..
geopandas 라이브러리 python에서 지역 경계 데이터(shp 파일)을 읽을 때 주로 사용되는 라이브러리 pandas 라이브러리의 dataframe과 유사 GeoDataFrame 및 GeoJSON자료형을 다룰 수 있음 Geometery 자료형을 지원하므로, 여러 좌표를 하나로 묶은 다각형 처리가 쉬움 설치환경 Window 10 64bit Anaconda - Python 3.8.3 python환경은 아래 코드로 확인할 수 있다. import sys sys.version >>> '3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]' 패키지 다운로드 Windows에서 geopandas 라이브러리를 설치하려면 4개의 의존성 라이브러리를 먼..
1.10 그래프 레이어 문법 ggplot(data = )+ ( mapping = aes(), stat = , position = ) + + 데이터 작동 과정 1. 데이터 셋 부터 시작해서 표시하고 싶은 정보로 변환하기 a. diamonds 데이터 셋에서 부터 시작한다 b. stat_count 로 cut 값 각각에 대한 count를 계산한다 2. 변형된 데이터 의 각 관찰값을 나타낸 기하객체를 선택한다. 데이터의 변수들을 나타내기 위해 지옴의 심미성 속성을 이용한다. 또한 각 변수의 값들을 심미성 수준에 매핑한다. a. 각 관측값을 막대로 표현한다 b. 각 막대의 fill을 ..count.. 변수로 매핑한다 3. 지옴을 위치시킬 좌표계를 선택한다 a. 지옴들을 데카르크 좌표계에 둔다 b. y 값을 ..co..
1.9 좌표계 기본 좌표계는 각 점의 위치를 결정할 때 x와 y 위치가 독립적으로 움직이는 데카르트 좌표계이다. 1. coord_filp() coord_flip()은 x와 y축을 바꾼다. 예를 들어 수평 박스플롯이 필요한 경우나 라벨이 길어서 x축과 겹치지 않고 들어 맞게 하기 힘든 경우에 유용하다. # plot 1 ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot() # plot 2 ggplot(data = mpg, mapping = aes(x = class, y = hwy))+ geom_bar()+ coord_filp() 2. coord_quickmap() coord_quickmap() 을 하면 지도에 맞게 가로 세로 비율이 설..
1.8 위치 조정 colour 또는 fill 옵션을 통해 막대 차트에 색상을 지정할 수 있다. ggplot(data = diamonds)+ geom_bar(mapping = aes(x = cut, colour = cut)) ggplot(data = diamonds)+ geom_bar(mapping = aes(x = cut, fill = color)) 채우기(fill) 옵션을 clarity 와 같은 다른 변수에 매핑하면 막대가 자동을 누적된다. 각 색상이 지정된 직사각형은 cut 과 clarity 의 조합으로 나타낸다. ggplot(data = diamonds)+ geom_bar(mapping = aes(x = cut, fill = clarity)) 스택은 position 옵션으로 지정된 위치 조정에 의해..
1.7 통계적 변환 막대그래프 (Bar plot) 막대그래프는 플롯에 대해 미묘한 것을 드러내기 때문에 흥미로운 차트이다. 막대그래프는 geom_bar() 로 그릴 수 있다. 다음은 diamond 데이터셋에서 cut으로 그룹한 다이아몬드의 총 개수를 나타낸다. diamonds 데이터 셋은 54000여개의 다이몬드를 대상으로 크기(carat), 컷팅레벨(cut), 색(color), 투명도(clarity) 등이 조사되어 있다. ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut)) 위의 코드에서도 알 수 있듯이 y축에 count는 diamonds의 변수가 아니다. count는 데이터셋의 원 값으로 플롯을 그린다. 막대그래프와 같은 다른 그래프는 플롯으로 그릴..
# 1) ggplot(data = mpg)+ geom_point(mapping = aes(x = displ, y = hwy)) # 2) ggplot(data = mpg)+ geom_smooth(mapping = aes(x = displ, y = hwy)) 플롯은 동일한 x변수, y변수를 포함하고, 동일한 데이터를 나타낸다. 그러나 데이터를 표현하는 시각 객체가 다르다. 이는 다른 지옴의 유형을 사용하기 때문을 알 수 있다. 지옴(geom) 지옴(geom)은 데이터를 나타내기 위해 플롯이 사용하는 기하 객체(geometric object)를 의미한다. 따라서 위의 플롯은 산점도를 나타내는 포인트 지옴(geom_point)을 사용했고, 아래는 평활 지옴(geom_smooth), 즉 데이터에 적합된 평활선을 ..
1. 단일행 서브쿼리 특정 쿼리에서 검색한 값을 다른 쿼리에서 받아 검색하려면 서브 쿼리를 사용해야 한다. EX ) JONES 보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하라 JONES 보다 더 많은 월급을 받는 사원의 정보를 조회하기 위해서는 JONES의 월급을 알아야 한다. -- JONES의 월급 SELECT SAL FROM EMP WHERE ENAME = 'JONES'; JONES의 월급을 검색한 결과, 2975임을 알 수 있다. 이를 바탕으로 위의 문제를 해결할 수 있다. -- JONES 보다 더 많은 월급을 받는 사원 SELECT ENAME, SAL FROM EMP WHERE SAL > 2975; 여기서 위의 쿼리에서 2975라는 값은 첫번째 검색했던 JONES의 월급을 검색하는 쿼리..
1.5 facet facet_wrap() 변수를 추가하는 방법으로 심미성을 이용하는 방법 외에 플롯을 면분할(facet)로 나누는 것으로, 이는 범주형 변수에 특히 유용하다. 하나의 변수에 대해 면분할 하기 위해서는 facet_wrap() 을 이용한다. facet_wrap() 의 첫 번째 인수로는 ~와 뒤에 변수 이름이 나오는 공식이어야 하며, facet_wrap() 에 전달하는 변수는 이산형이어야 한다. ggplot(data = mpg)+ geom_point(mapping = aes(x = displ, y = hwy)) + facet_wrap(~ class, nrow = 2) facet_grid() 플롯을 두 변수 조합으로 면분할하기 위해서는 facet_wrap() 를 플롯 호출에 추가하면 된다. fa..