Skip to content

Commit 29145b7

Browse files
committed
파이널리
1 parent 4f4ee42 commit 29145b7

File tree

3 files changed

+47
-20
lines changed

3 files changed

+47
-20
lines changed

_posts/2025-02-03-헷갈리는 것들.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@ LIst comprehension
2323

2424
# My SQL
2525

26-
SELECT
26+
### SELECT
2727
- ISNULL
2828
- IFNULL
2929
- IF
3030
- CASE WHEN THEN (여러개의 조건식)
3131
- DISTINCT (중복된 데이터 제거)
3232

33-
WHERE
33+
#### UNION
34+
- 여러 개의 `SELECT` 결과를 `세로`로 합치는 연산자
35+
-`SELECT` 문이 하나의 행(row)이 되고, `UNION`이 그것들을 하나의 집합으로 합침.
36+
37+
### WHERE
3438
- = , !=, >, <, >=, <=
3539
- LIKE / NOT LIKE
3640
- % (와일드카드)
@@ -39,14 +43,33 @@ WHERE
3943
- AND / OR
4044
- BETWEEN / NOT BETWEEN
4145

42-
ORDER BY
46+
### ORDER BY
4347
- ASC
4448
- DESC
4549

46-
LIMIT
50+
### LIMIT
4751
- LIMIT(4,10) (데이터를 5번째부터 10개)
4852

4953
VARCHAR : 가변적인 문자열 데이터
5054
CHAR : 고정된 문자열 데이터
5155

52-
DECIMAL(5,2) : 999.99가 최대 크기인 고정된 자릿수의 소수 표현
56+
### DECIMAL
57+
- DECIMAL(5,2) : 999.99가 최대 크기인 고정된 자릿수의 소수 표현
58+
59+
### GROUP BY
60+
group by를 했을 경우 - 내가 집계 하고자 하는 대상과 group의 이름 빼고는 select절에서 사용할 수 없다.
61+
62+
WHERE : FROM에서 불러온 데이터에 대한 필터링
63+
HAVING : 집계 결과에 대한 필터링
64+
- 무조건 GROUP BY와 함께 사용해야 함.
65+
66+
### WINDOW FUNCTION
67+
GROUP BY - 집계를 하면 Reduction 발생함.
68+
Window Functions - 집계를 해도 Reduction이 발생하지 않음.
69+
70+
One TO Many
71+
참조키 왜래키
72+
CROSS JOIN
73+
74+
count * : 행의 개수 셈
75+

_posts/2025-02-05-sql실습01.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ layout : post
33
title : "Mysql 실습 01"
44

55
categories:
6-
- learning log
6+
- sql
77
tags:
8-
- [memo]
8+
- [sql, mysql]
99

1010
toc: true
1111
toc_sticky: true

_posts/2025-02-06-학습로그1(stack,melt).md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ toc_sticky: true
1313
date: 2025-02-06 12:52:00 +0900
1414
---
1515

16-
## 서론
16+
# 서론
1717
&nbsp;`학습로그`를 처음 작성하기에 앞서, 내가 수업시간에 헷갈리던 부분이 무엇인가 작성한 코랩 파일을 하나씩 보며 되짚어봤다.
1818
여러가지가 있었지만... 그 중에서도 잘 이해가 되지 않았던 `stack``melt`가 눈에 들어왔다.
1919
중요한 집계 파트이기도 했고, melt가 중요하다고 말씀하신 거 같았기에, 이번 기회에 확실히 개념을 잡고 넘어가면 좋을 거 같았다.
2020
`stack``melt`의 용도를 헷갈리기 전에, `집계`란 무엇인지 정확히 알고 가자.
2121

22-
## 본론
22+
# 본론
2323
#### **집계란?**
2424
&nbsp;여러 개의 값을 모아(**'집'**) 계산하여(**'계'**) <u>하나의 값으로 요약</u>하는 과정이다.
2525
대표적인 집계 함수로는 mean(), min(), max() 등이 있다.
@@ -67,8 +67,7 @@ Index(['이름', '반', '국어', '수학', '영어'], dtype='object')
6767
***
6868

6969
해당 df를 사용하여 `stack`, `melt`에 대해 자세히 이해해보자.
70-
`stack``melt`를 이해하기에 앞서, 보통의 DataFrame 컬럼은 `멀티인덱스`를 갖지
71-
않지 않는다. 따라서 `pivot_table`을 통해 집계를 시행하여 컬럼에 `멀티인덱스`를 만든 뒤에, `stack``melt`를 적용해보자.
70+
`stack``melt`를 이해하기에 앞서, 보통의 DataFrame 컬럼은 `멀티인덱스`를 갖지 않는다. 따라서 `pivot_table`을 통해 집계를 시행하여 컬럼에 `멀티인덱스`를 만든 뒤에, `stack``melt`를 적용해보자.
7271

7372
## pivot_table
7473
- 컬럼에 있는 것들을 직접 index, columns, values,으로 지정하고, 원하는 집계 방법을 aggfunc에 적는다.
@@ -127,8 +126,8 @@ MultiIndex([('mean', '국어'),
127126
( 'max', '영어')],
128127
)
129128
```
130-
이렇게 표의 출력과 index와 columns를 확인을 통해 컬럼이 멀티인덱스로 변경됨을 확인할 수 있다.
131-
이 상태에서 stack을 사용한다면 어떤 변화가 일어날까?
129+
이렇게 표의 출력과 index와 columns를 확인을 통해 컬럼이 `멀티인덱스` 변경됨을 확인할 수 있다.
130+
이 상태에서 `stack` 사용한다면 어떤 변화가 일어날까?
132131

133132
스택의 특징은 다음과 같다.
134133
## stack
@@ -137,7 +136,7 @@ MultiIndex([('mean', '국어'),
137136
- 행 인덱스는 `MultiIndex`가 됨
138137
- 표가 가로로 너무 길 경우(wide format), 세로로 길게 만들 수 있음(long format)
139138
- **집계를 하기 위한 기능은 아니다!**
140-
- `멀티인덱스`**집계가 불가능**하다.
139+
- `멀티인덱스`**집계가 불가능**하기 때문.
141140
- stack() 안에 컬럼 레벨을 지정하지 않으면 가장 하위레벨이 자동으로 선택 된다.
142141
- 결과적으로, 기존 표의 구조를 바꿔서 보기 쉽게 만든다.
143142

@@ -195,11 +194,16 @@ Index(['mean', 'min', 'max'], dtype='object')
195194
***
196195

197196
또한 stack의 반대 개념인 `unstack`이 존재하는데, stack의 반대 개념이므로 가볍게 보고 넘어가자.
198-
### unstack()
197+
## unstack()
199198
- 행의 `멀티인덱스`를 컬럼으로 올린다.
200199
- stack()의 반대개념이다.
201200
- stack()을 실행한 DataFrame을 unstack하면 처음 형태가 된다.
202201

202+
```
203+
stack : 컬럼 -> 행
204+
unstack : 행 -> 컬럼
205+
```
206+
203207
#### unstack() 사용법
204208
```python
205209
df.unstack(행 인덱스 레벨)
@@ -210,11 +214,11 @@ df_stack.unstack()
210214
```
211215
`[출력]`
212216
![](/images/../images/2025-02-05-23-18-42.png)
213-
- 행 인덱스의 가장 하위레벨이었던 `'국어', '수학', '영어'`가 컬럼인덱스의 가장 하위레벨이 되었다.
217+
- 행 인덱스의 가장 하위레벨이었던 `'국어', '수학', '영어'`가 컬럼인덱스의 가장 `하위레벨` 되었다.
214218

215219
***
216220

217-
위의 과정을 통해, `stack`**컬럼레벨을 행의 인덱스** 만드는 것을 알게 되었다. 또한 stack을 통해 컬럼을 행 인덱스로
221+
위의 과정을 통해, `stack`**컬럼레벨을 행의 인덱스** 만드는 것을 알게 되었다. 또한 `stack` 통해 컬럼을 행 인덱스로
218222
내리면, 인덱스가 합쳐져 `멀티인덱스`가 됨을 알았다.
219223

220224
컬럼이 `멀티인덱스`인 경우 가로로 표가 길어져 가독성이 떨어지기 때문에 `stack`을 통해 표의 구조를 보기 좋게 바꿀 수 있다.
@@ -225,8 +229,8 @@ df_stack.unstack()
225229

226230
## melt
227231

228-
- 기준을 잡은 컬럼들을 제외하고, 남은 컬럼들을 하나의 컬럼으로 녹임.
229-
- 따라서 카테고리가 컬럼에 있다면, 해당 카테고리에 대해 집계를 할 수 있게 해준다.
232+
- 기준을 잡은 컬럼들을 제외하고, 남은 **컬럼들을 하나의 컬럼으로** 녹임.
233+
- 따라서 카테고리가 컬럼에 있다면, 해당 카테고리에 대해 **집계를 할 수 있게 해준다.**
230234

231235
특징을 살펴보면 `stack`과의 차이를 볼 수 있다. `stack`**컬럼을 행인덱스로 만드는 것**이고, `melt`는 컬럼들을 기준을 두고 **하나의 컬럼으로 녹이는 것**이다.
232236
뭔가 알쏭달쏭 알 것 같지만, 아직 헷갈리기 때문에 직접 사용해서 비교해보자.
@@ -298,7 +302,7 @@ Index(['이름', '반', '과목', '점수'], dtype='object')
298302
| 사용 예시 | `df.stack()` | `pd.melt(df, id_vars=["기준 컬럼"])` |
299303
| 주로 사용하는 상황 | 멀티인덱스가 필요할 때 | 데이터 시각화를 위해 긴 형태(long format)로 변환할 때 |
300304

301-
## 마무리
305+
# 마무리
302306
&nbsp; 학습로그를 태어나서 처음 작성해 보았는데, 내가 모르는 부분을 시간내서 조사하고,
303307
이해하는 게 생각보다 재밌어서 좋았다. 그러나 조사하고 공부한 내용들을 머릿속에서 꺼내서
304308
예쁘게 작성하는 게 어려웠다. 아직 요령이 없어서 그렇다고 생각한다. 앞으로 꾸준히 작성해서

0 commit comments

Comments
 (0)