전체 글

Garbage in, garbage out
알고리즘

[SQL]프로그래머스 Lv.2 NULL 처리하기

✅ 코드 SELECT ANIMAL_TYPE , IFNULL(NAME, 'No name') , SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID; IFNULL 함수를 이용한 풀이입니다. 🔎 참고 IFNULL(exp1, exp2) 첫 번째 인수 exp이 NULL이 아닌 경우 → exp1 리턴 첫 번째 인수 exp이 NULL인 경우 → exp2 리턴

데이터베이스・SQL

[MySQL]SQL 쿼리문 실행 순서 정리하기

이번 포스팅에서는 SQL 쿼리문을 실행하는 순서에 대해 알아보도록 하겠습니다. 그전에 우선 SQL 쿼리문을 작성하는 문법 순서부터 정리하겠습니다. SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY 하지만 쿼리문의 실행 순서는 문법 순서와는 차이가 있습니다. FROM → (JOIN) → WHERE → GROUP BY → HAVING → SELECT → (DISTINCT) → ORDER BY ✅ 쿼리문 작성 TIP ALIAS는 SELECT, WHERE, ORDER BY 문에서 사용이 가능합니다. WHERE 문에서는 집계함수(SUM, AVG, MIN/MAX 등)를 사용할 수 없습니다. 따라서 WHERE 대신에 HAVING을 사용합니다.

파이썬・ML/pandas

판다스 카테고리 타입 데이터 커스텀 정렬하기

sort_index 메서드를 사용해서 데이터프레임의 인덱스를 정렬하던 중 원하는 순서대로 정렬할 수 없는 문제가 발생했습니다. 알파벳 순서로 아무리 오름차순/내림차순 정렬을 시도해도 원하는 순서대로 나열할 수 없었습니다. 고민하던 중 해당 데이터 타입을 카테고리형으로 변환해야겠다는 생각이 들었습니다. 해당 데이터는 Medal 관련 값들로 'Gold', 'Silver', 'Bronze'로 분류가 가능했습니다. from pandas.api.types import CategoricalDtype cat_medal = CategoricalDtype( ['Bronze', 'Silver', 'Gold'], ordered=True ) type(cat_medal) # pandas.core.dtypes.dtypes.Cat..

파이썬・ML/pandas

판다스 데이터프레임 정리(2) 결측값/중복값/필터링/정렬 등

지난 포스팅에 이어 이번 포스팅에서도 데이터프레임을 다루는 여러 메서드에 대해 알아보도록 하겠습니다. 지금부터 정리할 함수들은 데이터를 전처리하는 과정에서 많이 사용하기 때문에 공식문서와 병행해 반복 학습하는 것을 추천합니다. 1. 데이터프레임 행과 열 삭제 drop 메서드를 사용하면 데이터프레임의 행과 열을 삭제할 수 있습니다. 아래 oil 예제 데이터프레임의 행과 열을 제거하는 예제를 살펴보겠습니다. oil_0_off = oil.drop(0, axis=0) oil_0_off.head() axis=0 옵션으로 데이터프레임 행을 삭제할 수 있습니다. 제거할 행을 지정하기 위해 행 인덱스를 사용합니다. 위 코드를 실행하면 인덱스가 0인 행 데이터가 사라진 것을 알 수 있습니다. oil_0_off.reset..

파이썬・ML/pandas

판다스 데이터프레임 정리(1) 주요속성/메서드/조회

이전 포스팅까지 Series에 대해 자세하게 살펴봤습니다. 이번 포스팅부터는 DataFrame에 대해 알아보도록 하겠습니다. import pandas as pd import numpy as np 1. 주요 속성과 메서드 데이터프레임을 구성하는 하나의 컬럼은 Series입니다. 여러 Series들이 모여 동일한 행 인덱스를 공유하며 하나의 데이터프레임을 이루는 것입니다. 이러한 데이터프레임 객체의 주요 속성과 메서드에 대해 알아보겠습니다. 1-1. 속성 ✅ shape nba.shape # (450, 5) type(nba.shape) # 데이터프레임의 형태를 튜플로 리턴합니다. 위 코드에서 nba 데이터프레임의 형태가 (450, 5)라는 사실을 알 수 있습니다. ✅ index type(nba.index) ..

파이썬・ML/numpy

넘파이 브로드캐스팅(broadcasting) 이해하기

직전 포스팅에서 넘파이 배열의 원소별 연산(Element-wise operation)에 대해 알아봤습니다. 이번에는 그 연속선 상에서 브로드캐스팅에 개념에 대해 알아보도록 하겠습니다. import numpy as np 브로드캐스팅? 브로드캐스팅 덕분에 서로 다른 형태(shape)의 배열을 연산할 수 있습니다. 연산이 가능한 이유는 서로 다른 shape을 동일한 형태로 일치시키기 때문입니다. 이처럼 브로드캐스팅은 배열 연산의 편리성을 높여주지만 의도하지 않은 버그를 유발할 수 있습니다. 따라서 브로드캐스팅의 발생 조건에 대해 확실하게 알고 있어야 합니다. 브로드캐스팅이 발생하는 조건은 총 2가지가 존재합니다. 배열의 차원(ndim)이 같거나 다른 경우인데 우선 전자부터 살펴보겠습니다. - 차원이 같은 경우..

파이썬・ML/numpy

넘파이 배열의 원소별 연산 이해하기(Element-wise operation)

이번 포스팅에서는 넘파이 배열의 연산 방식에 대해 알아보도록 하겠습니다. Element-wise 연산? arr1 = np.random.randint(-5, 5, (5, )) print(arr1) # [ 1 -1 -3 3 2] arr2 = np.random.randint(-5, 5, (5, )) print(arr2) # [ 3 4 -5 4 -3] print(arr1 + arr2) # [ 4 3 -8 7 -1] 기본적으로 넘파이 배열은 모두 원소별 연산을 수행합니다. 원소별로 연산한다는 것의 의미는 각 배열의 동일한 인덱스에 위치한 값들끼리 계산한다는 말입니다. 단, 연산하는 배열들의 shape은 동일해야 합니다. M = np.random.randint(1, 5, (2, 3)) print(M) # [[2 4..

파이썬・ML/numpy

넘파이 배열의 형태 조작하기(reshape/resize)

이번 포스팅에서는 넘파이 배열의 형태를 조작하는 reshape, resize 메서드에 대해 알아보도록 하겠습니다. import numpy as np reshape 메서드 - np.reshape(a, newshape, ...) - ndarray.reshape(shape, ...) arr1 = np.arange(6) print(arr1) # [0 1 2 3 4 5] print(arr1.shape) # (6, ) print(arr1.size) # 6 arr2 = np.reshape(arr1, (2, 4)) # ValueError: cannot reshape array of size 6 into shape (2,4) reshape 메서드는 기존 배열의 형태를 변환합니다. 단, 변환 전과 후의 size 속성값이 ..

truezero
데이터 공부하는 제이슨