일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- SQL
- 나혼자코딩
- 코딩독학
- 서브쿼리
- 로지스틱회귀
- 코딩
- 코드잇TIL
- numpy
- pandas
- 파이썬
- matplotlib
- 메소드
- Seaborn
- 행렬
- sql연습문제
- 결정트리
- 다항회귀
- 오늘도코드잇
- 머신러닝
- 데이터분석
- HTML
- 판다스
- 코딩공부
- 윈도우함수
- 선형회귀
- for반복문
- 코드잇 TIL
- 코드잇
- 경사하강법
- 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', ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YjI1X/btsHm0LlTtS/PX0az6XFqE9x9VOCtNTLU0/img.png)
1) HAVING집계된 쿼리를 조건에 의해 필터링 할 때 씁니다.WHERE을 쓰지 않은 이유는 WHERE 절은 집계 열에 대한 필터링을 허용하지 않기 때문입니다.이 때 HAVING 을 씁니다.SELECT account_id, SUM(total_amt_usd) sum_total_amt_usdFROM ordersGROUP BY 1HAVING SUM(total_amt_usd) >= 250000 2) 연습문제sales reps 중 자신이 관리하는 계정이 6개 이상인 사람은 몇 명입니까? 34명 21개 이상의 주문이 있는 accounts는 몇 개입니까? 120개 주문이 가장 많은 계정은 어디입니까? Leucadia National 모든 주문에서 총 30,000 USD 초과를 지출한 계정은 어디입니까? 가장 많이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccgx38/btsHncLpvQa/y51fw8B8Oj9zUuMbqJCTz0/img.png)
1) DISTINCTDISTINCT문은 중복된 데이터를 제거하고 데이터를 조회할 때 사용합니다.DISTINCT문을 사용하면 테이블에 중복되는 데이터를 한번만 출력하여 고유 값만을 추출합니다.일부 열을 기준으로 그룹화하고 싶지만 집계를 포함하지 않을 때 GROUP BY 대신 사용합니다.SELECT 문에서 사용되며 SELECT 문에 작성된 모든 열에 대해 고유한 행 제공합니다.SELECT DISTINCT column1, column2, column3FROM table1;아래는 잘못된 예시입니다.SELECT DISTINCT column1, DISTINCT column2, DISTINCT column3FROM table1;결과 예시 2) 연습문제DISTINCT를 사용하여 둘 이상의 지역과 연결된 계정이 있는..