[데이터 분석] Pandas Cheeting Sheet : 데이터(DataFrame) 전처리

2024. 4. 19. 14:12·AI/데이터 전처리
반응형

필자가 전처리하다가 함수 몰라서 구글링 했으면 여기에 추가함

DataFrame 입출력

# CSV 파일 읽기
df = pd.read_csv('file.csv')

# Excel 파일 읽기
df = pd.read_excel('file.xlsx')

# CSV 파일로 저장
df.to_csv('output.csv', index=False)  # index를 False로 설정하여 인덱스를 저장하지 않음

# Excel 파일로 저장
df.to_excel('example.xlsx', index=False)  # index=False를 설정하여 인덱스를 저장하지 않습니다.

열 순서 바꾸기

# 예제 DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)

# 새로운 열 순서를 지정
new_columns_order = ['City', 'Age', 'Name']

# 열 순서를 변경
df_reordered = df[new_columns_order]

열 이름 바꾸기 rename()

# 예제 DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)

# 열 이름을 바꾸기 위한 매핑 딕셔너리 생성
# 매핑 형태는 {"바꾸기 전 이름" : "바꿀 이름"}
column_name_mapping = {'Name': 'Full Name', 'Age': 'Years Old', 'City': 'Residence'}

# 열 이름 바꾸기
df_renamed = df.rename(columns=column_name_mapping)

데이터 타입 바꾸기 (astype)

# 데이터 프레임 전체를 정수형으로 변경
df = df.astype(int)

# 열 'C'의 데이터 타입을 정수형으로 변경
df['C'] = df['C'].astype(int)

Index 관리

# '행이름' 열을 인덱스로 설정
df.set_index('행이름', inplace=True)

# 인덱스 초기화
df.reset_index(inplace=True)

# 인덱스 재설정: 기존 인덱스를 새로운 열로 추가하지 않음
# drop = False : 기존 인덱스를 새로운 열로 추가
df.reset_index(drop=True, inplace=True)

데이터 합치기 (merge(), join(), concat())

merge(): 두 DataFrame의 열을 기준으로 결합
join(): 두 DataFrame의 인덱스를 기준으로 결합

concat() : 두 DataFrame을 수평, 수직으로 결합 (행 합치기)

 

merge()

※ 주의 : 기준열(on 파라미터값)이외의 열 이름이 같을 경우 오류가 발생할 수 있음

# 예제 데이터 생성
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

# merge를 사용하여 두 DataFrame 합치기
# key: 결합할 때 사용할 기준열
# how: merge 방식 [inner(교집합), outer(합집합), left(df1/왼쪽), right(df2/오른쪽)]
merged_df = pd.merge(df1, df2, on='key', how='inner')

 

join()

# 예제 데이터 생성
df1 = pd.DataFrame({'value1': [1, 2, 3, 4]}, index=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame({'value2': [5, 6, 7, 8]}, index=['B', 'D', 'E', 'F'])

# join을 사용하여 두 DataFrame 합치기
joined_df = df1.join(df2, how='inner')

concat() 수평으로 결합 (열 추가)

# 예제 DataFrame 생성
data1 = {'A': [1, 2, 3],
         'B': ['a', 'b', 'c']}
data2 = {'C': [4, 5, 6],
         'D': ['d', 'e', 'f']}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# concat() 함수를 사용하여 DataFrame 수평 결합
concatenated_df = pd.concat([df1, df2], axis=1)

concat() 수직으로 결합 (행 추가)

# 예제 DataFrame 생성
data1 = {'A': [1, 2, 3],
         'B': ['a', 'b', 'c']}
data2 = {'C': [4, 5, 6],
         'D': ['d', 'e', 'f']}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# concat() 함수를 사용하여 DataFrame 수평 결합
concatenated_df = pd.concat([df1, df2], axis=0)

행 중복제거 (drop_duplicates)

# 중복된 행 제거
df_no_duplicates = df.drop_duplicates()

 


특정 데이터만 선택하기

특정 열의 데이터 값의 크기를 비교하여 특정 값만 뽑는 방법

# 예제 DataFrame 생성
data = {'행이름': ['A', 'B', 'C', 'D', 'E'],
        '값': [10, 20, 30, 40, 50]}

df = pd.DataFrame(data)

# '값' 열의 값이 20과 40 사이인 행 선택

# between() 사용
df_filtered = df[df['값'].between(20, 40)]

# 연산자 사용
df_filtered = df[(df['값'] > 20) & (df['값'] < 40 )]

데이터 그룹화 groupby()

특정 열의 데이터 값의 크기를 비교하여 특정 값만 뽑는 방법

# 예제 데이터 생성
data = {'학과': ['컴퓨터공학', '경영학', '컴퓨터공학', '경영학', '컴퓨터공학'],
        '학년': [3, 2, 4, 3, 2],
        '성적': [85, 90, 88, 75, 92]}

df = pd.DataFrame(data)

# '학과'와 '학년'을 기준으로 데이터 그룹화
grouped = df.groupby(['학과', '학년'])

# 각 그룹에 대한 평균 성적 계산
average_score = grouped['성적'].mean()

# 그룹화된 데이터프레임의 인덱스 초기화
# 초기화 안해주면 형태가 이상하게 나옴
average_score = average_score.reset_index()

가변수화 get_dummies()

# 예제 DataFrame 생성
data = {'행이름': ['A', 'B', 'C', 'A', 'B'],
        '값': [1, 2, 3, 4, 5]}

df1 = pd.DataFrame(data)

# 더미 변수화
df = pd.get_dummies(df1, columns=["행이름"], drop_first=True, dtype=int)

 

get_dummies()의 함수 파라미터들

 

파라미터 설명
data 변환할 DataFrame
columns 더미 변수로 변환할 열(들)의 이름 또는 인덱스
prefix 더미 변수의 열 이름에 추가할 접두사
prefix_sep 더미 변수의 열 이름과 접두사 사이에 추가할 구분자
drop_first 첫 번째 더미 변수를 삭제할지 여부
dtype 생성된 더미 변수의 데이터 타입
dummy_na NaN(결측치)을 더미 변수로 처리할지 여부

수치형 데이터를 범주형 데이터로 바꾸기 (구간 나누어 레이블 할당) cut()

# 예제 DataFrame 생성
data = {'행이름': [1, 3, 5, 7, 9]}
df = pd.DataFrame(data)

# pd.cut() 함수를 사용하여 데이터를 구간별로 나누고 레이블을 할당
df["구간"] = pd.cut(df["행이름"], bins=[-np.inf, 3, 6, np.inf], labels=["레이블1", "레이블2", "레이블3"])
반응형
저작자표시 비영리 변경금지

'AI > 데이터 전처리' 카테고리의 다른 글

5. 데이터 전처리의 모든 것 : 결측치 처리 (확인, 제거, 대체)  (1) 2024.04.18
5. 데이터 전처리의 모든 것 : DataFrame 파일 입출력  (1) 2024.04.18
1. CRISP으로 둘러보는 데이터 분석  (0) 2024.04.17
'AI/데이터 전처리' 카테고리의 다른 글
  • 5. 데이터 전처리의 모든 것 : 결측치 처리 (확인, 제거, 대체)
  • 5. 데이터 전처리의 모든 것 : DataFrame 파일 입출력
  • 1. CRISP으로 둘러보는 데이터 분석
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (54) N
      • AI (11) N
        • 데이터 전처리 (4)
        • 머신러닝 (2) N
        • 딥러닝 (0)
        • (PJT)음성 화자 분류 (4)
      • SW (37)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    반도체 물성
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    반도체 소자 공학
    면접을 위한 cs전공지식 노트
    홉바이홉통신
    c언어 입출력
    ios7계층
    LAN
    c io
    CS지식
    보고서 수식
    반도체 공학
    word 수식
    정리본
    요약본
    ESG
    홉바이홉
    파일입출력 #DataFrame불러오기
    MySQL
    메시지큐
    면접을 위한 CS 전공지식 노트
    운영체제
    os구조
    입출력관리
    페이징 기법
    CRISP #CRISP-DM #데이터마이닝 #데이터분석 #데이터 #머신러닝 #딥러닝 #데이터전처리
    공백포함입력받기
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    전공 지식
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
[데이터 분석] Pandas Cheeting Sheet : 데이터(DataFrame) 전처리
상단으로

티스토리툴바