Latest posts
-
SQL | MySQL | 기본키, 고유키, 외래키
1. 기본키 (Primary Key) ✅ Primary Key, 기본키란? : SQL 데이터베이스에서 특정 레코드를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합. : Primary Key는 테이블에서 각 레코드를 식별하는 데 사용되며, 테이블의 각 레코드에는 Primary Key 값이 반드시 있어야 함. ✅ Primary Key 특징 👉 각 레코드에 대해 고유하다.(Unique) 👉 NULL 값이 허용 안됨(NOT NULL) 👉 레코드를 식별하는 데 사용 , 테이블당 하나의 기본키만 지정 가능 ✅ Primary Key 생성 방법 ✔️ 기본키 생성 방법1 CREATE TABLE users( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100), p..
-
SQL | MySQL | 서브쿼리 (Subquery)
00. 서브쿼리(Subquery)란? ✅ 서브쿼리란? 👉 서브쿼리(Subquery)란 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미 👉 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 함 👉 서브쿼리는 내부쿼리(inner query) 라고도 함 👉 서브쿼리는 반드시 괄호 안에 있어야 함 👉 복잡한 JOIN이나 UNION을 대체할 수 있음 👉 메인쿼리 안에서 SELECT, FROM, WHERE, HAVING, 또는 IN 절과 함께 사용 ✅ 서브쿼리의 예 SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); ✅ 예제 테이블들 -- customers 테이블 생성 DROP TABLE customers; CREATE TABLE cus..
-
SQL | MySQL | 테이블 집합 연산 - UNION, UNION ALL 등
✅ 예제 테이블 생성 CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department_id INT ); CREATE TABLE departments ( department_id INT PRIMARY KEY, department_name VARCHAR(50) ); INSERT INTO employees (employee_id, first_name, last_name, department_id) VALUES (1, 'John', 'Doe', 1), (2, 'Jane', 'Smith', 2), (3, 'Bob', 'Johnson', 1), (4, 'Alice', 'Brown'..
-
SQL | MySQL | JOIN - inner, left, right
01. MySQL에서의 JOIN MySQL에서 JOIN은 두 개 이상의 테이블에서 데이터를 검색하는 데 사용됨. 두 개 이상의 테이블의 자료를 결합 ✅JOIN의 종류 ① (INNER) JOIN 👉 EQUI JOIN : 주어진 (열에 대한) 조인 조건을 만족하는 자료(행) - 양쪽 모두에 값이 있는 행(NOT NULL) 반환 - 만약 동일 조인 내에 있는 컬럼들이 동일한 이름을 가지고 있으면, USING 함수를 사용할 수 있음. 👉 CROSS JOIN - 두 개 이상의 테이블에서 모든 조합을 반환 - 왼쪽 테이블의 모든 행이 오른쪽 테이블의 모든 행과 결합 👉 NATURAL JOIN - EQUI JOIN의 한 유형으로 조인 구문이 조인된 테이블에서 동일한 컬럼명을 가진 2개의 테이블에서 모든 컬럼들을 비교..
-
SQL | MySQL | Window Functions (2) - 집계 함수
01. Window Functions - 윈도우 함수 MySQL 8.0부터 Window Functions이 도입됨 OVER( ) 절을 사용해 지정된 윈도우 프레임에서 연산을 수행하는 함수 OVER ( [PARTITION BY ] [ORDER BY [ASC|DESC], ... ] [] ) 은 윈도우 함수를 넣으면 됨. PARTITION BY은 GROUP BY와 같은 기능을 함 👉 대표적인 윈도우 함수들 ROW_NUMBER( ) : 각 행에 일련번호 부여 RANK( ) : 각 행의 순위를 할당(중복이 있을 경우 중복 값은 같은 순위 부여, 1,1,3등으로 넘어감) DENSE_RANK( ) : 각 행의 순위를 할당(중복가능, 1, 1, 2,3... 순차적으로 순위부여) SUM( ), AVG( ), MIN( )..
R | dplyr
-
R | dplyr | 그 외 데이터 추출 - slice() , top_n()
이전 포스팅에서 dplyr 패키지에서 무작위 추출 시 사용하는 sample_n, sample_frac 함수와 달리 무작위 추출이 아닌 순서대로 뽑거나 원하는 구간을 설정해서 데이터를 뽑는 slice()와 상위의 값을 추출해주는 top_n() 함수도 있다. 00. 데이터 불러오기 MASS 패키지의 내장 데이터 셋인 'cars93' 데이터 셋 사용 ※ MASS 패키지의 select()함수와 'dplyr' 패키지의 select() 함수가 충돌하기 때문에 MASS 패키지를 먼저 불러온 후 dplyr 패키지를 불러와야 한다. library(MASS) library(dplyr) df % slice(3) 01-2. 여러행 추출 # 2, 3, 6번째에 위치한 행 추출 df %>% slice(2,3,6) 01-3. 행 ..
-
R | dplyr | 샘플 데이터 무작위 추출 - sample_frac(), sample_n()
dply 패키지에 데이터를 무작위로 추출해주는 함수 sample_frac() : 특정 비율만큼 무작위 추출 sample_n(): 특정 개수만큼 무작위 추출 그 외에 R 내장 함수인 sample()도 같은 역할을 수행한다. 00. 데이터 불러오기 MASS 패키지의 내장 데이터 셋인 'cars93' 데이터 셋 사용 ※ MASS 패키지의 select()함수와 'dplyr' 패키지의 select() 함수가 충돌하기 때문에 MASS 패키지를 먼저 불러온 후 dplyr 패키지를 불러와야 한다. library(MASS) library(dplyr) df % sample_n(size = 10, replace = F) 01-2. sample_frac : 전체 행의 10% 무작위 추출 df %>% sample_frac(si..
-
R | dplyr | mutate, mutate_if , mutate_at - 새로운 변수 생성 및 처리
데이터 핸들링 과정에서 새로운 변수(Column)를 만들고자 할 때 필요한 기능. 대표적으로는 mutate(), mutate_if(), mutate_at() 00. 데이터 불러오기 2018년 2월 5일부터 2022년 2월5일까지 시계열을 이용한 넷플릭스 주가 예측 데이터 stock % mutate_at(vars(-Date,-Year,-Day),log) %>% select_if(is.numeric) 더보기 사용 데이터 출처 https://www.kaggle.com/datasets/jainilcoder/netflix-stock-price-prediction?select=NFLX.csv 불러오는 중입니다... 참고 서적 / 위키북스|Must Learning with R (개정판) https://wikidocs..
-
R | dplyr | 변수 추출 select(), select_if()
데이터를 분석할 때 필요한 열만 선택해 분석하는 것은 매우 중요 column 추출 방법 3가지 인덱싱 사용 1: 열 순번 사용 인덱싱 사용 2: 열 이름 사용 dplyr::select() 사용 00. 데이터 불러오기 - 데이터는 R 내장 데이터 셋인 "mtcars" 사용 : 1974 Motor Trend US Megazine에 수록된 차량과 차량에 관련된 수치들이 기록된 자료 mtcars %>% head() mtcars %>% str() 01. Column 순번을 통한 열 추출 - 데이터셋[ , 열 순번] - mpg, cyl 열 선택 # 밑에 두 가지 방법 동일한 데이터 셋 출력 mtcars[ , 1:2] mtcars[ , c(1,2)] 02. 컬럼명을 사용해서 추출 - 데이터셋[ , "열이름1", "열..
-
R | dplyr | 데이터 정렬(arrange)
데이터 정렬 방법 sort() : 순서를 정렬해서 데이터 값 반환 / default 오름차순, 전체 데이터 정렬 불가능 order() : 순서를 정렬해서 인덱스 반환 / default 오름차순 dplyr::arrange() : dplyr 패키지에서 제공하는 함수 / default 오름차순 01. sort 함수 사용 1) 오름차순 정렬 sort(iris$Sepal.Length) 2) 내림차순 정렬 sort(iris$Sepal.Length, decreasing = T) 02. order 함수 사용 1) 오름차순 정렬 order(iris$Sepal.Length) iris[order(iris$Sepal.Length),] 2) 내림차순 정렬 iris[order(iris$Sepal.Length, decreasing..
-
R | dplyr | 조건에 맞는 행 추출(filter)
R에서 조건에 맞는 행 추출하는 방법은 엄청 많음. 인덱싱 사용, subset(), filter() 등 여러 가지인 데, 젤 많이 쓰는 건 간단한 filter()이다. 00. 데이터 불러오기 R 내장 데이터셋 중 젤 많이 쓰는 iris 데이터를 사용. 01. 인덱싱을 사용한 추출 : 데이터셋명[조건, ] iris[iris$Species=='setosa',] # Species가 'setosa'인 행만 추출 iris[iris$Sepal.Length >=5,] # Sepal.Length가 5 이상인 행만 추출 02. subset() 사용 : subset(x=iris, subset=, select= ) subset(iris, Species == "setosa") # Species가 setosa인 행 추출 # S..
-
R | dplyr | 집계 데이터 만들기(group by, summarise)
dplyr은 plyr의 차기작으로서, 데이터프레임을 집중적으로 다루는 툴임. C언어로 만들어서 매우 빠름 ( 특히 chain 함수 %>% 젤 유용... ㅎ 단축키 shift+Ctrl+M) 00. 데이터 불러오기 stock % dim() # 1009행 7열 stock %>% str() stock %>% head() - 날짜 데이터 형식 지정하기 Symbol Meaning Example %d day as a number (0-31) 01-31 %a abbreviated weekday Mon %A unabbreviated weekday Monday %m month (00-12) 00-12 %b abbreviated month Jan %B unabbreviated month January %y 2-digit y..
R | ggplot2
-
R | ggmap | 지도 시각화(3) - polygon
저번 지도 시각화(2)에서는 ggmap 패키지를 사용하여 차량 주행 궤적 데이터와 항공노선 데이터를 지도 위에 geom_line, geom_path(ggplot2)로 선(경로)으로 표현하였다. 이번 포스팅에서는 ggmap 패키지와 geom_polygon(ggplot2)을 사용하여 시도, 시군구별 shape file과 , 행정구역_시도별 인구수 데이터를 활용해 지도 위에 그려볼 것이다. 01. 대한민국 지도 폴리곤 시각화 하기 대한민국 지도를 폴리곤으로 시각화하는 방법은 두 가지이다. ① raster 패키지의 지도 데이터를 사용하여 시각화 ② shape file의 지리 정보를 사용하여 시각화 1) raster 패키지를 사용해 시각화하기 대한민국 지도를 시각화 하기 위해서는 대한민국의 시군구 지리정보 데이터..
-
R | ggmap | 지도 시각화(2) - line
저번 지도 시각화(1)에서는 ggmap 패키지를 사용하여 대전광역시 상권정보를 ggmap과 geom_point, stat_density2 d(ggplot2)로 위치를 점으로 표현하고, 상권 밀집 정도를 밀도와 등고선으로 표현하였다. 이번 포스팅에서는 역시 ggmap 패키지와 geom_line(ggplot2)을 사용하여 차량 궤적 데이터와, 항공노선을 지도 위에 그려볼 것이다. 01. 차량 궤적 데이터 (ggmap + geom_line) 1) 데이터 불러오기 https://www.data.go.kr/data/15041797/fileData.do 한국전자통신연구원_자율주행 기술 개발을 위한 차량 주행궤적 데이터셋_20191204 본 데이터셋은 한국전자통신연구원(ETRI)에서 구축한 자율주행 기술 개발 용 차..
-
R | ggmap | 지도 시각화(1)
R에서는 지도 시각화를 위한 'ggmap' 패키지를 제공한다. Google map에서 지도 그림을 가져와 조각조각 붙인다. 이를 위해서는 위도, 경도 좌표값이 꼭 필요하다. 참고로 예전에는 구글맵 api를 등록하지 않고도 ggmap을 사용할 수 있었는 데, 지금은 등록해야됨. 이번 포스팅에서는 ggmap 패키지를 사용하여 지도시각화를 진행할 것이며, 크게 아래 3가지 시각화를 진행할 것이다 get_map와 ggmap을 사용한 간단한 지도 불러오기 공공데이터포털의 상가정보를 사용해 ggmap에 geom_point 그리기 공공데이터포털의 상가정보를 사용해 ggmap에 stat_density2d()을 사용해 등고선 및 밀도 추가 00. 구글맵 API 등록 - 구글맵 api는 밑의 주소에서 간단하게 등록할 수 ..
-
R | ggplot2 | Text (geom_text)
ggplot2 패키지에서 산점도나 막대그래프의 레이블을 표시하는 방법 중 가장 간단한 것은 geom_text() 함수에서 aes 객체로 label을 설정하는 것이다. geom_label()도 사용할 수 있지만 밑에서 보면 알겠지만 레이블이 사각형으로 둘러 쌓여 있어 레이블이 오버랩이 되는 경우가 있어 geom_text()를 더 많이 사용한다. geom_text( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., parse = FALSE, nudge_x = 0, nudge_y = 0, check_overlap = FALSE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE ) ..
-
R | ggplot2 | Line Plot
Line Plot, 선 그래프는 x축의 연속형 변수 or 순서나 크기가 있는 이산형 변수, ordered factor의 변화에 따른 y축의 변화를 선으로 이어서 보여주는 그래프이다. 여기서 x축이 시간의 순서이면 시계열 그래프(Time Series Graph)가 된다. ggplot2 패키지에서는 선 그래프를 그리기 위한 geom_path(), geom_line() 함수를 제공한다. 이번 포스팅에서는 geom_line()를 사용하여 선 그래프를 그릴 것이다. geom_line( mapping = NULL, data = NULL, stat = "identity", position = "identity", na.rm = FALSE, orientation = NA, show.legend = NA, inherit..
-
R | ggplot2 | Scatter Plot(산점도)
Scatter Plot , 산점도는 두 개의 연속형(continuous) 데이터의 상관관계를 파악하기에 매우 유용한 그래프이다. ggplot2 패키지에서는 Scatter Plot을 그리기 위한 geom_point() 함수를 제공한다. geom_point( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE ) · 주요 Argument Argument 사용 방법 설명 stroke point의 외곽 라인의 두께 지정 1) stroke = 1 fill point의 채우기 색상 1) fill = "컬러코드" 1) mapping 밖에 사용..
-
R | ggplot2 | Boxplot
Boxplot은 데이터를 요약하는 데 있어서 매우 유용한 그래프이다. 박스플롯을 그리기 위해서 x축은 Descrete(이산형) 변수를, y축에는 Continuous(연속형) 변수를 배치 해야 됨. · Boxplot 구조 Boxplot은 자료에서 얻은 다섯 수치 요약(five number summary)을 가지고 그린다. 다섯 수치 요약은 아래와 같다. 최솟값 : 제 1사분위에서 1.5 IQR을 뺀 위치이다 제 1사분위(Q1) : 25%의 위치를 의미한다. 제 2사분위(Q2) : 50%의 위치로 중앙값(median)을 의미한다. 제 3사분위(Q3) : 75%의 위치를 의미한다. 최댓값 : 제 3사분위에서 1.5 IQR을 더한 위치이다. IQR이란, Interquartile range의 약자로써 Q3 - Q..
-
R | ggplot2 | Density Plot (밀도 플롯)
Density Plot , 밀도 플롯은 숫자형 변수(연속형)의 분포를 볼 때 유용하다. Density Plot은 히스토그램의 평활화 버전으로 데이터의 분포를 근사적으로 파악하는 데 도움을 줌. ggplot2 패키지에서는 Density Plot을 그리기 위해서 geom_density( ) 함수를 제공한다. geom_density( mapping = NULL, data = NULL, stat = "density", position = "identity", ..., na.rm = FALSE, orientation = NA, show.legend = NA, inherit.aes = TRUE, outline.type = "upper" ) · 주요 Argument 사용 방법 설명 adjust adjust = n 밀..
-
R | ggplot2 | Histogram
히스토그램은 막대그래프와 유사하지만 연속형 변수를 시각화 한다는 점에서 차이가 있다. ggplot2 패키지에서는 geom_histogram()로 히스토그램을 시각화 할 수 있음. geom_histogram( mapping = NULL, data = NULL, stat = "bin", position = "stack", ..., binwidth = NULL, bins = NULL, na.rm = FALSE, orientation = NA, show.legend = NA, inherit.aes = TRUE ) · binwidth: X축을 나누는 bin의 너비 설정, 숫자벡터를 사용할 수 있다. (bin과 binwidth는 동시에 사용될 수 없다) · bins: X축을 나누는 bin의 개수 설정 00. 데이터..
-
R | ggplot2 | bar chart
ggplot2 패키지를 사용하여 bar chart 막대그래프 그리는 방법 막대그래프는 주로 숫자형 변수와 범주형 변수의 관계를 볼 때 사용됨. X축의 값만 지정하여 그리는 방법(하나의 이산형 변수 사용) X축 1개 Y축 1개 각각 지정하여 그리는 방법(하나의 이산형 변수, 하나의 범주형 변수) ·ggplot2 패키지에는 총 3가지 함수 제공 geom_bar() , geom_col() , stat_count() geom_bar( mapping = NULL, data = NULL, stat = "count", position = "stack", ..., just = 0.5, width = NULL, na.rm = FALSE, orientation = NA, show.legend = NA, inherit.ae..
R | Plotly
-
R | plotly | Interactive Map(3) - 지도 시각화(폴리곤)
저번 Interactive Map(2)에서는 plotly 패키지의 scattermapbox trace를 사용하여 차량 궤적 데이터와, 항공노선을 지도 위에 그려보았다. https://boring9.tistory.com/34 R | plotly | Interactive Map(2) - 지도 시각화(선) 저번 Interactive Map(1)에서는 plotly 패키지를 사용하여 대전광역시 상권정보를 scattermapbox trace를 사용해 위치를 점으로 표현하고, 상권 밀집 정도를 densitymapbox trace를 사용해 밀도로 표현하였다. https boring9.tistory.com 이번 포스팅에서는 plotly 패키지를 사용해 시도 shape file과 , 행정구역_시도별 인구수 데이터를 활용해..
-
R | plotly | Interactive Map(2) - 지도 시각화(선)
저번 Interactive Map(1)에서는 plotly 패키지를 사용하여 대전광역시 상권정보를 scattermapbox trace를 사용해 위치를 점으로 표현하고, 상권 밀집 정도를 densitymapbox trace를 사용해 밀도로 표현하였다. https://boring9.tistory.com/21 R | ggmap | 지도 시각화(2) - line 저번 지도 시각화(1)에서는 ggmap 패키지를 사용하여 대전광역시 상권정보를 ggmap과 geom_point, stat_density2 d(ggplot2)로 위치를 점으로 표현하고, 상권 밀집 정도를 밀도와 등고선으로 표현하였다. 이번 boring9.tistory.com 이번 포스팅에서는 plotly 패키지의 scattermapbox trace를 사용하..
-
R | plotly | Interactive Map(1) - 지도 시각화(점, 밀도)
이전 ggmap을 사용한 지도 시각화에서는 ggplot2 패키지와 ggmap 패키지를 사용해 scatter와 density를 지도 위에 시각화하였다. 이번 포스팅에서는 plotly 패키지를 사용하여 지도 시각화를 진행해 볼 것이다. https://boring9.tistory.com/20 R | ggmap | 지도 시각화(1) R에서는 지도 시각화를 위한 'ggmap' 패키지를 제공한다. Google map에서 지도 그림을 가져와 조각조각 붙인다. 이를 위해서는 위도, 경도 좌표값이 꼭 필요하다. 참고로 예전에는 구글맵 api를 등록하 boring9.tistory.com 00. 패키지 로드 ## 패키지 로드 library(dplyr) library(plotly) library(showtext) ### 한글..
-
R | plotly | Histogram - 히스토그램
히스토그램은 막대 그래프와 유사하지만 연속형 변수의 분포를 나타낸다는 점에서 차이가 있다. plotly 패키지에서는 히스토그램을 그리기 위해 add_trace()와 add_histogram() 함수를 제공한다. 00. 패키지 로드 및 데이터 불러오기 ## 패키지 로드 library(dplyr) library(plotly) library(showtext) ### 한글 폰트 설정 font_add_google("Nanum Gothic", "nanumgothic") ## 데이터 불러오기 : 크론병 데이터 df % layout(title = "크론병 환자의 BMI 분포", font=list(family ='nanumgothic'), xaxis = list(zeroline = F), yaxis = list(zero..
-
R | plotly | Pie chart - 원 그래프
원그래프는 시각적으로 부분과 전체, 부분과 부분 사이의 비율을 알 수 있어서 다양한 자료에 활용된다. 하지만 둘 이상의 항목을 비교하거나 시간의 흐름을 나타내는 데는 한계가 있다. 원그래프는 데이터를 정확히 분석하는 데 어려움이 있어서 잘 사용하지는 않지만, 뉴스나 보도자료에 시각화 자료로 많이 사용되는 만큼 구현 방법을 알아두는 게 좋을 것 같다. plotly 패키지에서는 add_trace()와 add_pie()를 사용해 구현할 수 있다. 00. 패키지 로드 및 데이터 불러오기 ## 패키지 로드 library(dplyr) library(plotly) library(RColorBrewer) ### 한글 폰트 설정 library(showtext) font_add_google("Nanum Gothic", "..
-
R | plotly | Line Plot - 선 그래프
Line Plot, 선 그래프는 x축의 연속형 변수 or 순서나 크기가 있는 이산형 변수, ordered factor의 변화에 따른 y축의 변화를 선으로 이어서 보여주는 그래프이다. 여기서 x축이 시간의 순서이면 시계열 그래프(Time Series Graph)가 된다. plotly 패키지에서는 Line Plot을 그리기 위한 add_trace() 함수와 add_lines() 함수를 제공한다. 00. 패키지 로드 및 데이터 불러오기 ## 패키지 로드 library(dplyr) library(plotly) library(RColorBrewer) ### 한글 폰트 설정 library(showtext) font_add_google("Nanum Gothic", "nanumgothic") · 사용 데이터 : 남극 ..
-
R | plotly | Bubble Chart - 버블 차트
이전 포스팅에서 plotly 패키지를 이용해 산점도를 시각화하였다. 산점도는 두 가지의 변수 간의 상관관계를 나타낼 때 유용하게 사용되는 데, 산점도의 한 종류인 버블 차트를 사용하면 세 가지의 변수를 사용하여 산점도를 그릴 수 있다. 세 번째 연속형 변수의 크기에 따라 버블로 표현할 수 있다. plotly 패키지를 사용하여 버블차트를 시각화하기 위해서는 산점도 trace에서 marker 속성 list에 size 속성을 사용하면 된다. 00. 패키지 로드 및 데이터 불러오기 ## 패키지 로드 library(dplyr) library(plotly) library(RColorBrewer) ### 한글 폰트 설정 library(showtext) font_add_google("Nanum Gothic", "nan..
-
R | plotly | Scatter Plot - 산점도
Scatter Plot , 산점도는 두 개의 연속형(continuous) 데이터의 상관관계를 파악하기에 매우 유용한 그래프이다. plotly 패키지를 이용해 산점도를 그리기 위해선 add_trace() 또는 add_markers() 함수를 사용하면 된다. 00. 패키지 로드 및 데이터 불러오기 ## 패키지 로드 library(dplyr) library(plotly) library(RColorBrewer) ### 한글 폰트 설정 library(showtext) font_add_google("Nanum Gothic", "nanumgothic") ## 데이터 불러오기 : 크론병 데이터 df % layout(title = "weight에 따른 BMI의 변화", font=list(family ='nanumgoth..
-
R | plotly | Violin Plot - 바이올린 플롯
저번 포스팅에서는 기술 통계에서 중요한 그래프인 박스 플롯을 plotly 패키지를 사용해서 구현해 보았다. 이번 포스팅에서는 박스플롯과 유사하지만 커널 밀도 곡선(Kernel Density Curvce)과 박스 플롯을 합친 형태인 바이올린 플롯(Violin Plot)을 시각화 할 것이다. 박스플롯의 경우 데이터의 25%, 50%, 75%의 사분위 지점을 알 수 있지만 데이터의 전반적인 분포를 파악하기는 어렵다. 이 단점을 극복하기 위해 사용하는 시각화가 바이올린 플롯이며 바이올린 플롯은 카테고리값에 따른 각 분포의 실제 데이터 또는 전체 형상을 보여준다. plotly 패키지에서는 add_trace(type = 'violin') 만을 제공한다. 그래프 조작은 html 파일 다운로드 하세요~! 00. 패키지..
-
R | plotly | box plot
이번 포스팅에서는 기술 통계에서 중요한 그래프인 박스 플롯을 plotly 패키지를 사용해서 구현해 볼 것이다. 박스플롯은 데이터의 분포와 이상치를 동시에 보여주면서 서로 다른 범주에 있는 데이터 군을 비교할 때 유용하다. 로우 데이터를 그대로 사용하지 않고, 총 5가지의 요약값(최소값, 최대값, 제1사분위수, 제2사분위수(중앙값), 제3사분위수)을 사용해 데이터를 파악할 수 있다. plotly 패키지에서는 add_trace(type = 'box')를 사용하거나 add_boxplot()을 사용한다. 그래프 조작은 html 파일 다운로드 하세요~! 00. 패키지 로드 및 데이터 불러오기 - 크론병 데이터 library(dplyr) library(plotly) library(showtext) ### 한글 폰트..
R | Leaflet
-
R | Leaflet | 인터랙티브 지도(2) - polygon
저번 포스팅에서는 leaflet 패키지로 Marker를 사용해 위치 정보를 지도 위에 나타냈다. https://boring9.tistory.com/36 R | Leaflet | 인터랙티브 지도(1) - Markers R의 대표적인 인터랙티브 지도는 Plotly 패키지를 사용해 구현할 수 있다. 이외에도 Leaflet 패키지를 사용해 인터랙티브 지도를 구현할 수 있는데, 생각보다 사용 방법이 잘 안 나와 있어서 포스팅 boring9.tistory.com 이번 포스팅에서는 shape file과 시도별 인구수 데이터로 대한민국 시도별 polygon 지도와 시도별 인구수 polygon 지도를 leaflet 패키지에서 제공하는 addPolygons() 함수를 사용해 구현하고, polygon을 커스텀 하는 방법까지..
-
R | Leaflet | 인터랙티브 지도(1) - Markers
R의 대표적인 인터랙티브 지도는 Plotly 패키지를 사용해 구현할 수 있다. 이외에도 Leaflet 패키지를 사용해 인터랙티브 지도를 구현할 수 있는데, 생각보다 사용 방법이 잘 안 나와 있어서 포스팅을 통해서 Leaflet 사용법을 설명할 것이다. 이번 포스팅에서는 leaflet 패키지로 Marker를 사용해 위치 정보를 지도 위에 나타낼 것이다. 00. 패키지 로드 및 데이터 불러오기 1) 패키지 로드 ## 패키지 로드 library(dplyr) library(leaflet) ### 한글 폰트 설정 library(showtext) font_add_google("Nanum Gothic", "nanumgothic") 2) 소상공인시장진흥공단_상가(상권)정보 : 영업 중인 전국 상가업소 데이터를 제공 (..
SQL
-
SQL | MySQL | 기본키, 고유키, 외래키
1. 기본키 (Primary Key) ✅ Primary Key, 기본키란? : SQL 데이터베이스에서 특정 레코드를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합. : Primary Key는 테이블에서 각 레코드를 식별하는 데 사용되며, 테이블의 각 레코드에는 Primary Key 값이 반드시 있어야 함. ✅ Primary Key 특징 👉 각 레코드에 대해 고유하다.(Unique) 👉 NULL 값이 허용 안됨(NOT NULL) 👉 레코드를 식별하는 데 사용 , 테이블당 하나의 기본키만 지정 가능 ✅ Primary Key 생성 방법 ✔️ 기본키 생성 방법1 CREATE TABLE users( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100), p..
-
SQL | MySQL | 서브쿼리 (Subquery)
00. 서브쿼리(Subquery)란? ✅ 서브쿼리란? 👉 서브쿼리(Subquery)란 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미 👉 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 함 👉 서브쿼리는 내부쿼리(inner query) 라고도 함 👉 서브쿼리는 반드시 괄호 안에 있어야 함 👉 복잡한 JOIN이나 UNION을 대체할 수 있음 👉 메인쿼리 안에서 SELECT, FROM, WHERE, HAVING, 또는 IN 절과 함께 사용 ✅ 서브쿼리의 예 SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); ✅ 예제 테이블들 -- customers 테이블 생성 DROP TABLE customers; CREATE TABLE cus..
-
SQL | MySQL | 테이블 집합 연산 - UNION, UNION ALL 등
✅ 예제 테이블 생성 CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department_id INT ); CREATE TABLE departments ( department_id INT PRIMARY KEY, department_name VARCHAR(50) ); INSERT INTO employees (employee_id, first_name, last_name, department_id) VALUES (1, 'John', 'Doe', 1), (2, 'Jane', 'Smith', 2), (3, 'Bob', 'Johnson', 1), (4, 'Alice', 'Brown'..
-
SQL | MySQL | JOIN - inner, left, right
01. MySQL에서의 JOIN MySQL에서 JOIN은 두 개 이상의 테이블에서 데이터를 검색하는 데 사용됨. 두 개 이상의 테이블의 자료를 결합 ✅JOIN의 종류 ① (INNER) JOIN 👉 EQUI JOIN : 주어진 (열에 대한) 조인 조건을 만족하는 자료(행) - 양쪽 모두에 값이 있는 행(NOT NULL) 반환 - 만약 동일 조인 내에 있는 컬럼들이 동일한 이름을 가지고 있으면, USING 함수를 사용할 수 있음. 👉 CROSS JOIN - 두 개 이상의 테이블에서 모든 조합을 반환 - 왼쪽 테이블의 모든 행이 오른쪽 테이블의 모든 행과 결합 👉 NATURAL JOIN - EQUI JOIN의 한 유형으로 조인 구문이 조인된 테이블에서 동일한 컬럼명을 가진 2개의 테이블에서 모든 컬럼들을 비교..
-
SQL | MySQL | Window Functions (2) - 집계 함수
01. Window Functions - 윈도우 함수 MySQL 8.0부터 Window Functions이 도입됨 OVER( ) 절을 사용해 지정된 윈도우 프레임에서 연산을 수행하는 함수 OVER ( [PARTITION BY ] [ORDER BY [ASC|DESC], ... ] [] ) 은 윈도우 함수를 넣으면 됨. PARTITION BY은 GROUP BY와 같은 기능을 함 👉 대표적인 윈도우 함수들 ROW_NUMBER( ) : 각 행에 일련번호 부여 RANK( ) : 각 행의 순위를 할당(중복이 있을 경우 중복 값은 같은 순위 부여, 1,1,3등으로 넘어감) DENSE_RANK( ) : 각 행의 순위를 할당(중복가능, 1, 1, 2,3... 순차적으로 순위부여) SUM( ), AVG( ), MIN( )..
-
SQL | MySQL | Window Functions (1) - 데이터 순위
01. Window Functions - 윈도우 함수 MySQL 8.0부터 Window Functions이 도입됨 OVER( ) 절을 사용해 지정된 윈도우 프레임에서 연산을 수행하는 함수 OVER ( [PARTITION BY ] [ORDER BY [ASC|DESC], ... ] [] ) 은 윈도우 함수를 넣으면 됨. PARTITION BY은 GROUP BY와 같은 기능을 함 👉 대표적인 윈도우 함수들 ROW_NUMBER( ) : 각 행에 일련번호 부여 RANK( ) : 각 행의 순위를 할당(중복이 있을 경우 중복 값은 같은 순위 부여, 1,1,3등으로 넘어감) DENSE_RANK( ) : 각 행의 순위를 할당(중복가능, 1, 1, 2,3... 순차적으로 순위부여) SUM( ), AVG( ), MIN( )..
-
SQL | MySQL | 그룹에 따른 집계 - GROUP BY, HAVING
01. GROUP BY 절 GROUP BY절은 특정 컬럼을 기준으로 그룹화하여 테이블에 존재하는 행들을 그룹별로 구분해 준다. 그룹 함수를 쓰되, 어떤 컬럼값을 기준으로 그룹 함수를 적용할지 기술해야 함. GROUP BY Syntax SELECT column names FROM table_references [WHERE where_condition ] [GROUP BY {column name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] 1) 그룹 함수 그룹 함수는 여러 개의 레코드를 하나의 그룹으로 묶어서 계산을 수행 ➡️MySQL에서 자주 사용되는 그룹 함수들(NULL값은 집계X) COUNT( ) : 그룹의 레..
-
SQL | MySQL | 내장 함수(2) - 날짜, 시간 함수
01. 현재 날짜, 시간 반환 함수 CURRENT_DATE( ) , CURDATE( ) : 현재 날짜 반환 CURRENT_TIME( ), CURTIME( ) : 현재 시간 반환 CURRENT_TIMESTAMP( ), NOW( ) : 현재 시간과 날짜 반 SELECT CURDATE(), CURTIME(), NOW(); 02. 특정 날짜, 시간정보 반환 · 예제 테이블 CREATE TABLE orders ( order_id INT NOT NULL AUTO_INCREMENT, order_date DATE NOT NULL, order_time TIME NOT NULL, PRIMARY KEY (order_id) ); INSERT INTO orders (order_date, order_time) VALUES ('2..
-
SQL | MySQL | 내장 함수(1) - 숫자, 문자와 관련된 함수
MySQL에서는 다양한 기능의 내장 함수가 있음. 대표적인 내장함수는 아래와 같다. 1. 문자열 함수 2. 수학 함수 3. 날짜와 시간 함수 00. 사용 예제 테이블 원래는 예제 테이블을 하나 하나 데이터 제공 사이트에서 찾았는데,,, 요즘 ChatGPT가 많이 뜨길래 혹시 몰라서 사용해봤다^~^ https://chat.openai.com/chat 에 접속 후 Regenerate response 창에'MySQl에서 수학 함수, 문자열 함수를 모두 다룰 수 있는 20행짜리 예제 테이블 생성쿼리 알려줘' 라고 치면CREATE문과 INSERT INTO문을 날려준다...! CREATE TABLE func_ex( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age..
-
SQL | MySQL | SELECT(2) - 연산자(산술, 비교, 논리)
MySQL은 대부분의 프로그래밍 언어에서 지원하는 기본적인 연산자를 모두 제공. 이러한 연산자를 사용하여 데이터를 추출하고 처리할 수 있다. 01. 산술 연산자(사칙연산) · + , - , * , / : 더하기, 빼기, 곱하기, 나누기 · DIV : 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림. · % OR MOD : 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후 , 그 나머지를 반환. SELECT 10 + 3, 10 - 7, 10 * 3, 10 / 3, 10 DIV 3, 10 % 3, 10 MOD 3 ; ※ 문자열에 사칙연산을 가하면 0으로 인식 SELECT 10 + "ABC", 10 - "ABC", 10 * "ABC" ; ※ 숫자로 구성된 문자열은 숫자로 자동인식 SELECT '1' +..