일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 오늘도코드잇
- for반복문
- 코드잇TIL
- 결정트리
- 행렬
- 코딩
- 경사하강법
- 판다스
- numpy
- 윈도우함수
- 서브쿼리
- 코딩독학
- 코드잇
- 코딩공부
- 나혼자코딩
- 로지스틱회귀
- 코드잇 TIL
- CSS
- pandas
- SQL
- sql연습문제
- 선형회귀
- Seaborn
- 다항회귀
- matplotlib
- 데이터분석
- 파이썬
- 머신러닝
- HTML
- 메소드
- Today
- Total
목록분류 전체보기 (179)
Coding Diary.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cXUXpx/btsHvwba6Bb/NQ4r76q7hRRZJObYyiKKw1/img.png)
1. 텍스트 데이터 정제 함수 만들기import nltkfrom nltk.tokenize import word_tokenizefrom collections import Counterfrom text import TEXTnltk.download('punkt')corpus = TEXTtokenized_words = word_tokenized(corpus)#등장 빈도 기준 정제 함수def clean_by_freq(tokenized_words, cut_off_count): #파이썬의 Counter 모듈을 통해 단어의 빈도수 카운트하여 단어 집합 생성 vocab = Counter(tokenized_words) #빈도수가 cut_off_count 이하인 단어 set 추출 uncommon_wo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dUd0v9/btsHvJIblRb/c8aOLU0YIcmWomHg7XmzB1/img.png)
사이킷런으로 할 수 있는 전처리 도구에 대해 몇 가지 알아보겠습니다. 1. Scikit-learn Pre-processing 사이킷런 불러오기import sklearnimport numpy as mpfrom sklearn.preprocessing import OneHotEncoder, StandardScaler, OrdinalEncoderfrom sklearn.imput import SimpleImputerfrom sklearn import set_config#sklearn 패키지의 transform과 fit_transform 함수가 pandas DataFrame 형식으로 결과를 출력하게 하는 설정set_config(transform_output = "pandas") 2. Scaling (데이터 표준화)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcOuMs/btsHu8uttIQ/PxMzgdrsB6W2aSYlafRDx1/img.png)
데이터 품질을 점검할 때는 일반적으로 완전성 문제를 먼저 처리하는 것이 좋습니다. 그러면 이후에 누락 데이터로 인한 정제 과정을 반복할 필요가 없기 때문입니다. * 결측 데이터 및 데이터 정돈 문제문제 1) 하나의 열에 여러 개의 변수 존재문자열 처리 및 unpivoting을 통해 해결합니다.(step 1) 결측 데이터 처리하기 (Clean Missing Data)#데이터 불러오기import pandas as pdimport numpy as nppatients = pd.read_csv('patients.csv')treatments = pd.read_csv('treatment.csv')adverse_reactions = pd.read_csv('adverse_reaction.csv')#결측값 존재 확인 및..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cMCWwC/btsHsrnOPMm/zVqjbBIFk0uz2exWcOuBC1/img.png)
1. 문제1) total_amt_usd 판매액이 가장 많은 각 region에서 sales_rep의 name을 제공하십시오.sales_rep과 관련된 total_amt_usd 총계, region 나타내기SELECT s.name rep_name, r.name region_name, SUM(o.total_amt_usd) total_amtFROM sales_reps sJOIN accounts aON a.sales_rep_id = s.idJOIN orders oON o.account_id = a.idJOIN region rON r.id = s.region_idGROUP BY 1,2ORDER BY 3 DESC; 각 region에 대한 total_amt_usd 가져오기SELECT region_name, MAX(tot..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCpmYn/btsHsYrTV5S/B5WQQX5p3FlAewJF2ulHLk/img.png)
import pandas as pdimport numpy as np#read dataframedf = pd.read_csv('assessment.csv')#Drop a rowsdf.head()df.describe()df.info()df.sample(5, random_state = 70)df.loc[df['assessment score 2'].isin(['#'])]df['assessment score 2'] = df['assessment score 2'].replace({'#':np.nan})dfdf.loc[df['assessment score 2'].isin(['#'])]df.isna().sum() Option 1 : drop rowscleaned_df = df.dropna()cleaned_df.desc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ofM8w/btsHqvyx6QQ/l76zRWnfURyicNBoEs5DfK/img.png)
#import pandas and numpyimport pandas as pdimport numpy as np#Load small test scores dataframetest_scores = pd.read_csv('test_scores.csv')#Make a copy of the dataframeclean_scores = test_scores.copy()clean_scores.head()if_duplicated = clean_scores.duplicated(['Name', 'Age'])if_duplicated Get duplicated rows#Access the duplicated rows for duplicates in the Name and Age columnduplicate_rows = clea..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Wgszv/btsHrwhZLWa/h5NOmDE9pFyWoRIf8blsE1/img.png)
1. 문제각 계정에서 제품을 마케팅하는 데 가장 많이 사용한 (최댓값) 채널은 무엇입니까?같은 채널이 얼마나 자주 사용되었습니까?1) channel과 각 channel이 발생환 횟수 파악하기SELECT a.id, a.name, we.channel, COUNT(*) ctFROM accounts aJOIN web_events weON a.id = we.account_idGROUP BY a.id, a.name, we.channelORDER BY a.id; 2) 위의 서브쿼리를 t1으로 하고 계정 이름별 채널 집계치의 최댓값 구하기SELECT t1.id, t1.name, MAX(ct)FROM (SELECT a.id, a.name, we.channel, COUNT(*) ct FROM accounts a JO..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nPbCb/btsHq0jknPn/rV40K7LLjA1yrweUDiSe80/img.png)
1. With기존 테이블에서 테이블을 "의사 생성" 하고 메인 쿼리 상단에 임시 테이블을 시각적으로 범위를 정하려는 경우WITH subqurery_name (column_name1, ...) AS (SELECT ..._)SELECT ... 2. Nested임시 테이블이 더 큰 쿼리 내에서 필터 역할을 하도록 할 때 사용WHERE 절 안에 위치SELECT s.s_id, s.s_name, g.final_gradeFROM student s, grades gWHERE s.s_id = g.s_id IN (SELECT final_grade FROM grades g WHERE final_grade > 3.7 );3. Inlinewith와 동일한 방식으로 사용되나 메인 쿼리 위에 있는 임시 테이블 대..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NvFrl/btsHmQvIduK/kjdT8qQgFkQUuDEvrY2Tbk/img.png)
1) CASECASE 문은 항상 SELECT 절에 써야 함CASE는 WHERE, THEN, END 구성요소를 포함해야함ELSE는 다른 CASE 조건을 충족하지 않는 경우를 위한 선택적 구성 요소WHEN 사이에 조건 연산자 (WHERE) 를 사용하여 조건문 만들 수 있음 (AND, OR 사용 가능)예시 SELECT id, account_id, occurred_at, channel, CASE WHEN channel = 'facebook' OR channel = 'direct' THEN 'yes'ELSE 'no' END AS is_facebookFROM web_eventsORDER BY occurred_at SELECT account_id, occurred_at, total,CASE WHEN total > 5..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UwJhm/btsHornBg4s/NM2gTutv04lLgtKMciLzX1/img.png)
1) DATE_TRUNC날짜, 시간 열의 특정 부분으로 날짜를 자를 수 있습니다.RESULTINPUT2024-04-01 12:15:01DATE_TRUNC('second', 2024-04-01 12:15:01)2024-04-01 00:00:00DATE_TRUNC('day', 2024-04-01 12:15:01)2024-04-01 00:00:00DATE_TRUNC('month', 2024-04-01 12:15:01)2024-01-01 00:00:00DATE_TRUNC('year', 2024-04-01 12:15:01) 2) DATE_PART하루 중 특정 부분만 빼내고 싶은 경우dow : day of week, 0(일요일)~6(토요일) 사이의 값을 반환RESULTINPUT1DATE_PART('second', ..