1. 분포와 통계량
describe() 함수를 통해 기초 통계량들을 구할 수 있다.

아래와 같은 함수를 사용해서 대푯값을 구할 수 있다,
numeric_only = True 옵션을 통해 데이터 타입이 숫자인 항목에 한해 구할 수 있다.

2. 상관관계 분석
corr() 함수를 통해 각 컬럼별 상관관계를 분석할 수 있다.

후에 배울 그래프와 결합하면 아래처럼 나타낼 수 있다.

3. groupby()
같은 값을 한 그룹으로 묶어서 각종 연산과 통계값을 구하는 방법
형식 : 데이터.groupby(컬럼명).연산및통계함수
-
df.groupby('Pclass').count() #Pclass 각 그룹군에 대해 해당 값이 몇개인지 표로 보여줌

-
df.groupby('Pclass').nunique() #유니크한 갯수#패신저 아이디는 1~216이라 216이란 결과, Survived는 Y/N 으로 두가지 결과만 나왔으므로 2이다

-
df.groupby('Pclass').sum(numeric_only=True)

-
df.groupby('Pclass')[['Survived','Age']].mean()

-
다중함수에 대해서도 groupby 함수를 사용할 수 있다.df.groupby(['Sex','Pclass']).mean(numeric_only=True)성별과 클래스에 따른 각 항목의 평균을 계산.

df.groupby(['Sex','Pclass'])[['Survived','Age','SibSp','Parch','Fare']].aggregate([np.mean, np.min, np.max])
성별과 클래스에 따라, 숫자형인 값을 갖는 각 항목에 대해 평균, 최소, 최대값 계산
4. crosstab()
범주형 데이터를 비교분석할 때 사용한다.
형태 : pd.crosstab(index=행, columns=열, margins=True/False, normalize=True/False)
- 범주열 데이터 갯수 구하기
pd.crosstab(df['Sex'], df['Survived'])pd.crosstab(df['Pclass'], df['Survived'])
실행결과 - 범주열 데이터 비율 구하기
- normalize = 'all': 전체 합이 100%
- normalize = 'index': 행별 합이 100%
- normalize = 'columns': 열별 합이 100%
pd.crosstab(df['Sex'], df['Survived'], normalize='index')pd.crosstab(df['Sex'], df['Survived'], normalize='all', margins=True)
왼쪽부터 차례로 실행한 결과
- 다중 인덱스, 다중 칼럼의 범주표 구하기
pd.crosstab(index=[df['Sex'], df['Pclass']], columns=df['Survived'], normalize='columns')
5. 피벗테이블
엑셀에서 쓰던 그 피벗테이블
형태 : p d.pivot_table(데이터명, index= 원하는 행, columns= 원하는 열, values= 표에 넣을 값, aggfunc=값을 처리할 연산)
| 단일 |
pd.pivot_table(df, index='Sex', columns='Survived', values='Age', aggfunc='mean') ![]() |
| 다중 |
pd.pivot_table(df, index=['Sex','Pclass'], columns=['Survived','Embarked'], values='Age', aggfunc='mean') ![]() |
6. stack, unstack, melt
pivot = pd.pivot_table(df, index=['Sex','Pclass'], values=['Survived','Fare'], aggfunc=['mean','median','sum'])

최초 데이터로 만든 피벗 테이블

- stack : 컬럼 레벨에서 인덱스 레벨로 데이터프레임을 변경합니다.
- unstack : 인덱스 레벨에서 컬럼 레벨로 데이터프레임을 변경합니다
-
pivot.stack(1) #컬럼의 두번째 레벨을 인덱스로 내립니다.

열을 행으로 바꿈 pivot.unstack(0) #인덱스의 첫번째 레벨을 컬럼으로 쌓아 올립니다
- melt() : 컬럼명들이 데이터 값으로 들어가 더 긴 표를 만든다.
형태 : pd.melt(데이터명, id_vars=기준 컬럼)
pd.melt(data, id_vars=['name'])# 원본 데이터data = pd.DataFrame({'name':['a','b','c'], 'order_count':[3,4,10], 'amount':[10000,25000,300000]})# melt 결과 1, 결과 2
pd.melt(data, id_vars=['name'], var_name='type', value_name='val')
좌 : 원본 / 우 : 결과 A,.결과 B
'Python' 카테고리의 다른 글
| crawling 1 - Selenium (0) | 2024.07.10 |
|---|---|
| 데이터 시각화 1 (1) | 2024.07.05 |
| dataframe 3 - 데이터 가공 (1) | 2024.07.05 |
| dataframe 2 - 구조 (0) | 2024.07.05 |
| dataframe 1 - 생성, 조회, 추출 (0) | 2024.07.05 |

