[CodesSates] AI 부트캠프

Data Manipulation

웅탈 2021. 3. 9. 00:06

Data Manipulation

 

첫번째 row가 columns인 경우
new_header = df.iloc[0] # grab the first row for the header
df = df[1:] # take the data less the header row
df.columns = new_header # set the header row as the df header

 

pd.merge() : DataFrame 결합

 

Ex) pd.merge(df1,df2, how = '(방법)', on = 'year')



- how = 'left' : 왼쪽에 있는 df1의 'year'을 기준으로 합치기

- how = 'right' : 오른쪽에 있는 df2의 'year'을 기준으로 합치기

- how = 'inner' : 중복된 데이터의 행만 합치기

- how = 'outer' : 기준 columns 'year'을 기준으로 중복 여부 상관 없이 합치기

 

pd.melt() : wide --> tidy, 데이터 재구조

 

pd.melt(id_vars = 'index', value_vars = '기준 columns', var_name = , value_name = )

 

df.at[] / df.iat[] : 패스트 인덱싱

- df['row label','columns label']

kongdols-room.tistory.com/117

 

1차원 배열 DataFrame 슬라이스

- x[start:stop:step]

 

import pandas as pd 
x = pd.DataFrame([1,2,3,4,5,6,7,8,9,10]) 

	0
0	1
1	2
2	3
3	4
4	5
5	6
6	7
7	8
8	9
9	10

print(x[:5]) # 처음부터 인덱스 4까지 (=처음부터 5개 요소)
   0
0  1
1  2
2  3
3  4
4  5

print(x[5:]) # 인덱스 5부터 끝까지
    0
5   6
6   7
7   8
8   9
9  10

print(x[4:7])# 인덱스 4부터 6까지

print(x[::2]) # 처음부터 요소를 하나씩 건너 뛴 배열 구성(= step인 2 배열 출력)
   0
0  1
2  3
4  5
6  7
8  9

print(x[1::2])# 1부터 시작해서 step이 2인 배열 
    0
1   2
3   4
5   6
7   8
9  10


# step이 음수일 떄는 start와 stop의 기본값이 서로 바뀐다.

print(x[::-1]) # 모든 요소를 거꾸로 나열
    0
9  10
8   9
7   8
6   7
5   6
4   5
3   4
2   3
1   2
0   1

print(x[9::-2]) # 인덱스 9부터 step 을 -2로 처음까지 나열
	0
9	10
7	8
5	6
3	4
1	2
2차원 배열 DataFrame 슬라이스

- x.loc[::,::] 앞에는 행(row), 뒤에는 열(column)을 대상으로 슬라이스를 수행

- x.iloc[::,::] 앞에는 행(row), 뒤에는 열(column)을 대상으로 슬라이스를 수행 ​

 

import pandas as pd 
x = pd.DataFrame([[3, 5, 2, 4], [7, 6, 8, 8], [1, 6, 7, 7]], columns=['A','B','C','D']) 

x
A	B	C	D
0	3	5	2	4
1	7	6	8	8
2	1	6	7	7

print(x.iloc[:2,:2]) # 두 개의 행, 두 개의 열
	A	B
0	3	5
1	7	6

print(x.iloc[:2,::2]) # 두 개의 행, ['A', 'C'] 열만 출력
    A	C
0	3	2
1	7	8

print(x.iloc[:2,1:4]) # 두 개의 행, 1~4 번째 열 
	B	C	D
0	5	2	4
1	6	8	8

# labeling 기반이라 :1은 1까지 포함한다.

print(x.loc[:1,:'B']) # 두 개의 행, 두 개의 열
	A	B
0	3	5
1	7	6

print(x.loc[:1,['A','B','C']]) # 두 개의 행, ['A','B' ,'C'] 열만 출력
	A	B	C
0	3	5	2
1	7	6	8
2차원 배열 DataFrame 열조회

 

- 하나의 열 조회

    x['열이름']

    x.loc[:,'열이름']

 

- 두개 이상의 열 조회

    x['열 배열']

    x.loc[:,'열 배열']

 

import pandas as pd 
x = pd.DataFrame([[3, 5, 2, 4], [7, 6, 8, 8], [1, 6, 7, 7]], columns=['A','B','C','D']) 

x
	A	B	C	D
0	3	5	2	4
1	7	6	8	8
2	1	6	7	7

# A 열 조회
print(x['A'])
print(x.loc[:,'A']) 
0    3
1    7
2    1

# B, D 열 조회
print(x[['B','D']])
print(x.loc[:,['B','D']])
	B	D
0	5	4
1	6	8
2	6	7
Top 25 Pandas Tricks

github.com/Hyun-Jun-Lee/pandas-videos/blob/master/top_25_pandas_tricks.ipynb

 

 


 

 

Top 25 Pandas Tricks , 이 내용들 익숙하게 만들면 앞으로 구글링 빈도가 매우 줄듯하다!

 

인덱싱, 슬라이싱은 몇번을 배워도 헷갈렸는데, 이번 기회에 확실하게 잡기!

'[CodesSates] AI 부트캠프' 카테고리의 다른 글

Hypothesis Test  (0) 2021.03.14
Hypothesis Test  (0) 2021.03.14
Data Visualize  (0) 2021.03.09
Feature Engineering  (0) 2021.03.05
EDA  (0) 2021.03.04