정돈된 데이터 (Tidy data)
원하는 형태로 자유롭게 만드는 것. 데이터의 구조를 바꾸는 것
처음 제공되는 데이터셋 = raw data (대부분 빠져있는 값들이 많다. 필요없는 컬럼등..) : 정제하고 전처리를 해야한다.
정돈되지 않은 데이터의 가장 흔한 형태
- 열 이름이 변수 이름이 아니라 값인 경우
- 열 이름에 복수 개의 변수가 저장된 경우 : 하나의 열에 여러개를 저장하지 말것 ex. 주소와 이름을 합치지x. 한개의 단위에는 하나만 넣는다.
- 변수가 행과 열에 모두 저장된 경우
- 같은 테이블에 복수의 관측단위가 저장된 경우
- 단일 관측 단위가 복수 테이블에 저장된 경우
stack()
: 컬럼의 이름들을 index로 만들어준다. df.stack()
unstack()
: stack()과 반대로 index를 컬럼으로 변환한다.
melt()
:컬럼을 값으로 변환한다. 변환할 컬럼들을 지정할수 있기 때문에 stack()보다 유연하다.
* 매개변수
id_vars: 값으로 변환하지 않고 컬럼자리에 그대로 유지하는것
value_vars: 단일 컬럼의 값으로 변경하고자 하는 컬럼
id_vars를 지정하지 않고 value_vars만 지정하면 value_vars에 지정 안된 컬럼은 제거된다.
제거 되지 않고 단독 컬럼으로 유지되길 바라는 컬럼은 id_vars로 지정한다.
예시)
df2 = df.rename_axis(index="state").reset_index()
df2
state Apple Orange Banana
0 Texas 12 10 40
1 Arizona 9 7 12
2 Florida 0 14 190
#state: 유지
df2.melt(id_vars=["state"] #컬럼을 그대로 유지
, value_vars=["Apple", "Orange", "Banana"], # 컬럼의 값으로 내릴 컬럼명들 지정.
)
state variable value
0 Texas Apple 12
1 Arizona Apple 9
2 Florida Apple 0
3 Texas Orange 10
4 Arizona Orange 7
5 Florida Orange 14
6 Texas Banana 40
7 Arizona Banana 12
8 Florida Banana 190
=> state는 그대로 유지되어 있고, 나머지는 변경
pivot - index, column, value가 될 컬럼들을 지정해 재구조화
:데이터프레임 재구조화가 목적
데이터 프레임에서 두개이상의 범주형 변수를 그룹으로 묶어 특정 값을 보려고 할때 사용할 수 있다.
pivot_table은 그룹으로 묶은 뒤 특정 변수의 통계량을 본다면 pivot은 그 값을 그대로 본다.
pivot_table이 집계결과라면 pivot은 값을 넣으라는 것이다.
melt()된 것을 원상복구 시킬때도 사용할 수 있다.
pivot 매개변수
index: 문자열. 행이름으로 사용할 컬럼 -> 열이 index로 이동하는 형태가 된다.
columns: 문자열. 컬럼명으로 사용할 컬럼
values : Value에 올 컬럼명
crosstab()
범주형 값들 고유값 별 빈도표를 만든다. pivot_table에서 빈도수 세는것만 뺀 것이라고 생각.
job = ['학생', '자영업', '자영업', '회사원', '회사원', '학생', '자영업', '자영업', '회사원', '회사원']
pass_yn = ['pass', 'fail', 'fail', 'fail', 'pass', 'pass', 'fail', 'fail', 'fail', 'pass']
df = pd.DataFrame({
"job": job,
"pass":pass_yn
})
df
df['job'].value_counts()
=> job에 대해서 몇 명인지를 세준다.
job
자영업 4
회사원 4
학생 2
Name: count, dtype: int64
매개변수
margins: 총합계 행과 열을 추가할지 여부. True-추가, False-추가안함(기본값)
normalize: 빈도수를 비율로 나타낸다.
'데이터 분석일기 > pandas' 카테고리의 다른 글
matplotlib (0) | 2023.09.20 |
---|