# 코드잇 데이터 사이언스 강의 듣는 중
<값 더하기>
- .sum(axis='colums')
- 전처리 단계에서 필요한 변수 생성할 때 유용함. 일일히 행렬 값을 전부 치지 않아도 됨.
df.sum(axis='columns')
#변수에 넣어주면 계산하기가 더 편해짐
df['Total']= df.sum(axis='columns')
--> then, 값이 마지막 열로 바로 추가됨.
- 직선 그래프는 y='' 만 넣어주면 됨.
df.plot(y='Total')
--> 명백하게 해가 지날 수록 tv 시청률이 줄어드는 것을 확인 가능
- 지상파/종편 비교 하고 싶으면, 각 값을 생성해주면 됨.
df['Group1'] = df.loc[:,'KBS':'SBS'].sum(axis='columns')
df['Group2'] = df.loc[:,'TV CHOSUN':'MBN'].sum(axis='columns')
- 마찬가지로 비교하고 싶은 y값에 둘 다 넣어주면 됨.
df.plot(y=['Group1', 'Group2'])
--> 지상파는 확실한 감소세지만, 종편은 미약하게나마 상승했음을 확인 가능합니다!
++
- spss로 척도를 요인 별로 묶거나, 총점을 구할 때 많이 사용했는데..
- spss syntax도 일일이 변수 명을 더해줬어야 했다... 그것도 오류 발생 부분을 확인할 수 있어서 편하다고 생각했는데,
확실히 슬라이싱을 쓰니깐 더 빠르게 넣을 수 있어서 좋은 것 같다.
<문자열 필터링>
- .str.contains(' ') --> 불린 값으로 필터링 됨.
- 장르의 종류를 확인 --> .unique()
df['Genre'].unique()
--> 이런 식으로 여러 가지가 나오면 그 중에 어떤 것을 픽할지 고민할 수 있음.
--> .unique()를 언제나 떠올릴 것.
- Blues가 포함된 것을 전부 가지고 오고 싶음. --> 불린 인덱싱
df[df['Genre'] =='Blues']
--> 이렇게 하면, 정확히 'Blues'인 것만 가지고 오게 됨.
- Blues 단어가 포함된 것을 전부 가지고 오고 싶으면, --> .str.contains('')
df[df['Genre'].str.contains('Blues')]
--> blues가 포함된 것을 전부 다 가지고 옴
- Blues가 메인인 것을 가지고 오려고, 블루스로 시작하는 것만을 가지고 오고 싶음 --> .str.startswith(' ')
df[df['Genre'].str.startswith('Blues')]
--> 시작되는 것만 가지고 왔음.
- 블루스가 포함되는 지 아닌지 여부로 불린 값 벡터를 추가 가능함.
df['Contains Blues'] = df['Genre'].str.contains('Blues')
--> 필요한 대로 만들어서 쓰면 됨.
++ 확실히, 데이터를 이리저리 처리하는 방법을 배우는 듯.
- 심통은 이론 위주로 알려주고 spss를 활용해서 gui상에서 그냥 알아서 해야 했는데,
이렇게 배우니까 새롭긴 하다. 특히 불린은 전혀 배우지 못했던 것이라 신기하기도 하고.
<예제1>
- 문자열 필터링 한 값으로 벡터를 만들고, true와 false 값에 각각 문자 부여하기.
- 처음에 df[]로 해서 전체 데이터 값이 다 바뀌어서.. 뭐지.. 하다가 .loc[조건, '해당 벡터']로 하니깐 맞게 잘 되었음.
- 나중에 헷갈릴까봐 넣어둠.
df['분류'] = df['시설명'].str.contains('대학')
df.loc[df['분류'] == True, '분류'] = '대학'
df.loc[df['분류'] == False, '분류'] = '일반'
df
<문자열 분리>
- .str.split() --> 띄어쓰기 별로 다 띄어줌.
--> 리스트로 만들어주니깐 이게 필요하면 이걸로 하면 됨.
- .str.split(n=1) --> 띄어쓰기 1번 째만 해주고 뒤는 붙여줌.
--> n =2면, 띄어쓰기 2번째 꺼까지 ,로 띄어줌.
- .str.split(n=2, expand = True) --> 띄어쓰기 2번 째까지 해주고 뒤는 붙인 후, 리스트가 아닌 dataframe으로 만들어줌.
--> 편하게 필요한 열을 기존 데이터에 추가해주기만 하면 됨.
- 따로 벡터를 만들어줌.
address = df['소재지도로명주소'].str.split(n=1, expand= True)
--> 필요한 0번째 벡터만 가지고 옴
- 분리된 값을 기존 데이터에 추가해줌.
df['관할구역'] = address[0]
df
--> 이렇게 하면 관할구역으로 인사이트를 고민가능해짐.
- 특정 문자열로 구분하고 싶으면
1) split 안에 바로 '문자열'를 넣어주면 됨.
2) or pat='' 에 넣어줘도 됨.
local_num = df['운영기관전화번호'].str.split('-', expand= True)
df['지역번호'] = local_num[0]
#혹은 pat=''로 넣어도 됨
phone_number = df['운영기관전화번호'].str.split(pat='-', n=2, expand=True)
'Data Science > Pandas' 카테고리의 다른 글
[EDA] 카테고리 분류, .groupby (0) | 2024.06.09 |
---|---|
[EDA] 카테고리 분류, .map() (2) | 2024.06.07 |
[EDA] 적용 예제 (0) | 2024.06.07 |
[EDA] 가설 검정 전에 data set을 살피는 단계 (2) | 2024.06.03 |
[Pandas] boolean indexing 불린 인덱싱, 다중 조건 인덱싱 (0) | 2024.05.31 |