Data Science/Data Processing

[Pandas] 데이터프레임 피벗 테이블(pivot table)
·
Data Science/Data Processing
피벗 테이블 (Pivot Table) 쉽게 말하면 특정 열의 관점에서 다른 특정 열의 정보를 확인하고 싶을 때 사용한다. 예를 들어서 각 부서의 평균 연봉이라던가, 각 계절의 판매량 등을 확인하고 싶은데, 내가 원하는 정보로 데이터가 있는 것이 아니라 부서 칼럼이 있고, 연봉 칼럼이 있던가, 계절 칼럼이 있고, 판매량 칼럼이 있던가 해서 계산해야 할 때 사용 가능하다.pivot_table(참고링크)을 활용해서 계산한다. 주요한 매개변수는 당연히 있어야 할 data, 인덱스가 될 행을 선택하는 index, 집계할 열을 선택하는 values, 피벗 테이블의 열로 사용할 columns, 집계 함수인 aggfunc이 있다.data는 말 그대로 데이터로 피벗 테이블을 생성할 원본 데이터프레임을 말한다.values..
[Pandas] 쿼리(query)를 이용한 데이터프레임 탐색
·
Data Science/Data Processing
쿼리 판다스에서도 SQL 처럼 쿼리를 이용할 수 있는데, query(참고링크) 메서드를 이용하면 된다.query 메서드는 문자열 형태로 조건식을 입력받는다. 따라서 기존 조건식을 이용한 방법보다 더 직관적이다.예를 들어서 df 데이터프레임에서 age 열이 10 이상인 행만 남긴다고 해보자. 기존 방식은 아래와 같을 것이다.df = df[df["age"] >= 10]]여기까지는 가독성에 큰 문제가 없다. 이제 조건을 더 추가해서 height 열이 150 이상인 행만 남겨보자.df = df.loc[(df["age"] >= 10) & (df["height"] >= 150)]나쁘지 않아 보이지만 query를 이용하면 다음과 같이 나타낼 수 있다.df = df.query("age >= 10 and height >..
[Pandas] 데이터프레임 그룹화(groupby)
·
Data Science/Data Processing
그룹화 데이터프레임을 특정 기준으로 그룹화해야 한다면 groupby (참고링크)를 이용하면 된다. 이 groupby 는 크게 세 단계로 구성된다. 첫번째는 분할(splitting)로 데이터를 그룹으로 나누는 것이다. 두번째는 적용(appliying)으로 각 그룹에 특정 함수를 적용하는 것이다. 세번째는 결합(combining)으로 연산 결과를 다시 합쳐 새로운 데이터프레임을 만드는 것이다. 분할 groupby 는 다양한 매개변수를 받는데 중요한 것은 그룹화의 기준인 by이다.by 는 다양한 입력을 받을 수 있는데 가장 많이 사용하는 것은 열 이름 혹은 열 이름으로 이루어진 리스트이다. 열 이름만 넣으면 해당 열을 기준으로 그룹화되고, 열 이름으로 이루어진 리스트를 넣여면 해당 열들의 이름을 기준으로 그룹..
[Pandas] 데이터프레임 새로운 열 할당(assign) 및 구간 나눠(cut, qcut) 새로운 열 만들기
·
Data Science/Data Processing
새로운 열 할당 일반적으로 새로운 열을 만들 때는 아래와 같이 만드는 경우가 많다.df["new_column"] = ...그러나 이를 assign(참고링크)을 이용해서 만들 수 있다. 위처럼 새로운 열을 추가하는 것도 편하지만, assign을 이용하면 새로운 데이터프레임을 반환하기 때문에 원본 데이터프레임을 수정하지 않고도 새로운 열 추가가 가능하고, 메서드 체이닝 역시 가능하기 때문에 사용해야 하는 경우가 있다.assign의 인풋은 열 이름이 된다. 이때 해당 열의 값을 넣기 위해선 람다(lambda)를 주로 활용한다. 함수를 이용하지 않을 것이라면 리스트 등을 그대로 넣으면 된다.df.assign(C=[1, 2, 3])만약 함수를 이용한다면 lambda를 이용하면 된다. 예를 들어서 df의 A열과 B..
[Pandas] 데이터프레임 중복 행 제거(drop duplicates) 및 특정 행 또는 열 제거(drop)
·
Data Science/Data Processing
중복 행 제거 drop_duplicates(참고링크)를 사용한다. 말 그대로 중복된 행이 있다면 제거한다. 이때 여러 매개변수를 이용할 수 있다.subset은 중복을 고려할 칼럼 라벨이나 라벨 리스트를 설정하는 매개변수이다. 기본값은 None으로 모든 열을 기준으로 한다.keep은 중복된 값이 있어 행을 삭제할 때 어느 행을 유지할 지 결정하는데, 'first'는 첫 번째 행 유지, 'last'는 마지막 행 유지, False로 설정하면 모든 중복 행 제거이다.inplace는 True라면 원본 데이터프레임을 수정하고 None을 반환하며, False인 경우 중복을 제거한 데이터프레임을 반환한다. 기본값은 False이다.ignore_index는 True라면 인덱스를 재설정, False라면 재설정하지 않는다. ..
[Pandas] 데이터프레임 인덱싱(loc, iloc) 및 단일값 접근(at, iat)
·
Data Science/Data Processing
인덱싱 (loc) loc(참고링크)는 location의 약자로 데이터프레임 인덱싱을 도와준다.일반적으로 파이썬에서는 []을 이용하여 리스트 인덱싱, 슬라이싱 등을 하는데 판다스 데이터프레임에서는 loc[]를 통해 비슷한 일을 한다고 생각하면 편하다.DataFrame.loc[name_row, name_column]위가 기본적인 접근 방법으로 loc는 행과 열의 이름으로 접근한다. 혹은 행과 열의 이름을 리스트로 넣어 접근할 수도 있다. 또한 :을 이용하여 슬라이싱도 가능하고, 조건을 넣어서 접근할 수도 있다.예를 들기 위해 아래와 같이 데이터를 불러오자.import seaborn as snsdf = sns.load_dataset('titanic')간단하게 데이터를 살펴보기 위해 head()를 이용하여 출력..
[Pandas] 녹이기(melt)와 피벗(pivot)을 통한 데이터프레임 재구조화
·
Data Science/Data Processing
melt melt(참고링크)가 녹이기인 만큼 이 맥락에서 보면 열을 값으로 녹여 넣는다고 보면 된다. 예를 들어서 다음과 같은 데이터가 있다고 해보자.import pandas as pddata = { "이름": ["철수", "영희", "민수"], "수학": [90, 80, 70], "영어": [85, 95, 75], "국어": [75, 95, 95]}df = pd.DataFrame(data)그렇다면 df는 아래와 같다. 이름 수학 영어 국어0 철수 90 85 751 영희 80 95 952 민수 70 75 95그런데 이제 수학, 영어로 열을 나누는 것이 아니라 과목, 점수로 열을 나누고 싶을 수 있다. 이럴 때 melt를 사용한다.d..
[Pandas] 데이터프레임 연결(concatenate) 및 결합(merge), 그리고 간단 결합(join)
·
Data Science/Data Processing
데이터 연결 concat(참고링크)를 이용한다. 이 경우 단순히 데이터프레임을 연결하는 것이다. 이때 여러 매개변수를 이용할 수 있다.objs는 연결할 데이터프레임 혹은 시리즈의 리스트나 딕셔너리를 입력받는다.axis는 연결할 축을 설정한다. 기본은 0으로 세로로 연결하는데, 1로 설정하면 가로로 연결한다.join은 연결할 때의 방식을 설정한다. 기본은 "outer"로 설정되어 있는데, 이 경우 모든 인덱스 혹은 열을 합쳐서 연결한다. 만약 "inner"로 설정하면 교집합만 연결한다.ignore_index는 연결 후 새로운 인덱스 부여 여부를 결정한다. 기본적으로 False로 되어 있어 인덱스가 바뀌지 않지만, True로 설정하면 인덱스를 새롭게 설정한다.verify_integrity는 연결하려는 각 데..
[Pandas] 값 혹은 인덱스를 기준으로 데이터프레임 정렬
·
Data Science/Data Processing
값을 기준으로 데이터프레임 정렬 • sort_values 메소드sort_values(참고링크)를 이용하여 데이터프레임의 값을 기준으로 정렬할 수 있다. 기본적으로 sort_values는 정렬한 리스트를 반환한다.예시로는 seaborn의 mpg 데이터셋을 이용하겠다.import seaborn as snsimport pandas as pddf = sns.load_dataset("mpg")mpg 데이터셋을 head로 불러와 확인해보면 아래와 같이 생겼다. mpg cylinders displacement horsepower weight acceleration \0 18.0 8 307.0 130.0 3504 12.0 1 15.0..
[Pandas] 판다스를 통한 데이터 시각화(data visualization)
·
Data Science/Data Processing
데이터 시각화 데이터를 확인할 때 데이터 그 자체로 보면 데이터의 특징을 파악하기 어렵다. 따라서 다양한 방법으로 데이터를 요약하거나 시각화하여 데이터의 특징을 파악하기도 한다.데이터를 파이썬으로 시각화할 때는 seaborn, matplotlib 등의 라이브러리를 사용하는데, 판다스에서도 간단하게는 시각화할 수 있기 때문에 간단하게 데이터의 특징을 파악할 때는 판다스의 메소드를 활용하는 편이 좋을 수 있다.데이터를 시각화할 때는 수치형 데이터와 범주형 데이터를 다르게 시각화하는 것이 일반적이다. 또한 시각화 메소드 또한 수치형 데이터냐, 범주형 데이터냐에 따라 다르게 동작하기 때문에 수치형 데이터를 시각화하는 메소드를 범주형 데이터에 사용하면 당연히 오류가 나기 때문에 미리 데이터의 정보를 파악(참고 링..
애스터로이드
'Data Science/Data Processing' 카테고리의 글 목록