2024/07 34

TIL (7/31) <날짜 자료형 총 정리(My SQL)>

1. 날짜형 자료 기본My SQL 자료형한국은 UTC보다 9시간 빠르다. 방법1)#세션에서 시간대를 변경 SET time_zone = 'Asia/Seoul'; SELECT CURDATE(), CURRENT_TIME(), NOW(); 방법2) 글로벌 시간대를 변경한다. (ROOT 권한 필요)SET GLOBAL time_zone = 'Asia/Seoul'; SELECT CURDATE(), CURRENT_TIME(), NOW(); 방법3) 시간대를 변환하여 조회CONVERT_TZ(NOW(), FROMTZ, TO_TZ)SELECT CONVERT_TZ(NOW(), '+00:00', '+09:00') AS current_seoul_time; DATETIME vs TIMESTMAP 2. 날짜 변환 & 가공 함수YEA..

TIL/SQL 2024.07.31

프로그래머스| 우유와 요거트가 담긴 장바구니(My SQL)

조건 두개를 동시에 만족해야 하기에 self join을 활용하여 문제를 해결하였다. 나의 풀이)select a.cart_idfrom cart_products a join (select cart_id, namefrom cart_products) b on a.cart_id = b.cart_id where a.name = "Milk" and b.name = "Yogurt" group by cart_idorder by cart_id하나의 쿼리에선 name이 Milk인, 하나의 쿼리에선 Yogurt인 cart_id에 대해 교집합을 구하였다.^ㅁ^

TIL/SQL 2024.07.31

프로그래머스| 헤비 유저가 소유한 장소(My SQL)

처음 작성한 코드select id, name, host_id from (select *from placesgroup by host_id having count(*) >= 2) as a order by id 오류 발생 이유는 group by host_id로 인해 having절을 만족하는 host_id에 대한 행 총 두개만 출력이 된다.원하는 쿼리는 조건을 만족하는 host_id가 가진 모든 공간 정보가 나와야 하기에 where절에 서브쿼리를 사용해야 한다. 나의 풀이)select id, name, host_id from places where host_id in (select host_id from places group by host_id having count(*) >= 2) order by idwhe..

TIL/SQL 2024.07.31

전처리 <그룹 내 데이터 최빈값으로 대체하기>

결측치를 채우는 전처리는 해보았는데, null값이 없는 컬럼의 이상치를 그룹 내 최빈값으로 대체하는 과정은 처음이었다.많이 쓸 것 같아서 기억하려고 가져왔다.df['연간 소득'] = df['연간 소득'].str.replace('_', '') df['연간 소득'] = df['연간 소득'].astype(float) df['연간 소득'] = df['연간 소득'].astype(int) [연간 소득] 컬럼이 object형이고, '_'가 들어가 있는 이상값이 있어서 언더바를 삭제한 후, int형으로 변환해주었다. from scipy.stats import mode df['최빈값'] = df.groupby('고객번호')['연간 소득'].transform(lambda x: mode(x)[0])최빈값을 구하는 함수인 m..

데이터 전처리 <IQR 이상치 제거>

프로젝트 진행 중 [마감 지연 건수] 컬럼 전처리 과정df['마감 지연 건수'].describe()min 값이 -3으로 건수가 음수인 건 말이 안됨. > 이상치라고 판단은행에 대한 도메인 지식이 부족하므로 다른 행들을 본 결과 음수로 잘못 입력됐다고 판단.def remove_minus(series):     if series         return (-series)     else: return (series) df['마감 지연 건수'] = df['마감 지연 건수'].apply(remove_minus)min 값이 0으로 바뀐 것을 확인 할 수 있다. 마감 지연 건수가 4399로 이상치라고 판단하였다.IQR을 통해 이상치 값을 제거하기로 하였다.q1=df['마감 지연 건수'].quantile(0.25)..

SQL <자료형, 외부에서 데이터 불러오기>

1. 정수형 자료형SIGNED(기본)과 UNSIGNED 옵션을 가질 수 있음.전자는 양수/음수를 후자는 양수를 저장함.또한 정수형 자료형은 Auto_increment 제약조건을 이용하여 ID를 생성하는데 유용 2. 실수형 자료형이진법으로 데이터를 저장하는 컴퓨터 특성상 소수점의 정확한 저장이 어렵다.이를 부동소수점이라함. 저장이 효율적이지만 어느정도 정확도를 제한하겠다 --> 부동소수점저장이 비효율적이지만 정확도를 추구하겠다 -->고정소수점위부터 float, double, decimal 자료형 3. 문자 자료형정규표현식 - 문자열에서 특정 패턴을 찾기 위한 강력한 도구 - 자연어 처리를 할 수 있는 제일 간단한 도구 - REGEXP_LIKE() : 주어진 문자열이 정규표현식과 일치하는지 여부를 반환 - ..

TIL/SQL 2024.07.23

SQL<DDL, DML, 확장자>

1. 테이블 생성하기(DDL)CREATE TABLE {테이블명} ({컬럼1} {자료형} PRIMARY KEY      #일반적으로PK가 첫 번째옴 {컬럼2} {자료형} {제약조건}       #서로 관계를 가지고 있는 RDB 특성상 제약조건이 필요할때가 있음 );CREATE TABLE에서는 컬럼별로 제약조건을 설정할 수 있음.제약 조건이란 ?- 데이터의 무결성을 보장하는데 도움이 되는 시스템 ex) JOBS 테이블 생성하기CREATE TABLE jobs (    job_id VARCHAR(10) PRIMARY KEY,    job_title VARCHAR(100),    min_salary INT,    max_salary INT); 2. 데이터 조작하기(DML) 1) 데이터 삽입하기#기본 구성INSER..

TIL/SQL 2024.07.23

데이터 시각화1

matplotlib이란?파이썬에서 시각화를 위한 라이브러리 중 하나로, 다양한 종류의 그래프를 생성하기 위한 도구를 제공2D 그래픽을 생성하는 데 주로 사용한다. import matplotlib.pyplot as pltimport로 matplotlib 라이브러리를 가져와준다. # 선 그래프 그리기plt.plot(x, y) plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.title('Example Plot') plt.show()  1. 그래프 그리기1) 도구pandas의 plot() 메서드는 DataFrame 객체에서 데이터를 시각화하는 데 사용됨.plot() 메서드를 호출하고  x와 y인수에 각각 x축과 y축에 해당하는 열을 지정함.data = { 'A': [1, 2, ..

WIL #3

FACTS (사실, 객관) : 이번 일주일 동안 있었던 일, 내가 한 일  ● SQL 코드카타 ~62, 알고리즘 코드카타 ~50, TIL 매일 작성하기  ● SQL 프로그래머스 문제 복습 및 강의, 함수 정리  FEELINGS (느낌, 주관) : 나의 감정적인 반응, 느낌  ● 전처리와 시각화 강의를 들으면서 지금까지 해보지 않았던 것이기에 살짝 겁을 먹은 것 같다.  ● 강의를 보기만 하지 말고 실제로 받아서 코드를 적어보며 실습하면 좋을 것 같다.  FINDINGS (배운 것) : 그 상황으로부터 내가 배운 것, 얻은 것  ● 새로운 코드를 만드는 것이 잘하는 것이 아니라 있는 코드들을 잘 이용하고 사용할 줄 아는 사람이 잘하는 사람이라는 것을 배웠다.   FUTURE (미래) : 배운 것을 미래에는..

WIL 2024.07.19

데이터 전처리2

3. 데이터 선택● .iloc[로우, 컬럼] : 인덱스 번호로 선택하기- 행번호(로우)와 열번호(컬럼)을 통해 특정 행과 열 데이터를 선택할 수 있음.import pandas as pd # 샘플 데이터프레임 생성 data = {      'A': [1, 2, 3, 4, 5],       'B': [10, 20, 30, 40, 50],       'C': [100, 200, 300, 400, 500] } df = pd.DataFrame(data) # iloc을 사용하여 특정 행과 열 선택 selected_data = df.iloc[1:4, 0:2] # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택 print(selected_data)      A  B  C                        ..