일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비전공자 멋쟁이사자처럼
- 멋쟁이사자처럼
- 비전공자 코딩
- 멋쟁이사자처럼 전액국비지원
- 멋사 k 디지털
- AI 코딩
- 멋사 전액국비지원교육
- 가브리엘마르케스
- 멋사 국비지원과정
- 멋사 AI
- 이렇게 그녀를 잃었다
- 멋사 AI 교육
- 멋쟁이사자처럼 k 디지털
- 인생책짧은글
- 리뷰
- 비전공자 코딩교육
- 홍명희 임꺽정
- k 디지털
- k 디지털 후기
- 유니오르
- 문학동네
- 멋쟁이사자처럼 k-digital
- 인터뷰
- 민음사
- 영화AI추천
- 추천프로젝트
- 인생책
- 영화추천시스템
- AI 국비지원
- til
- Today
- Total
글쟁이, 코딩한다
1222 / K_digital 12일차 / 파이썬(크롤링, 데이터 전처리) 본문
0.
화요일은 비슷하다. 특별한 일이 잘 안 생기는 날이다.
오늘도 데이터 전처리, 크롤링에 대한 기본 정보(라고 하기에는 너무 어렵지만)들을 배웠다. 내일 오전까지 한다. 이어 오후부터는 배운 정보들을 활용한 세미 프로젝트를 진행한다. 적어도 방해가 되지 않을 정도로는 익숙하게 하는 것이 중요하겠다.
해서 아마 내일부터는 개념을 다시 정확히 사용하기 위한 복습들이 중점이 되지 싶다.
프로젝트를 굉장히 여러번 진행하는데, 간단한 성과와 후기를 블로그에 남기는 것도 중요할 것이다.
Numpy
import numpy as np
수치와 행렬을 다룬다
a1 = np.array([[1, 2, 3], [4, 5, 6]])
a1
>> array([[1, 2, 3],
[4, 5, 6]])
array
#자료형 #하나의 벡터로도 이해 #행열 ([ ]) 괄호 안 울타리 [ ]를 만들고, 행 [ ]을 만든다. #열과 행으로 이뤄진 2차원뿐만 아니라, 3차원, 4차원, ..., n차원으로 확장할 수 있다.
numpy 기본 함수들
a1.dtype 데이터의 타입
a1.shape 데이터의 형태 = (2, 3)
a1[0, 0 : 3] 인덱스 기반으로 꺼내는 것이 기본 (행, 열 순서)
a1 = np.arange(start, end, step)
주어진 범위 내 정수들로 기본 행렬을 만들어준다.
#int, float만 들어간다 #str타입은 넣을 수 없다. #바로 이어 사칙연산도 가능
a2 = a1.reshape(row , column)
모양 다시 만들기 #행 or 열의 숫자를 확신하지 못할때는 -1을 사용(reshape 안 -1은 컴퓨터가 계산을 담당한다)
np.max( ) 최대값 np.min( ) 최소값 np.mean( ) 평균 np.std( ) 최대편차
행렬끼리 동일한 위치의 요소들을 계산
np.add(a1, a2) 같은 행렬에 위치한 요소끼리 더하기
np.subtract(a1, a2) 요소끼리 빼기
np.multiply(a1, a2) 요소 곱하기
np.dot(a1, a2) 행렬 곱하기
pandas
(복습 겸)
a = pd.Series([1, 3, 5, 7])
자료형 Series : Key가 있는 리스트 #인덱스는 설정 가능([ ], index=[ ])
Series들을 모아 DataFrame으로!
DataFrame에서 하나의 Cell 값 꺼내기
하나의 데이터프레임 df에 대해
1) df['column'][0] # 열에 접근 후 Series index로 접근 ## 메인 호출법
2) df.loc[0]['column'] # 행에 접근 후 Series index로 접근
3) df.loc[0, 'column'] # 행 이름과 열 이름을 지정하여 접근 (loc 활용)
4) df.at[0, 'column'] # 행 이름과 열 이름을 지정하여 접근 (at 활용) ##for문 안에서 값을 바로 변경할때 용이
5) df.iloc[0, 7] # indexed-location 기반으로 index number 기준 행 & 열 지정하여 접근 ## index 번호 기반 접근시
pandas 기본 함수들
#익숙치 않아서 복습이 필요한 것들
#index 순서 기반 열 삽입
df.insert(index 순서, '열 이름', 조건)
#해당 열 값 구하기
df['column'].value_counts( )
#텍스트도 가능하다 #값에 따라 정렬하지 않으려면 value_counts(sort=False) #Series에 딸려 있는 함수 #뒤따라 plot(시각화 함수)을 쓰기 좋다. (plot을 일반 Series에 대응하면 각자 값에 맞춰 나와 그림이 구리다)
#열 안의 값들을 곧바로 교체하기
df['column1'] = df['column1'].replace([1, 2], ['a', 'b'])
#Series에 딸려 있는 함수
오늘의 TML
1) SMTP
메일을 주고 받기 위한 약속 / 메일을 주고 받는 네트워크의 약속 (웹사이트 약속 HTTP과 비슷)
import smtplib
서버와 연결 : smtplib.SMTP_SSL( ) => smtp.login( )
2) Post 요청
Requests의 일환. (get과 쌍벽) 동작을 했지만 url이 변하지 않는다 => Post 요청
크롬 개발자 도구 => Network => Name->Headers->Request URL, Request Method: Post 확인 => Form Data 확인(Post 요청 시 제출해야 하는 데이터)
requests.post(url, data=formdata).text
3) API를 쓸 때는 기술문서(설명서)에서 요청 변수/응답 결과들(+단위)을 확인
오늘의 맛보기
1) 왜도와 첨도
왜도(Skewness) : 데이터가 퍼져있는 정도. df['column'].skew( )
양과 음의 수로 방향을 구분한다. == 0에 가까울수록 중간에 가까운 정규분포 => 절대값을 보고 분포값이 0에서 벗어날수록 데이터가 한쪽에 치우쳐져 있다. (절대값 기준 3을 넘기지 않아야)
첨도(Kurtosis) : 데이터 분포가 뾰족한 정도 df['column'].kurtosis( )
첨도가 높으면 데이터가 한쪽으로 몰려있다. == 1에 가까울수록 정규분포 => (절대값 기준 8 또는 10을 넘지 않아야)
2) outlier
예외적인 데이터(평균 분포 정산을 방해한다) => outlier를 날리면 데이터 밀집 지역을 더 세밀하게 살펴볼 수도 있다.
df.boxplot(column='column1') : 박스 형태 시각화로 살펴본다. 수염과 quartile이 중요하다.
IQR(Interquartile Range) = Q3 - Q1 : Q1부터 Q3까지의 거리 : 안정적인 밸류로 본다.
# df_IQR = df[ (df['amount'] < Q3 + IQR * 1.5) & (df['amount'] > Q1 - IQR * 1.5) ]
#IQR이 보편적인 기법이나, 그대로 사용하기에는 무리가 있다. #Outlier 산정의 참고로만 사용하자. #극단적인 데이터라고 가치없는 데이터는 아니다. 데이터 친숙도에 영향.
오늘의 (다음) 공부할 것
1) json의 이해
2) 연속형 변수와 범주형 변수
'나는 코딩도 한다 > TIL' 카테고리의 다른 글
1224 / k_digital 14일차 / 세미프로젝트 (0) | 2020.12.25 |
---|---|
1223 / K_digital 13일차 / 파이썬(기초 통계분석) (0) | 2020.12.23 |
1221/ K_digital 11일차 / 파이썬(크롤링) (3) | 2020.12.21 |
1218 / K_digital 10일차 / 파이썬(nltk, TF-IDF) (1) | 2020.12.18 |
1217 / K_digital 9일차 / 파이썬(크롤링) (0) | 2020.12.17 |