본문 바로가기

Pandas/전처리

(22)
판다스 - Excel(csv) 읽어올 때 콤마(,)있는 컬럼을 정수형으로 읽어오기 : thousands 데이터 불러오기 위 데이터프레임의 price 컬럼은 천 단위에 콤마(,)가 있다. 우선 dtypes로 확인해보면 모두 문자열로 구성되어 있다. 이렇게 되면 숫자 연산이 불가능하기에 price나 deliver_fee는 정수형으로 바꿔줘야 한다. 보통은 apply를 이용한 다음 컬럼을 추가한다. 보통의 작업 apply를 이용해 콤마(,) 없애고 정수형으로 변환 원하는 위치에 컬럼 추가 새로 추가한 컬럼은 정수형으로 잘 되었다. 그러나 이 작업은 다소 귀찮고 컬럼이 새로 추가되는 번거로움이 있다. 이를 해결하기 위해 read_csv / read_excel 등에선 thousands 옵션을 제공한다. thousands 옵션을 이용해서 데이터를 다시 불러오자 부가적인 작업없이 천 단위 구분자(,)가 포함된 컬럼을 ..
판다스 - 누락데이터 처리 : interpolate interpolate 메서드는 누락값 양쪽에 있는 값을 이용해 중간값을 구한 다음 누락값을 그 중간값으로 처리 데이터프레임이 일정한 간격을 유지하고 있는 것처럼 수정 가능 데이터 불러오기 에볼라 바이러스의 데이터 일부를 변경하여 가져왔다. 중간에 누락값이 있기 때문에 이를 시각화하면 위처럼 중간에 값이 끊겨있음을 확인할 수 있다. 이때 사용하는 것이 interplolate다. Guinea열의 12월 27일 값을 보면 원래는 누락값이었지만 2769와 2730의 합을 해서 2로 나눈 값인 2749.5가 나왔다. 이제 다시 eb_filled로 시각화를 해보면 잘 연결된 것처럼 수정할 수 있게 됐다.
판다스 - 원핫인코딩 : get_dummies 범주형 데이터는 연산이 어렵기 때문에 숫자형으로 처리 가능하게 바꿔주는 것 범주형 데이터의 각 범주(category)를 컬럼 레벨로 변경 해당 범주에 해당하면 1로, 아니면 0으로 채우는 인코딩 기법 pd.get_dummies(데이터프레임, columns=[컬럼명, ...,]) 데이터 불러오기 위 데이터프레임에서 Pclass와 성별 컬럼을 원핫인코딩을 해보자 1. Pclass 우선 Pclass에는 1, 2, 3의 값만 있다. 즉 3개의 컬럼이 추가될 것이고, 해당 값이 있는 행에는 1을 넣어준다. pd.get_dummies를 이용하니 기존의 Pclass 컬럼은 사라졌다. 0번행은 Pclass가 3이었으니 Pclass_3 컬럼에만 1이 있고 Pclass_2, Pclass_1 컬럼에는 0만 있다. drop_..
판다스 - 나이를 나이대로 범주화(카테고리화)하기 https://steadiness-193.tistory.com/96 판다스 - 누락데이터를 그룹별로 대체하여 컬럼 만들기 (insert, groupby, transform, fillna) 데이터 불러오기 타이타닉의 train 데이터셋을 받아왔다. https://steadiness-193.tistory.com/14 판다스 - 누락 데이터 확인(isnull(), count_nonzero()) 타이타닉 데이터 불러오기 deck 컬럼의 경우 전체 891개.. steadiness-193.tistory.com 위 포스팅에서 나이 컬럼의 누락데이터를 Survived와 성별로 그룹화한 평균값으로 대체했다. 위 데이터를 불러와서 범주화를 진행해보자 전체 데이터 이제 이 train 데이터프레임에서 Age_filled를 이..
판다스 - 컬럼(열 or 변수)간 상관계수 : corr corr함수를 통해 상관계수 연산 (-1, 1 사이의 결과) ㅇ 변수와 상관관계 : 변수간 흐름이 얼마나 비슷한가를 나타내는 척도 - a가 증가하면 b도 증가하냐/감소하냐 - 증가의 성향이 얼마나 비슷한가 ㅇ 1에 가까울 수록 두개가 비슷하게 증가 ㅇ -1에 가까울 수록 하나 증가/ 하나 감소 ㅇ 0에 가까울수록 두개간 관계가 없다 ㅇ 연속성(숫자형)데이터에 대해서만 연산 ㅇ 인과관계를 의미할 수도 아닐 수도 있음 데이터 불러오기 correlation을 뜻하는 corr함수를 이용하면 각 컬럼간의 양상을 확인할 수 있다. 당연하게도 우측하향 대각선은 1의 값을 가진다. 이를 숫자로만 보면 파악하기 어려우니 시각화를 해보자 1. plt.matshow() matplotlib.pyplot을 이용해서 아주 간단하..
판다스 - 특잇값(outlier) 찾아내기 : Tukey Fences, Z-score https://steadiness-193.tistory.com/68 판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만 때로는 제외하고 처리해야할 때가 많다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요�� steadiness-193.tistory.com https://steadiness-193.tistory.com/69 판다스 - 특잇값(outlier) 처리하기2 https://steadiness-193.tistory.com/68 판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만..
판다스 - 원핫인코딩 (One-Hot Encoding) https://steadiness-193.tistory.com/19 판다스 - 구간 분할(pd.cut) 데이터 불러오기 horsepower를 3구간으로 저출력 / 보통출력 / 고출력 나누고자 한다. 이때 pd.cut을 이용하는데 (데이터배열, 구간, 레이블이름, 경계 포함) 중 데이터배열과 구간은 필수 입력이다. in steadiness-193.tistory.com 위 포스팅에서 사용한 get_dummies 와 비슷하다. 문제의 데이터를 살펴보자 장르 컬럼에 2개 이상의 값이 같이 있는 행도 있다. 최종 목표는 이렇게 만드는 것이다. 장르별 컬럼을 다 만들고 해당 장르에 속한다면 1을, 아니라면 0을 넣는 것이다. 1. 모든 장르 찾기 extend를 이용해 all_genres 리스트에 모든 장르 데이터를..
판다스 - 특잇값(outlier) 처리하기2 https://steadiness-193.tistory.com/68 판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만 때로는 제외하고 처리해야할 때가 많다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요�� steadiness-193.tistory.com 위 포스팅의 방법을 이용하되 평균값으로 특잇값을 처리하는 것이 다르다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요약본 살펴보기 이 데이터도 평균값은 매우 작은데 최소값과 최대값의 절댓값이 3을 초과하는 데이터가 있다. 처리2. 컬럼별 평균값으로 대체하기 평..