상세 컨텐츠

본문 제목

2024.07.03 / Pandas - kaggle 데이터 사용하기. / 문제 분석 (3)

경험 리뷰/한국경제 with Tossbank

by shok11 2024. 7. 4. 09:46

본문

728x90
반응형

 

 

[K-Digital Training] 한국경제신문 with toss bank

 

 

 

 

import pandas as pd 
#pandas 라이브러리를 pd라는 이름으로 불러와요.
#pandas는 데이터를 분석하고 조작하는 데 사용되는 강력한 라이브러리에요.

train = pd.read_csv("kaggle/train/train.csv")
#pd.read_csv() 함수는 CSV 파일을 읽어와서 데이터 프레임으로 변환해요.
    #CSV는 "Comma-Separated Values"의 약자로, 데이터 값을 쉼표(,)로 구분하여 저장하는 파일 형식이에요. 이 파일 형식은 일반적으로 스프레드시트나 데이터베이스와 같은 테이블 형식의 데이터를 저장하고 교환하는 데 사용되요.
#"kaggle/train/train.csv"는 읽어올 CSV 파일의 경로에요. 이 경로에서 CSV 파일을 읽어와 train이라는 데이터 프레임에 저장해요.

train.head()
#train.head() 함수는 데이터 프레임의 처음 5개 행을 출력해요.

 

 

# Age_Group 열 추가
train['Age_Group'] = train['Age'].apply(lambda x: 'Young' if x <= 30 else ('Middle-Aged' if x <= 50 else 'Senior'))

#train['Age']는 'Age' 열의 모든 값을 가져와요.
    #train'은 데이터 프레임 객체
    
    #데이터 확인
        #train.head(): 데이터 프레임의 첫 몇 행을 확인해요.
        #train.tail(): 데이터 프레임의 마지막 몇 행을 확인해요.
        #train.info(): 데이터 프레임의 전체적인 정보를 확인해요. 열의 이름, 데이터 타입, 결측값 개수 등을 보여줘요.
        #train.describe(): 숫자형 데이터의 기초 통계량(평균, 표준편차, 최소값, 최대값 등)을 확인해요.
    
    #데이터 선택
        #train['ColumnName']: 특정 열을 선택해요. 예를 들어, train['Age']는 'Age' 열의 데이터를 가져와요.
        #train[['Column1', 'Column2']]: 여러 열을 선택해요. 예를 들어, train[['Age', 'Fare']]는 'Age'와 'Fare' 열의 데이터를 가져와요.
        #train.iloc[row_index]: 특정 행을 선택해요. 예를 들어, train.iloc[0]는 첫 번째 행의 데이터를 가져와요.
        #train.loc[row_index, 'ColumnName']: 특정 행과 열을 선택해요. 예를 들어, train.loc[0, 'Age']는 첫 번째 행의 'Age' 값을 가져와요.
    
    #데이터 필터링
        #조건을 사용해 데이터를 필터링 train[train['Age'] > 30]는 'Age'가 30보다 큰 행을 모두 가져와요.
    
    #데이터 변형 :새로운 열을 추가하거나 기존 열을 변경할 수 있어요.
        #train['NewColumn'] = value: 새로운 열을 추가해. 예를 들어, train['Age_Group'] = train['Age'].apply(lambda x: 'Young' if x <= 30 else 'Old')는 'Age_Group'이라는 새로운 열을 추가해요.


#apply 함수는 각 값을 순서대로 처리하는 데 사용해요.
#lambda x: 'Young' if x <= 30 else ('Middle-Aged' if x <= 50 else 'Senior')는 익명 함수로, 각 나이 값에 대해 다음과 같이 분류해요:
#나이가 30 이하이면 'Young'
#나이가 31에서 50 사이이면 'Middle-Aged'
#나이가 51 이상이면 'Senior'
#결과적으로 새로운 열 'Age_Group'이 추가돼요.

# 데이터 프레임 출력하기
train.head()

 

 

train.groupby('Gender')['Annual_Premium'].mean()

#train.groupby('Gender'): groupby 메서드는 데이터 프레임을 특정 열(Gender)을 기준으로 그룹화해. 이 경우, 'Gender' 열의 값에 따라 데이터가 그룹으로 나뉘어져요.

#['Annual_Premium']: 그룹화된 데이터 프레임에서 'Annual_Premium' 열을 선택해. 이 단계에서는 'Annual_Premium' 열의 값만 사용하게 되요.

#.mean(): 각 그룹별로 'Annual_Premium' 열의 평균 값을 계산해요. 결과는 각 'Gender' 값에 대한 'Annual_Premium'의 평균 값을 포함하는 시리즈(Series) 형태로 반환되요.


#groupby 메서드를 사용하면 데이터 프레임을 지정한 열(가로)을 기준으로 그룹화할 수 있어요. 여기서는 'Gender' 열(가로)을 기준으로 그룹화했어요.
#['Annual_Premium']로 특정 열을 선택하고, mean() 메서드를 사용하여 각 그룹의 평균 값을 계산했어요.
#결과는 각 그룹('Male', 'Female')에 대한 'Annual_Premium' 열의 평균 값을 보여줘요.

 

 

train.loc[(train['Gender'] == 'Male') & (train['Previously_Insured'] == 0) & (train['Vehicle_Age'] == '< 1 Year'), :].reset_index(drop=True)

#loc는 조건에 맞는 행들을 선택하고, 모든 열을 선택(:)해요.
#여기서 loc은 조건을 만족하는 행들만을 포함하는 새로운 데이터 프레임을 반환해요.

#train['Gender'] == 'Male': 'Gender' 열의 값이 'Male'인 행들을 선택해요.
#train['Previously_Insured'] == 0: 'Previously_Insured' 열의 값이 0인 행들을 선택해요.
#train['Vehicle_Age'] == '< 1 Year': 'Vehicle_Age' 열의 값이 '< 1 Year'인 행들을 선택해요.
#& and

#drop=True는 기존 인덱스를 버리고 새로운 인덱스를 생성하는 옵션이에요.

 

 

 

train.loc[train['Policy_Sales_Channel'].isin([7.0, 152.0]), :].reset_index(drop=True)

#train['Policy_Sales_Channel'].isin([7.0, 152.0])
    #train['Policy_Sales_Channel']: 'Policy_Sales_Channel' 열의 모든 값을 선택해요.
    #.isin([7.0, 152.0]): 'Policy_Sales_Channel' 열의 값이 7.0 또는 152.0인 행들을 선택해요.

#train.loc[train['Policy_Sales_Channel'].isin([7.0, 152.0]), :]
    #loc는 조건에 맞는 행들을 선택 / :는 모든 열을 선택하라는 의미. 즉, 행 조건에 맞는 모든 열을 선택
    #여기서 loc은 조건을 만족하는 행들만을 포함하는 새로운 데이터 프레임을 반환해요.

 

 

# 계층 샘플링 수행
    #train.groupby('Response')로 'Response' 값을 기준으로 그룹화해요.
        #apply(lambda x: x.sample(frac=0.001))로 각 그룹에서 0.1%의 데이터를 무작위로 샘플링해요.
        #.reset_index(drop=True)로 인덱스를 재설정해요.

stratified_sample = train.groupby('Response').apply(
    lambda x: x.sample(frac=0.001)
)

# 샘플링된 데이터 저장
        #stratified_sample 데이터 프레임을 "kaggle_test.csv" 파일로 저장해요.
        #index=False는 인덱스를 파일에 포함하지 않도록 설정해요.
stratified_sample.to_csv("kaggle_test.csv", index=False)

print(stratified_sample)

#train 데이터 프레임에서 각 그룹(Response 값)에 대해 계층 샘플링을 수행한 후, 샘플링된 데이터를 CSV 파일로 저장하는 작업을 수행
728x90
반응형

관련글 더보기