패스트캠퍼스 데이터 분석 부트캠프

[파이썬] 데이터 전처리

쓔! 2024. 3. 13. 12:13

1) 판다스 불러오기

판다스: 파이썬의 분석 라이브러리

넘파이: 파이썬의 수치자료 처리 라이브러리

import 라이브러리명 as 부를 이름

import pandas as pd

improt numpy as np

 

2) 시리즈 만들기

시리즈: pandas에서 사용하는 일종의 리스트 

인덱스: 열의 순서라고 생각하기.

 ① 딕셔너리로 시리즈 만들기

dic = { 'a' :1, 'b' : 2, 'c': 3}

dic_series = pd.Series(dic)

print(dic_series)

index value
a 1
b 2
c 3

 

② 리스트로 시리즈 만들기

ls = [1,2,3]

li_series = pd.Series(ls, index = ['a','b','c'])

print(pd.Series(ls))

index value
a 1
b 2
c 3

 

인덱스를 설정하지 않으면 a, b, c 가 아니라 0, 1, 2 으로 보임

 

 

3) 데이터 프레임 만들기

dic = { ~ 딕셔너리 내용~}

df = pd.DataFrame(dic)

 

ls = [[리스트1], [리스트2], [리스트3]

df = pd.DataFrame(ls, columms = '열이름1', '열이름2', '열이름3')

 

#딕셔너리, 리스트는 각 열과 값의 길이가 같아야만 데이터 프레임으로 만들 수 있음. 그렇지 않으면 오류가 남

 

series1 = pd.Series(~)

series2 = pd.Series(~)

series3 = pd.Series(~)

df = pd.DataFrame( { '열이름1': series1, '열이름2': series2, '열이름3': series3 } ) 

 

 

4) 외부에서 데이터 프레임 불러오기 및 저장하기 (주피터노트북)

#불러오기 (파일이 깨지면 cp949 또는 utf-8 로 인코딩)
 
import pandas as pd

data = pd.read_csv(r"파일경로(파일 오른쪽 버튼 경로로 복사)", encoding = "cp949")
 
#저장하기 (새로운 파일로 저장)
 
csv_file_path1 = '파일경로'
csv_data1.to_csv(csv_file_path1)
 

 

 

5) 데이터 프레임 상위 / 하위 행 확인하기

data.head()  #상위 행 5개 확인
data.tail()     #하위 행 5개 확인
 
data.head(10) #상위 행 10개 확인
data.tail(10)    #하위 행 10개 확인

 

 

6) 데이터 프레임의 요약정보 확인하기

data.info()
 #전체 행의 개수, 컬럼 정보, 결측치, 데이터 타입
 
data.describe()
#컬럼 별 값 개수, 평균, 표준편차, 최솟값, 최대값, 사분위수 정보 
 

 

 

7) 조건에 맞는 데이터 추출

(데이터 프레임 만들거나 불러온 후 진행)

#인덱스 기준으로
 
데이터프레임명[시작인덱스:끝인덱스+1]
df[3:7]   
#3번째 인덱스부터 6번째 인덱스까지 불러오는 것
 
#열(컬럼) 기준으로
 
데이터프레임[컬럼명]
데이터프레임.컬럼명
데이터프레임[ [컬럼명1, 컬럼명2, ...] ]
 
df['Survived'].to_frame()
#Survived 열을 데이터 프레임 형식으로 출력해라
 
#값을 기준으로
 
데이터 프레임명.loc[행조건, 열조건]
열만 조회할 때는 행조건에 : 을 입력
 
df.loc[ 3, ] => 3번째 행에 있는 열 값 모두 보임
df.loc[ 3 : 5 , ] => 3번째 행에 있는 값부터 5번째 행에 있는 값까지의 열값 모두 보임
(여기서는 3:5이라면 5를 포함함.)
df.loc[ : , 'Name' ] => 'Name'열에 있는 정보 보임
 
#위치를 기준으로
 
데이터 프레임명.iloc[행인덱스 조건, 열인덱스 조건]
 
df.iloc[3:7,] => 3부터 6번째 행에 있는 값의 모든 열을 보여줌
(여기서는 인덱스 설정하는 것처럼. 3:7이라면 6까지 포함함)
 
#특정 열을 정렬해서 기준으로 
 
데이터 프레임명.sort _values(정렬기준컬럼)
데이터 프레임명.sort_values(정렬기준컬럼, asceding=False)
 
asceding=False => 내림차순 정렬
 
df.sort_values('Age', ascending=False)
=> Age 칼럼을 기준으로 내림차순으로 정렬해서 추출하기.
 
df.sort_values(['Age','Fare'], ascending=[False,True])
=> 첫번째로는 Age기준으로 내림차순하고, 두번째로는 Fare기준으로 오름차순으로 정렬해서 추출하기
 
#특정조건 기준으로 
 
데이터프레임명[조건식]
=> print ( 데이터프레임명 [ 조건식 ] )
 
여기서 조건식은 [ 데이터프레임명 [ '기준열'] 연산자 기준 값]
df의 기준열 값이 기준 값과 동일(==)한 것을 의미
조건식 밖의 df는 그 동일한 것을 df를 참조해서 찾는다는 것 의미
 
[ df [ 'Pclass' ] == 1 ]
=> 이렇게만 적으면 조건만 설정되고 데이터 프레임 출력X
print ( df [ df [ 'Pclass' ]  == 1 ] )
=> 이렇게 적어야 출력이 됨
df[(df['Pclass'] == 1) & (df['Age'] >= 30)]
=> 조건 두개 이상도 가능
 
df[df['PassengerId'].isin([3,100,500])]
=> Passengerld 열 값이 3 또는 100또는 500에 해당하는 값만 보여주기
 
passengerid_list = list(df['PassengerId'])
passengerid_sample = random.sample(passengerid_list, 10)
df[df['PassengerId'].isin(passengerid_sample)]
샘플 값 리스트 만들어서 조건만들기도 가능
 
 
데이터프레임명.query('조건식')
 
df.query('Pclass == 1')
df.query('Pclass == 1 and Age >= 30')
 
df.query('PassengerId in [3,100,500]')
df.query('PassengerId.isin([3,100,500])')
=> Passengerld 열 값이 3 또는 100또는 500에 해당하는 값만 보여주기
 
df.query('PassengerId in @passengerid_sample')