본문 바로가기

Pandas

(165)
판다스 - 컬럼(열) 분리, 컬럼(열) 추가 : str.split, str.get 데이터 불러오기 연월일 컬럼을 연 / 월 / 일 세개의 컬럼으로 나눠서 보고 싶다면 방법1 : str.split() 1. 연월일 컬럼의 자료형을 object로 변환한다. 2. 판다스의 자료형과 파이썬의 문자열을 이용해 .str.split('-') 문법을 사용한다. 3. 그렇게 분할된 리스트를 시리즈로 받아낸다. 4. 그 시리즈를 .str.get()을 이용한다. 5. 0번째는 연 / 1번째는 월 / 2번째는 일 6. 이들을 새 컬럼으로 추가한다. * 주의 : 연월일, 연, 월, 일 컬럼은 object형이므로 추후 활용을 위해선 정수형으로 바꿀 필요가 있다. 방법2 : str.split(expand=True) - 사실 방법1과 유사하나 코드가 다소 간결해지는 것 뿐이다. 1. split에서 expand=Tr..
판다스 - 컬럼 순서 변경 데이터 불러오기 df.columns 데이터프레임의 컬럼을 리스트로 가져올 수 있다. df.columns.values 또한 마찬가지로 데이터프레임의 컬럼을 가져올 수 있다. sorted(리스트)를 이용해 리스트 안의 원소들을 알파벳 순으로 정렬한다. 그 정렬한 리스트를 이용해 컬럼의 순서를 바꾼 데이터프레임을 만들어 낸다. reversed reversed를 이용해 기존의 리스트 배열을 역순으로 바꾼다. 그 역순 리스트를 이용해 데이터프레임의 열의 순서를 바꾼다. 내 마음대로 바꾸기 내가 원하는 순서로 리스트를 만들고 그 리스트를 이용해 새로운 순서의 데이터프레임을 만든다.
판다스 - 데이터 정규화 데이터 불러오기 숫자 데이터의 상대적인 크기 차이를 제거할 필요가 있다. 마력과 무게의 절대값의 차가 매우 크기 때문에 (0번행의 마력 : 130, 무게 : 3504) 상대적으로 큰 숫자 값을 갖는, 무게 컬럼(변수)의 영향이 더 클 수 있다. [목적 : horsepower 컬럼 정규화] 방법1 : 해당 열의 최댓값으로 나누기 horsepower_normalization 컬럼의 값은 0부터 1까지 값을 가지게 된다. horsepower 컬럼의 최댓값은 230 0번행은 130이므로 130 / 230을 하면 0.565217이 나온다. 방법2 : 최댓값과 최솟값 이용 분자 = 값 - 최솟값 분모 = 최댓값 - 최솟값 예제의 horsepower 열의 최댓값은 230, 최솟값은 46이다. 최댓값과 최솟값의 차는 ..
판다스 - 구간 분할 : pd.cut, pd.get_dummies 데이터 불러오기 horsepower를 3구간으로 저출력 / 보통출력 / 고출력 나누고자 한다. 이때 pd.cut을 이용하는데 (데이터배열, 구간, 레이블이름, 경계 포함) 중 데이터배열과 구간은 필수 입력이다. include_lowest는 첫 경계값을 포함하는지에 대한 여부이다. 각각의 출력 빈도를 볼 수 있다. 더미 변수 - get_dummies 뒤에서 나올 원핫인코딩을 위해 get_dummies를 이용한다. 0은 False, 1은 True를 의미하며 각 행은 하나의 1값 / 2개의 0값을 가질 수 있다. 원래 0번째 행은 보통출력이었으므로 저출력과 고출력은 0, 보통출력은 1을 가진다. 이를 기존 데이터프레임의 컬럼으로 추가할 수 있다.
판다스 - 자료형 변환 : astype, pd.to_numeric 데이터 불러오기 문제가 있는 열은 total_bill로서, [1, 3, 5, 7]행은 missing이라는 문자열이 들어가 있다. 데이터 타입을 확인해도 숫자가 아닌 object형으로 되어있다. [목적 : total_bill 컬럼을 float형으로 바꾸기] astype(), pd.to_numeric() missing이라는 문자열이 있기 때문에 두 방법 모두 오류 발생 방법1 : replace 이용 missing을 NaN으로 바꾼 뒤 astype 실행 total_bill_replaced 컬럼이 float형으로 바뀐 것을 확인 방법2. pd.to_numeric(errors='coerce') 이용 coerce의 뜻 억압하다, 강요하다와 같이 문자열을 강제로 NaN으로 바꾸면서 동시에 float형으로 만들었다. ..
판다스 - 데이터 표준화 (단위 환산 : kpl, mpg) 데이터 불러오기 mpg - 갤런당 마일(mile per gallon)을 kpl - 리터당 킬로미터(km/L)단위로 변환 kpl이라는 새로운 열을 추가 mpg_to_kpl == 0.425 즉, mpg에 0.425를 곱해 kpl로 만들겠다. round함수를 이용해 계산한 데이터를 소수점 둘째자리까지 반올림 mpg컬럼과 같이 float64로 잘 추가되었음을 확인
판다스 - 중복 데이터 처리 : duplicated, drop_duplicates 데이터프레임 제작 행의 레코드가 중복되는지 여부확인 위해 duplicated() 메서드 사용 h행과 k 행은 중복 되었음 drop_duplicates() duplicated()메서드에서 True로 확인된 k열이 삭제되었음 c2열과 c3 열 기준으로 중복되었는지 확인 k행(h행과 중복)과 m행(r행과 중복)이 중복되었음 c2, c3열을 기준으로 중복되었던 k와 m행이 삭제되었음 keep='last'를 이용하면 h행과 중복인 k행을 살리고 h행을 삭제 r행과 중복인 m행을 살리고 r행을 삭제
판다스 - 누락 데이터 처리 : dropna, thresh, fillna, idxmax, ffill, bfill 데이터 불러오기 누락값 살펴보기 불린 조건을 '입력된 값의 개수가 전체 행의 개수와 같지 않다'로 설정 즉, age, embarked, deck, embark_town은 누락값이 있다. 시리즈에 cond로 필터링하면 누락값이 있는 컬럼들의 입력값의 개수를 볼 수 있다. dropna, thresh df.dropna(axis=0 or 1, thresh=n) 축을 기준으로 n개 미만 입력되면 그 축을 삭제하겠다. 데이터프레임의 열 개수는 len(df.columns)로 구할 수 있다. thresh가 500일땐 203개만 입력된 deck 컬럼이 삭제되었다. (15 → 14) thresh가 800일땐 714개가 입력된 age컬럼과 203개가 입력된 deck컬럼이 삭제되었다. (15 → 13) dropna, how=..