공부 기록/Data Analysis

[Data/Python] 데이터분석 정리 - 2

햇살아래 2022. 3. 15. 16:13

#개념 정리

#패스트캠퍼스 강의 정리

 

 

1. isin을 활용한 색인

내가 조건을 걸고자 하는 값이 내가 정의한 list에 있을 때만 색인하려는 경우에 사용한다.

 

my_condition = ['플레디스''SM']
df['소속사'].isin(my_condition)

 

 

df.loc[ df['소속사'].isin(my_condition) ]

 

 

2. 결측값(Null) 알아보기

-NaN 값에 대하여

null값은 비어있는 값을 말한다.

info() 메소드를 통해 전체적으로 어떤 column에 빠진 데이터가 있는지 알 수 있다.

df['그룹'].isnull()

 

-NaN이 아닌 값에 대하여 Boolean 인덱싱

df['그룹'].notnull()

 

 

3. copy(복사)

copy는 dataframe을 복사할 때 사용한다.

df를 새로운 변수(new_df)에 대입해주고, 새로운 변수에서 값을 바꾸면 원래의 df의 값도 같이 바뀐다. 그 이유는 df와 new_df 모두 같은 메모리 주소를 참조하기 때문이다. 원본 데이터를 유지시키고, 새로운 변수에 복사할 때는 copy()를 사용한다.

df = pd.read_csv('https://bit.ly/ds-korean-idol')
copy_df = df.copy()

 

 

4. row, column 추가 및 삭제

-row 추가

dictionary 형태의 데이터를 만든 다음 append() 함수를 사용하여 데이터를 추가할 수 있다. 반드시 ignore_index=True 옵션을 추가해야 에러가 나지 않는다.

 

df.append({'이름''테디''그룹''테디그룹''소속사''끝내주는소속사''성별''남자''생년월일''1970-01-01''키'195.0'혈액형''O''브랜드평판지수'12345678}, ignore_index=True)

 

 

그러나 tail()로 마지막 5개의 데이터를 볼 때 추가가 안된 것을 볼 수 있다. 그럴 경우, append() 한 뒤 다시 df에 대입해줘야 변경한 값이 유지가 된다.

 

df = df.append({'이름''테디''그룹''테디그룹''소속사''끝내주는소속사''성별''남자''생년월일''1970-01-01''키'195.0'혈액형''O''브랜드평판지수'12345678}, ignore_index=True)
df.tail()

 

-column 추가

새로운 column을 만들고 값을 대입하면 자동으로 생성한다. 전부 동일한 값이 추가되면서, column도 추가된 것을 볼 수 있다.

 

df['국적'] = '대한민국'
df.head()

 

값을 변경하려면 loc 함수를 이용해 변경할 수 있다.

 

df.loc[ df['이름'] == '지드래곤''국적'] = 'korea'

 

 

 

5. 통계값 다루기

통계값은 데이터 타입이 float나 int형 인 column을 다룬다.

 

-min, max 최대, 최소

df['키'].min()
df['키'].max()
 
 
-sum, mean 합계, 평균
df['키'].sum()
df['키'].mean()
 
 
-var, std 분산, 표준편차
데이터가 평균으로부터 얼마나 떨어져있는지 정도를 나타낸다.
분산: (데이터 - 평균) ** 2을 모두 합한 값 / n
표준편차: 분산의 루트
 
 
import numpy as np
data_01.var(), data_02.var()
data_01.std(), data_02.std()

 

주로 표준편차를 많이 사용하며, 데이터가 평균으로부터 얼마나 퍼져있는지 정도를 나타내는 지표이다.

 

-count, median, mode 개수 세기, 중앙값, 최빈값

df['키'].count()
df['키'].median()
df['키'].mode()
 
 
 

6. 피벗테이블(pivot_table)

데이터 열 중에서 두 개의 열을 각각 행 인덱스, 열 인덱스로 사용하여 데이터를 조회하여 펼쳐놓은 것을 의미한다. 왼쪽에 나타나는 인덱스를 행 인덱스, 상단에 나타나는 인덱스를 열 인덱스라고 한다.

 

pd.pivot_table(df, index='소속사', columns='혈액형', values='키')
 
# aggfunc에는 추가 계산 옵션 (np.sum, np.mean) - 기본값은 평균
pd.pivot_table(df, index='그룹', columns='혈액형', values='브랜드평판지수', aggfunc=np.mean)

 

 

7. GroupBy

데이터를 그룹으로 묶어 분석할 때 활용한다.

 

df.groupby('소속사').count()
df.groupby('그룹').mean()
df.groupby('성별').sum()
df.groupby('혈액형')['키'].mean()

 

 

8. Multi-Index(복합 인덱스)

행 인덱스를 복합적으로 구성하고 싶은 경우 인덱스를 리스트로 만들어 준다.

df.groupby(['혈액형''성별']).mean()

 

 

-피벗 테이블로 변환

df2 = df.groupby(['혈액형''성별']).mean()

 

 
df2.unstack('혈액형')

 

 

-인덱스 초기화(reset_index)

 
df2 = df2.reset_index()