Skip to content

Commit 4529b10

Browse files
committed
ggg
1 parent beac545 commit 4529b10

File tree

2 files changed

+90
-3
lines changed

2 files changed

+90
-3
lines changed

_posts/2025-01-18-10.데이터 집계_분포와 통계량.md renamed to _posts/2025-01-18-10.[Pandas] 10. 데이터 집계_분포와 통계량.md

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ toc_sticky: true
1313
date: 2025-01-18 15:52:00 +0900
1414
---
1515

16-
*** 데이터 리소스는 titanic_train.csv를 사용합니다.***
16+
**데이터 리소스는 titanic_train.csv를 사용합니다.**
1717

1818
# 10. 데이터 집계_분포와 통계량
1919

20-
## 집계란?
20+
### 집계란?
2121
- 모아서 계산한다.
2222
- 집계의 결과는 **무조건 1개**
2323
- 각 그룹별 N(N개의 레코드 수)를 집계하면 1개(통계값,대표값)이 나옴.
@@ -56,5 +56,30 @@ df.min(numeric_only=True)
5656
df.quantile(0.9, numeric_only = True) # 100개로 정렬 했을 때 90번째에 있는 값?
5757
```
5858

59-
## 변수의 상관관계 확인하기
59+
### 변수의 상관관계 확인하기 (찍먹)
60+
- 상관관계 분석 : 두 변수의 관련성을 구하는 것
61+
- 두 변수 간의 연관된 **"정도"**이지, **"인과관계"**를 설명하진 않는다. (인과관계를 설명하는 것은 **확률!!!**)
62+
- 상관계수 = 두 변수가 함께 변하는 정도(공분산) / 두 변수가 각각 변하는 정도(각 변수의 분산의 곱- 정규화)
63+
64+
```python
65+
df.corr(numeric_only = True) # 숫자 값만 계산한다는 것
66+
```
67+
68+
```python
69+
import seaborn as sns
70+
import matplotlib.pyplot as plt
71+
72+
sns.heatmap(
73+
df.corr(numeric_only = True),
74+
annot=True # 표 위에 숫자 쓸까?-?
75+
)
76+
plt.show()
77+
```
78+
79+
# 11. 데이터 집계
80+
81+
titanic_train.csv 사용
82+
83+
84+
6085

_posts/2025-01-23-[Pandas] 07. 데이터가공 날짜.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,65 @@ df2.loc[miss_mask]
238238
df2["Name"] = df2["Name"].str.replace(",", "⭐️")
239239
```
240240

241+
# 09. 데이터 결합
242+
243+
korean-idol_csv 사용
244+
245+
## Concat
246+
### 1. row 기준 합치기
247+
- 행 인덱스 기준으로 합치기
248+
```python
249+
df1_concat = pd.concat([df1, df1_copy], axis = 0) # 아래쪽 방향으로 결합
250+
df1_concat.reset_index(drop=True) # 인덱스 리셋
251+
```
252+
### 2. Column 기준 합치기
253+
- concat에서 axis = 1로 설정
254+
255+
```python
256+
df2_concat = pd.concat([df1, df2], axis = 1) # axis = 1 : 행 인덱스끼리 맞는 걸로 열방향으로 결합
257+
```
258+
```python
259+
df3 = df2.drop([3,5]) # 일부러 3,5 인덱스 행을 드랍시키고 결합해보자.
260+
pd.concat([df1, df3], axis=1 ) # 값이 결합 될 수 없는 곳엔 Nan값이 채워짐.
261+
```
262+
## Merge
263+
- `concat` : `row``column` 기준으로 단순하게 이어 붙이기
264+
- `merge` : 특정한 고유 키(`unique id`) 값을 기준으로 **병합**
265+
266+
#### pd.merge(left, right, on='기준 컬럼', how='left')
267+
- `left`, `right` : 병합할 두 DataFrame
268+
- `on` : 병합의 기준이 되는 컬럼의 이름, **기준이 된 데이터 프레임은 데이터의 삭제가 일어나지 않는다!!**
269+
- `how` : `left, right, inner, outer` 4가지 병합방식 설정
270+
271+
### left, right
272+
- 기준이 왼쪽, 기준이 오른쪽
273+
274+
```python
275+
pd.merge(
276+
df1,
277+
df2_right,
278+
on = '이름',
279+
how = 'left' # left에 위치한 df1이 기준이 된다. 기준이 된 데이터프레임은 데이터의 삭제가 일어나지 않음..!!!!!
280+
)
281+
282+
pd.merge(
283+
df1,
284+
df2_right,
285+
on = "이름",
286+
how = 'right' # 기준이 오른쪽이 됨
287+
)
288+
```
289+
### inner
290+
- `inner` : 두 데이터 프레임에 **모두** 키값이 존재하는 경우 병합
291+
292+
```python
293+
pd.merge(df1_left, df2_right, on='이름', how="inner") # 왼,오 데이터프레임에 모두 키값(이름)이 존재하는 것만 병합!
294+
```
295+
296+
### outer
297+
- `outer` : 하나의 데이터 프레임에 키값이 존재하는 경우 모두 병합
298+
- 없는 값은 NaN값으로 대입
299+
300+
```python
301+
pd.merge(df1_left, df2_right, on="이름", how="outer") # 한 쪽만 키값(이름)이 있어도 생성되고, 없는 값은 Nan값 처리
302+
```

0 commit comments

Comments
 (0)