데이터 전처리&시각화

seonyoung·2024년 7월 17일
0

📁 데이터 저장 (to_csv)

data.to_csv("tips_data.csv")

-> 이를 통해 데이터 저장 가능

📁 데이터 불러오기 (read)

data.to_csv("tips_data.csv")
df = pd.read_csv("tips_data.csv")
df

-> 별도 인덱스에 대해 설정하지 않으면 'Unnamed:0'이 컬럼의 형태로 들어오는 경우가 존재

↓ 이 경우 index=False 사용

# index = False 경우
data.to_csv("tips_data.csv", index = False)

# index = True 경우
data.to_csv("tips_data.csv", index = True) # True는 기본 값으로 지정되어 있어 index = True를 굳이 안 적어도 됨
  • 만약 위에서 지정을 하지 못했다면 그 바로 아래에서 지정 가능
df = pd.read_csv("tips_data.csv", index_col = 0)

📁 파일 생성 후 파일 경로 지정 방법

  • 위에서 불러왔던 데이터에 파일명/를 붙여주면 됨
df.to_csv("temp/tips_data.csv", index = False)

📁 엑셀(excel) 파일로 지정 방법

  • csv가 아닌 그 위치에 excel로 변경
df.to_excel("temp/tips_data.xlsx", index = False)

📁 인덱스

df = pd.DataFrame({
    'A' : [1, 2, 3],
    'B' : ['a', 'b', 'c']
})
df

-- 출력

AB
01a
12b
23c
df = pd.DataFrame({
    'A' : [1, 2, 3],
    'B' : ['a', 'b', 'c']
}, index = ['idx1', 'idx2', 'idx3'])
df

-- 출력

AB
idx11a
idx22b
idx33c

-> 문자형 형태로 변경

  • sort
df.sort_index()

-> 정렬 가능

  • set
df.set_index()

-> 인덱스 다시 지정(A라는 컬럼으로 인덱스를 쓰겠다)

  • df.index
df.index

-> 값이 어떻게 이루어져 있고, 타입은 무엇인지 확인 가능

df.index = ['1', '2', '3']
df

-> 인덱스 변경 가능

  • 리셋 인덱스
df.reset_index()

-> 기존 값으로 만든 것

df.reset_index(drop = True)

-> 원래의 정수 값의 인덱스로 바뀜

📁 컬럼

  • data 만들기
data = {
      'name' : ['Alice', 'Bob', 'Charlie'],
      'age' : [25, 30, 35],
      'gender' : ['Female', 'male', 'male']
      }

-- 출력

nameagegender
0Alice25Female
1Bob30male
2Charlie35male
  • 컬럼 만지기
df = pd.DataFrame(data)
df
df['name']

-> [ ]안에 컬럼명을 넣으면 해당 데이터를 불러올 수 있음

  • columns
df.columns

-> 이름이 어떻게 되어있는지, 어떻게 구성되어 있는지 알 수 있음

  • 이름 변경
df.columns = ['이름', '나이', '성별']

-> 이름 변경 가능

  • 컬럼명 변경
df = df.rename[columns = {'이름' : 'name'}]
df

-> 컬럼명 변경 가능

  • 컬럼 추가
df['스포츠'] = '축구'

-> 컬럼 추가 가능

  • 컬럼 삭제
del df['스포츠']

-> 컬럼 삭제 가능

📁 데이터 확인

  • head()
df.head()

-> 데이터를 짧게(간결하게) 보고 싶을 때 사용
-> ()안에 숫자 입력시 숫자만큼 행을 가져오게 됨

  • info()
df.info()

-> 데이터 프레임의 정보 확인 가능
ex) 데이터 타입, 컬럼의 null 값, type 등

  • describe()
df.describe()

-> count, sum, min, max 등 기초 통계량 확인 가능 메서드
-> 숫자 타입을 가진 컬럼값들만 기초 통계량 확인 가능

  • 결측치(NaN) 확인
df = pd.DataFrame({
    'A' : [1, 2, 3, 4],
    'B' : [5, 6, 7, none]
})
df
  • isna()
df.isna()

-> True, False 값으로 표시되며, True로 표시된 곳이 null 값임

  • info()
df.info()

-> non-null 카운트 : null 값이 아닌 값이 몇개 있는지 알 수 있음

📁 데이터 타입

  • 데이터 타입 확인
df['total_bill'].dtype

-> 해당 컬림이 무슨 타입인지 알 수 있음

  • 데이터 타입 변경
df[total_bill'] = df['total_bill'].astype(str)

df[total_bill'] = df['total_bill'].astype(float).astype(int)

-> 기존 값을 int로 바꾸고 싶을 때 바로 int로 바꾸면 소수점으로 되어 있던 숫자들이 str로는 확인이 어려워 float(변경하면 소수점들을 온전히 숫자로 인식 가능)으로 변경 후 int로 변경 가능

📁 iloc(번호를 통해 특정 행과 열을 선택하는 것)

  • 기본
index.컬럼정보

(우선 데이터 만들기)

df = pd.DataFrame({
    'A' : [1, 2, 3, 4, 5],
    'B' : [10, 20, 30, 40, 50],
    'C' : [100, 200, 300, 400, 500]
})
df
  • 원하는 행을 보고 싶을 때
df.iloc[0]

-> []안에 원하는 행의 번호를 적으면 됨
ex) 0은 첫 번째 행을 뜻함

  • 처음/끝
    df.iloc[0:2]
    -> 첫 번째에서 두 번째까지 보고 싶을 때

  • 처음/끝/간격

df.iloc[0:5:2]

-> 첫 번째부터 다섯 번째까지 2개씩 건너띄어서 보고 싶을 때

📁 loc(특정문자를 활용해서 해당 이름을 선택 후 데이터를 불러오는 것)

(우선 데이터 만들기)

df = pd.DataFrame({
    'A' : [1, 2, 3, 4, 5],
    'B' : [10, 20, 30, 40, 50],
    'C' : [100, 200, 300, 400, 500]
}, index = ['a', 'b', 'c', 'd', 'e'])
df
  • 원하는 컬럼만 가져오고 싶을 때
df.loc[:, 'A']

-> 첫 번째 컬럼만 가져오고 싶을 때

  • 원하는 컬럼을 특정해서 가져오고 싶을 때
df.loc['b':'d', 'A']

-> 첫 번째 컬럼만 b부터 d까지 가져오고 싶을 때

💡 iloc와 loc의 차이점

  • iloc는 파이썬(python)과 똑같이 컬럼 번호로 불러오며, 첫 번째가 0부터 시작함
  • loc는 컬럼 이름으로 불러오며, 문자 그대로 b부터 d까지 불러오는 것을 말함
profile
원하는 바를 이루고 싶은 사람입니다.

0개의 댓글