판다스 전처리 기초

우선 np.inf, np.nan, None 등의 값이 판다스 라이브러리에 들어가 있어서 이해하는데 시간이 들었다.

내가 이해한 바에 따르면 inf 는 무한대의 숫자. 정의할 수 없는 숫자이며

NaN 은 0도 아니고 어떠한 연산을 할 수 없는 숫자

엄밀히 말하면 어찌 되었든 간에 연산을 하지 못하니까 의미가 없는 숫자가 아닐까 생각한다

실제로도 다음 코드를 보면, 1차원 배열로 되어 있기 때문에 4개의 데이터가 나오고, 2번째 데이터는 결측치이기 때문에 isnull로 표현하면 True를 반환한다

두 번째 데이터프래임을 만들고, 결측치를 없애기 위해서 data.dropna() 를 썼다

그러면 null 값이 없어진다

데이터프래임을 만들고, 그 안에 3번째 열의 모두 np.nan 하면 값이 모두 사라진다

그다음은 randn 과 iloc 실습이다

랜덤하게 8 *4 행렬을 생성한다

그다음에 iloc 메서드를 사용해 보자

이걸 보면, iloc의 특징을 알 수 있다. iloc[A:B,C] 이런 식으로 구성이 되는데,

A:B에는 몇 번째 행이 들어갈 것인가를 정해준다. 0:3 이면 총 3개의 행이 해당하는 것이다

그럼 몇 번째 열일까? 그건 다음에 나온다

그런데 왜 쉼표가 아닐까? :로 표현하는 건 그렇게 정해졌기 때문이다

우린 이걸 잘 쓰면 되는 것이다

그리고 그 뒤에 쉼표 찍고 나오는 건 어떤 열을 지정해 주는 것이다

그래서 위에 iloc[:3,1]

의미를 해부해 보면, 앞에 0이 생략되었으니, 0,1,2 행을 지정해 줬다 우선

그다음에 1번 열을 지정해 줬다. [2번째 열]

그렇게 생각하면 편하다

그 값을 Nan 값으로 바꿔줬다.

그다음을 보자. 우선 위의 식에 의해서 1열의 값 중 3개를 NaN 값으로 치환해 주었다.

그다음에 총 5개 행을 대상으로 하여 3번째 열을 Nan 값으로 또 치환해 주었다.

그다음에 dropna() 의 메서드를 살펴보자

결측치가 있으면 행을 통째로 날려버리는 함수이다.

그다음에는 thresh =2 이 말은 관측치가 2개 이상 있으면 살려주리는 의미이다

fillna() 뜻은 빈칸을 뭘로 채워주라는 말이다. 여기에선 0으로 채워주었다

fillna() 2번째 열을 0.5로 채워주라. 그리고 3번째 열을 0으로 채워주라 그런 말이다

열을 기준으로 보면 된다.

하지만 다시 원상 복귀되었다

중요하다. fillna 를 쓰는 데 있어서 2번째 열을 나머지 값을 평균 내어 결측지 값에 적용을 해주고

3번째 열 또한 마찬가지이다

결측치 중에서 2개 값면 채워주라. 왜? 너무 많이 채우면 데이터가 왜곡되기 때문이 아닐까 싶다

다음 실습을 위해서 DF를 하나 만들어보았다

이런 데이터프래임을 만들 때 주의해야 할 점은 {} 이나 [] () 을 잘 써줘야 에러가 안 난다.

에러 나면 이유를 모른다....

duplicated() 메서드를 써주면 중복 값을 찾아준다

중복 값이란 첫 번째 행과 두 번째 행 모두의 동일 값을 때를 의미한다

그리고 중복 값을 삭제해 주라고 명령을 내렸더니 마지막 행만 제거되었다.

range() 값으로 값을 지정해 준 다음, k1, k2 값 중에서 중복 값을 삭제해 주는 모습이다

다음 실습이다

우선 처음엔 데이터프래임 만들어주고 평점을 만들어준다

# 해당 육류가 어떤 동물의 고기인지 알려줄 수 있느 칼럼을 추가한다고 가정하고 육류별 동물을 담고 있는 사전 데이터를 만들자

우선은 모두 소문자로 바뀌어에 mapping이 가능하다

그래서 소문자로 바꾼 다음에 lowcased.map 메서드를 활용하면 data 안에 데이터가 들어간다

마지막으로 replace 메서드를 활용했다.

딕셔너리 방식 {} 도 있고 리스트 방식 [] 도 있다. 편한 방식으로 하면 되겠다

네이버 블로그 원문 보기