Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

파이썬 하는 파이리

PYthon_판다스(pandas)_(3) 본문

프로그래밍/python

PYthon_판다스(pandas)_(3)

gunnwu 2023. 2. 25. 15:58

1. 데이터 변경하기

1- 1. 열삭제 

  • df.drop()메소드 사용

이전글과 마찬가지로 superstore데이터 사용

store 데이터

#열삭제
#Country,Postal Code삭제

store.drop(['Country','Postal Code'], axis=1,inplace=True) #inplace는 바로 반영한다는 뜻.
store.head()

Country,Postal Code 컬럼이 사라진걸 알 수 있다.

 

1- 2 열 이름 바꾸기

  • rename(columns={  :    })
#Segment 열이름 바꾸기 class로 
store.rename(columns={'Segment' : 'Class'},inplace=True)

store.head()

컬럼명이 Class로 바뀐 걸 알 수 있다.

※ 범주값을 숫자로 변경하기(알고만 있자) => 가변수화 사용할거니까

# 타이타닉 데이터로 Sex컬럼의 male=1, female=0 으로 변경
# 범주값이 (남,여),(yes,no)처럼 두개일땐  map함수로 가능
# 하지만 다시 독립된 열로 변경하는 과정이 필요
# 가변수화가 한번에 가능 => 가변수화 사용
# 알고만 있자

titanic['Sex'] = titanic['Sex'].map({'male': 1 , 'female':0})

 

1- 3 새로운 열 추가

  • 그냥 더하면 됨
# profit, sales 합인 ex열 추가

store['ex']=store['Profit']+store['Sales']
store.head()

실행결과

1- 4 범주값 만들기(연속값을 범주로)

  •  범주값 만들기
  •  연속값을 구간으로 나누어 표현 (이산화)
  •  cut()함수 => 크기를 기준으로 구간 나누기 범위 개수를 지정하면 자동으로 크기를 나눈다.
  • 구간마다 들어가는 개수는 다르다.
# store 크기를 기준으로 Quantity를 4구간(a ~ d)으로 나누기

store['store_grp'] = pd.cut( store['Quantity']  , 4  ,labels=list('abcd') )


# (]==> (는 포함하지 않음
store.head()

store_grp 컬럼이 생김
구간안의 개수가 다른것을 알 수 있다.

  • 경계값을 직접 지정해서도 만들 수 있다. (4분위수로 경계값 지정)
# 등급 구하기 4분위수의 경계값.

q1 = store['Quantity'].describe()['25%']
q2 = store['Quantity'].describe()['50%']
q3 = store['Quantity'].describe()['75%']

my_bin = [-np.inf, q1, q2, q3, np.inf]
my_label = ['a', 'b', 'c', 'd']

store['store_grp2'] = pd.cut(store['Quantity']   ,bins=my_bin, labels=my_label )

# 확인
store['store_grp2'].value_counts()

바로 나올 qcut()함수와 동일한 결과를 얻을 수 있다.

  • 개수를 기준으로 구간을 나누고 싶을 때 qcut() 함수를 사용.
  • 구간 개수를 지정하면 자동으로 동일한 개수를 갖는 구간이 만들어집니다.
  • 사분위수로 직접 나눈것과 동일한 결과
store['store_grp3'] = pd.qcut( store['Quantity'] ,4   ,labels=list('abcd')   )

# 확인
store.head()

grp2와 grp3의 결과가 같다

1- 5. 가변수화

  • 일정하게 정해진 범위의 값을 갖는 범주형 데이터를 독립된 열로 변환
  • 범주형 문자열 데이터를 숫자로 바꾼다(머신러닝 돌릴때 필요)
  • get_dummies()
  • 다중공선성 문제를 없애기 위해 drop_first=True 옵션을 지정
  • 다중공선성이란 ? : 독립변수들 간의 높은 선형관계가 존재하는것. 회귀분석의 전제를 위배
  • 자동으로 원본 열이 제거되고, 열 이름이 prefix로 사용

 

# 똑같이 superstore를 새롭게 선언 
df = pd.read_csv('C:\\Users\\User\\data\\SampleSuperstore.csv',encoding='CP949')

#데이터 타입을 확인해서 범주형 데이터를 선택
df.info()

#'Ship Mode','Segment' 컬럼을 가변수화
df = pd.get_dummies(df, columns=['Ship Mode','Segment'], drop_first=True)

df.head()

기존 컬럼은 사라지고 숫자로 된 컬럼이 생긴것을 알 수 있다.

 

'프로그래밍 > python' 카테고리의 다른 글

Python_ 클래스 (class)  (0) 2023.03.26
Python_판다스(pandas)_(4)  (0) 2023.02.25
Python_판다스(pandas)_(2)  (0) 2023.02.11
Python_판다스(pandas)_(1)  (0) 2023.02.11
Python_배열(numpy)  (0) 2023.02.11
Comments