KT Aivle School 에이블스쿨 기자단] 9.04(월) ~ 9.10(일) 시즌 1호 발표 & ADsP 합격
이번 주의 스케줄
미니 프로젝트
ADsP 발표
데이터 수집 -> 웹 크롤링을 잘 활용하면 쏠쏠하게 아르바이트를 할 수 있다고 해서 좀 더 흥미가 갔다 “크몽” 사이트는 메모
데이터 분석
이번 셀프 테스트 잘 본건가.. 알쏭달쏭
데이터 분석 삽질 ㅠ
2차 미니프로젝트 1일차
시즌 1호 발표 완료~
저번 1차 미니 프로젝트에서는 스스로에게 만족스럽지 못해서 열심히 준비한 결과,
발표를 하고 칭찬을 받을 수 있었다
코딩 파일 시작 부분에 뚜렷한 목적성을 잘 나타낸게 어필한 포인트
첫 발표라 그런지 우쭈쭈해주는 고마운 팀원들ㅜ
이번 주 미니 프로젝트에서 계속 삽질했던 포인트는 상관분석, 카이제곱검정, t검정에서의 p-value에 따른 귀무가설 기각이었다... ADsP를 땄다는 녀석이 이런 부분에서 실수를 하니 스스로 한심하게 느껴진 부분
이번 수업 리뷰
브라우저 홈페이지에서 F12를 눌러 페이지 내의 정보를 탐색하는 내용이 흥미로웠다.
Beautiful Soup 라이브러리, CSS를 열심히 배워서 웹 크롤링을 통해 추후에 해커톤이든 개인 프로젝트에서든 정보 수집 능력을 키우고 싶다는 생각을 했다!!
ADsP 합격!!
1 과목 만점으로 점수를 많이 딴게 다행 민트 이론 한 바퀴 돌리고, 모의고사 + 기출을 5바퀴 돌리니 시험 때 큰 어려움 없이 문제를 풀 수 있었다 역시 자격증은 무조건 기출 뺑뻉이
이번 주 셀프 테스트
그동안 셀프 테스트 점수가 잘 나와서 만만하게 봤는데 이번에는 수업 때 이론 부분에서 잘 집중을 못해서 그런지 쉽지 않게 느껴졌다
앞으로 수업에서 딴짓하지 말고 빡 집중 해야지!!
이번 주 프로그래머스 문제 풀이
코드 정리
수치형 상관분석 p-value 내림차순 정렬
def pearson_value(df): keys = [] spst_list=[] spst_dict = {} for i in df.columns: if ( df[i].dtypes=='int64'): # print(i, base_data[i].dtypes) keys.append(i) # print(keys)
# 피어슨 상관분석 p-value 값을 value로 사용하기 위해 준비 for i in keys: spst_list.append(list(spst.pearsonr(df[i], df['Score_diff_total'] ))[1]) # print(spst_list) # print('='*100, '\n상관계수 p-value 출력', sep='') spst_dict = dict(zip(keys, spst_list)) # display(spst_dict) # 딕셔너리 형태로 만들어 p-value 값을 아래로 오름차순으로 출력 # lambda 매개변수 : 표현식 # items를 통해 키-값 쌍을 나타내는 튜플 리스트를 생성 # key = lambda x : x[1] 부분에서 'x'는 리스트에서 하나의 튜플 # x[1] 은 value 값을 정렬 기준으로 삼는다. spst_dict = sorted( spst_dict.items(), key = lambda x : x[1]) # display(spst_dict)
for key, value in spst_dict: print(f'{key}:{value}')
>> 두 개 이상의 범주형 변수 간에 독립성을 검정하는 데 사용한다 따라서, 검정을 통해 변수 간의 연관성을 파악하려면 원본 교차표를 사용해야 한다. Normalize하면 행과 열 합이 1이 되도록 스케일을 조정한다. 범주 간의 상대적 비율을 확인할 때는 유용하지만, 카이제곱 검정의 경우, 범주 간의 독립성을 여부를 확인하는 것이 목적이므로 스케일 조정을 하지 않는다.
카이제곱 검정
귀무가설 : 두 변수 간에 독립성이 있다. p-value가 0.05보다 클 때, 채택 대립가설 : 두 변수 간에 독립성이 없다. p-value가 0.05보다 작을 때, 채택
<주의>
ttest
귀무가설 : 두 집단 간의 평균에 유의미한 차이가 없다. p-value가 0.05보다 클 때, 채택 대립가설 : 두 집단 간의 평균에 유의미한 차이가 있다. p-value가 0.05보다 작을 때, 채택
이변량 숫자 vs 범주
숫자 --> 범주 시각화
sns.histplot( x = '숫자 컬럼', data = 데이터프레임, hue ='범주 컬럼' )
import pandas as pd
import numpy as np
import pandas_profiling
from pandas_profiling import ProfileReport
h = pd.read_csv('housing_data.csv')
h.profile_report()
import csv
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
for row in data:
print(row)
카테고리 확인
import csv
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
for row in data:
a=0
print(f"* 첫째 행 구성요소 : {row}")
print(f"* 행 길이 : {len(row)}")
for i in row:
print(f"{a}번째 값 : {i}")
a+=1
break
Pandas를 활용하여 간단하게
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
df
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
cp949 : 한글 표현하기 위함
index_col = 0 : 불필요한 인덱스 제거 역할
index_col = 0 입력
index_col 생략
원하는 정보(초, 중, 고 중에서 선택)만 골라서 출력
df.index.str.contains() 함수를 통해 데이터 프레임의 인덱스 문자열에 원하는 문자열이 포함된 행을 찾기
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
name = input('초등학교, 중학교, 고등학교 중에서 선택')
a = df.index.str.contains(name)
df2 = df[a]
df2
df.index.str.contains(name)에는 True, False 값이 배열 형태로 저장
"초등학교" 입력 결과
초, 중, 고 갯수 확인
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
df_cho = df[df.index.str.contains("초등학교")]
df_jung = df[df.index.str.contains("중학교")]
df_go = df[df.index.str.contains("고등학교")]
print(f"전체 학교 수 : {df.shape[0]}")
print(f"초등학교 수 : {df_cho.shape[0]}")
print(f"중학교 수 : {df_jung.shape[0]}")
print(f"고등학교 수 : {df_go.shape[0]}")
행 개수, 열 개수 확인
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
df
print(f"행 개수 : {df.shape[0]} 열 개수 : {df.shape[1]}")
학교 종류 확인(리스트 타입)
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
index_info = list(set(df.index.to_list()))
print(index_info)
학교 종류별 갯수
import csv
import pandas as pd
f = open('./csv/school in seoul.csv')
data = csv.reader(f)
df = pd.read_csv('./csv/school in seoul.csv', encoding='cp949', index_col=0)
index_info = list(set(df.index.to_list()))
print(f" index_info {index_info}\n\n")
a=[]
for i in index_info:
# 정확한 일치 개수를 세는 방식으로 변경
count = (df.index==i).sum()
print(f"{i}: {count}")
a.append(count)
print('\n\n',a,'\n\n')
print(sum(a),'\n\n')