# 중복 데이터 확인
df.duplicated(subset = ['컬럼1', '컬럼2', '컬럼3'])
# 중복 데이터 제거
df.drop_duplicates(subset = ['컬럼1', '컬럼2', '컬럼3'])
# 이상치 처리하는 방법
# IQR 계산
Q1 = df['컬럼1'].quantile(0.25)
Q3 = df['컬럼1'].quantile(0.75)
IQR = Q3 - Q1
# 이상치 기준 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 이상치 제거
df[(df['컬럼1'] >= lower_bound) & (df['컬럼1'] <= upper_bound)]
# 특정 컬럼 1개 가져오기
1. 속성 사용
df.Category
2. [] 연산자 사용
df['Category']
3. iloc 사용
df.iloc[:, 4]
# ':'은 모든 행을 가져오겠다는 의미, 인덱스 4번 컬럼을 가져온다는 의미
# 특정 컬럼 여러개 가져오기
1. [[]] 연산자 사용
df[['Category', 'Selling Price']]
2. iloc 사용
df.iloc[:, [3, 6]]
3. loc 사용
df.loc['행이름', ['컬럼명1', '컬럼명2']] # 2개 컬럼명 선택
df.loc[['행이름1', '행이름2'], '컬럼명1'] # 2개 행이름 선택
df.loc['행이름1', '컬럼명1':] # 컬럼명1부터 끝까지 선택
# 특정 데이터 선택하기
# 행과 열 번호로 특정 데이터 선택
df.iloc[0, 3]
# 이름으로 특정 데이터 선택
df.loc['행이름', '컬럼명']
# 특정 컬럼 버리기
# axis = 0은 인덱스 기준, axis = 1은 컬럼 기준 삭제를 의미
# inplace = True는 원본을 변경하겠다는 의미
df4.drop('Interaction type', axis = 1, inplace = True)
# 조건에 부합하는 데이터 가져오기 1
# 조건에 만족하는 행은 정상출력, 아닌 행은 NaN으로 반환
df3.where(df3['Age'] > 30)
# 조건에 부합하는 데이터 가져오기 2
# true, false의 개념이 아닌 조건에 부합하는 데이터만 슬라이싱하여 가져오기
# mask 메서드로 불림
mask = ((df2['Age] > 30) % (df2['Gender] == 'Male'))
df2[mask]
# 데이터 그룹 - 기준 1개
df.groupby('Gender')['Customer_id'].count()
# 데이터 그룹 - 기준 여러개
df.groupby(['Gender', 'location'])['Customer_id'].count()
# 데이터 count와 nunique(distinct, 중복제거) 차이
df.groupby('Location')['Age'].count()
df.groupby('Locarion')['Age'].nunique()
# 데이터가 가지고 있는 특정 컬럼명을 기준으로 인덱스를 설정하기
data = df.set_index('columns name')
# 불러올 때 인덱스 지정하기
pd.read_csv('./data/file.csv', index_col = 'columns name')
# 불러올 때 0부터 시작
pd.read_csv('./data/file.csv', index_col = 0)