본문 바로가기

카테고리 없음

[패스트캠퍼스 수강 후기] 데이터분석 인강 100% 환급 챌린지 10회차 미션

08. ch01. pandas - 08. Selection - boolean indexing, isin - 15. ch01. pandas - 15. 복합 인덱스(multi-index)와 인덱스

 

08. ch01. pandas - 08. Selection - boolean indexing, isin
3. boolean indexing - 조건을 활용한 색인

numpy에서의 boolean 인덱싱과 같은 원리


df['키'] > 180
>0 False
1 False
2 False
3 False
4 False
5 False
6 True
7 False
8 False
9 False
10 False
11 True
12 False
13 False
14 False
Name: 키, dtype: bool

oolean Index 로 받은 Index 를 활용해서 True인 값만 색인.
df[] 꺾쇠로 감싸주고, 그안에 Boolean Index를 넣음.

df[df['키']<170]
>이름 그룹 소속사 성별 생년월일 키 혈액형 브랜드평판지수
4 화사 마마무 RBW 여자 1995-07-23 162.1 A 7650928
9 하성운 핫샷 스타크루이엔티 남자 1994-03-22 167.1 A 4036489


특정 column만 색인하고 싶으면?
1. 맨 뒤에 출력할 column 붙히기

df[df['키'] > 180][['이름', '키']]

이름 키
6 민현 182.3
11 차은우 183.0

df[df['키'] > 180]['이름']
>6 민현
11 차은우
Name: 이름, dtype: object

2. 추천) loc 활용

df.loc[df['키'] > 180 , '이름']
>6 민현
11 차은우
Name: 이름, dtype: object

df.loc[df['키'] > 180, '이름':'성별']
>이름 그룹 소속사 성별
6 민현 뉴이스트 플레디스 남자
11 차은우 아스트로 판타지오 남자


4. isin을 활용한 색인
~가 ~에 있다.

내가 조건을 걸고자 하는 값이 내가 정의한 list에 있을 때

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

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



09. ch01. pandas - 09. 결측값 색인 - isnull, isna, notnull

5. 결측값(null)

5-1. NaN 값
null 값은 비어 있는 값. 결측값.
pandas -> NaN->Not a Number

info() NaN값 요약 정보로 확인 가능

df.info()

5-2. 결측 값 다루기

boolean 인덱싱 (불리안 True or False로 return)

df.isna() (is 빠진값이야?)
>이름 그룹 소속사 성별 생년월일 키 혈액형 브랜드평판지수
0 False False False False False False False False
1 False False False False False False False False
2 False True False False False False False False
3 False False False False False False False False
4 False False False False False False False False
5 False False False False False False False False
6 False False False False False False False False
7 False False False False False True False False
8 False False False False False False False False
9 False False False False False False False False
10 False False False False False True False False
11 False False False False False False False False
12 False False False False False False False False
13 False False False False False False False False
14 False False False False False False False False


1. boolean 인덱싱으로 True가 return 되는 값이 NaN값

df[ '그룹'].isnull()

2. NaN 값만 색출

df['그룹'][df['그룹'].isnull()]
>2 NaN
Name: 그룹, dtype: object

df['그룹'][df['그룹'].isna()]
>2 NaN
Name: 그룹, dtype: object

3. NaN 아닌 값에 대하여 boolean 인덱싱

df['그룹'].notnull()

4. NaN 아닌 값만 색출
df['그룹'][df['그룹'].notnull()]

loc 사용하는게 좋음.

df.loc[df['그룹'].notnull(), ['키', '혈액형']]
loc -> 조건 주는 것. 그룹 항목에 null이 없는 것들을 뽑아서 column이 키, 혈액형만 뽑아서 보여줘


10. ch01. pandas - 10. 복사(copy)

1. copy(복사)

copy dataframe 복사할 때

df를 새로운 변수(new_df)에 대입. 새로운 변수에서 값을 바꿔보기

new_df = df
new_df['이름'] = 0

새로 변수를 만들었지만 같은 메모리를 참조함
-> 원본 데이터 유지, 새로운 변수 복사할 때 copy()을 사용

copy_df = df.copy()


11. ch01. pandas - 11. row, column 추가 및 삭제

2. row, column 추가 및 삭제

2-1. row 추가

dictionary 형태 데이터 {} 사용 + append() 함수 사용 + 마지막에 ignore_index=True
(dictionary - key와 value 형태. 왼쪽 key, 오른쪽 value)

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

append() 한 뒤 df에 대입시켜줘야 함.

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


2-2. column 추가
새로운 column 만들고 값 대입

df['국적'] = '대한민국'

df.loc[ df['이름'] == '지드래곤', '국적' ] 이해용!
>1 korea
Name: 국적, dtype: object 이해용!

df.loc[ df['이름'] == '지드래곤', '국적' ] = 'korea'
이름이 지드래곤인 사람의 국적은 korea로 변경해줘.


12. ch01. pandas - 12. 통계값(min, max, mean, var, std)

3. 통계값 다루기
통계 값은 data type이 float, int인 column만 다룸. (실수 정수.)

df.info()

df.describe()

3-1. min(최소값), max(최대값)

df['키'].min() 최소값
df['키'].max() 최대값

3-2. sum(합계), mean(평균)

df['키'].sum() 합계
df['키'].mean() 평균

3-3. var, variance(분산) / std, standard deviation (표준 편차)

분산, 표준편차 - 데이터가 평균으로부터 얼마나 떨어져 있는지
분산 (데이터-평균)**(제곱) 을 모두 합한 값 / n
표준편차 : 분산의 루트(보통 표준편차를 다룸)


import numpy as np

data_01 = np.array([1, 3, 5, 7, 9])
data_02 = np.array([3, 4, 5, 6, 7])


data_01.mean(), data_02.mean() 평균
>(5.0, 5.0)
data_01.var(), data_02.var() 분산
>(8.0, 2.0)
data_01.std(), data_02.std() 표준편차
>(2.8284271247461903, 1.4142135623730951)

np.sqrt(data_01.var()), np.sqrt(data_02.var()) 루트값 씌워준 것.
>(2.8284271247461903, 1.4142135623730951)

3-4. 갯수 세는 count

df['키'].count()
행의 갯수

3-5. 중앙값

df['키'].median()

3-6. 최빈값(mode)

df['키'].mode()
제일 많이 출현한 값.

13. ch01. pandas - 13. 피벗테이블(pivot_table)

두 개의 열을 각각 행 인덱스, 열 인덱스로 사용. 데이터를 조회하여 펼쳐놓은 것
왼쪽 인덱스 : 행 인덱스, 상단 : 열 인덱스

# index는 행 인덱스
# columns는 열 인덱스
# values는 조회하고 싶은 값
pd.pivot_table(df, index = '소속사', columns = '혈액형', values = '키')


# aggfunc에는 추가 계산 옵션 (np.sum, np.mean) - 기본값은 평균

pd.pivot_table(df, index = '그룹', columns = '혈액형', values= '브랜드평판지수', aggfunc=np.sum)


14. ch01. pandas - 14. 그룹별 통계 (groupby)

5. GroupBy (그룹으로 묶어 보기)

그룹으로 묶어 분석. (피벗테이블보다 그룹바이를 더 많이 사용)


df.groupby('소속사')

groupby와 함께

count() - 갯수
sum() - 합계
mean() - 평균
var() - 분산
std() - 표준편차
min()/max() - 최소값, 최대값


df.groupby('소속사').count()
산술통계 가능한 열만 출력

특정 열만 출력

df.groupby('혈액형')['키'].mean()
>혈액형
A 172.966667
AB 176.500000
B 183.000000
O 177.875000
Name: 키, dtype: float64

15. ch01. pandas - 15. 복합 인덱스(multi-index)와 인덱스

6. Multi-Index(복합 인데스)

행 인덱스를 복합적(1개 이상)

df.groupby(['혈액형', '성별']).mean()
순서도 중요함. 앞쪽부터 분류

6-2. Multi-Index 데이터 프레임을 피벗 테이블로 변환

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

df2.unstack()
(쌓여있지 않게 하는것. 쌓여있는걸 풀어주는 stack : 쌓여있다.)
왼쪽에 있던 것들을 가로로 쭉 펼치는 것

6-3. 인덱스 초기화(reset_index)

reset_index() 는 Multi-Index로 구성된 데이터 프레임의 인덱스를 초기화

df2
>키 브랜드평판지수
혈액형 성별
A 남자 175.140 7591755.20
여자 162.100 5784794.50
AB 남자 176.500 5687577.50
B 남자 183.000 3506027.00
여자 NaN 4668615.00
O 남자 177.875 3939919.75
(혈액형, 성별이 index임 column이 아니라)

df2 = df2.reset_index()

df2
>혈액형 성별 키 브랜드평판지수
0 A 남자 175.140 7591755.20
1 A 여자 162.100 5784794.50
2 AB 남자 176.500 5687577.50
3 B 남자 183.000 3506027.00
4 B 여자 NaN 4668615.00
5 O 남자 177.875 3939919.75
(혈액형, 성별이 column이 됨)

 

 








 

패스트캠퍼스 데이터분석 강의 링크
https://bit.ly/3imy2uN

 

직장인을 위한 파이썬 데이터분석 올인원 패키지 Online. | 패스트캠퍼스

왕초보도 진짜 데이터 분석을 하는 마법의 커리큘럼으로 파이썬 기초부터 다양한 예제를 활용한 분석까지 모두 배울 수 있는 온라인 과정입니다.

www.fastcampus.co.kr