| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- funnel
- advent of sql
- 윈도우함수
- SolveSQL
- leetcode
- python
- pandas
- 프로그래머스
- 리텐션
- MYSQL
- dense_rank
- 데이터리안
- 취준
- rank
- Retention
- regexp
- 퍼널분석
- 윈도우 함수
- 순위함수
- Datarian
- 독서
- 린분석
- 그로스해킹
- 누적합
- LEFTJOIN
- SQL
- 데이터분석
- 신입 데이터분석가
- 서브쿼리
- row_number
- Today
- Total
목록Python (11)
데이터 분석
주소 데이터 다루기 ✅ 주소 정보가 들어가 있는 address 컬럼을 정제하여 시, 도 정보를 담고 있는 'sido' 컬럼과 시, 군, 구 정보를 담고 있는 'sigungu' 컬럼을 생성하자. 그다음 각 행정구역별 카페 개수를 집계해 보자.import pandas as pddf = pd.read_csv('/content/drive/MyDrive/cafes.csv')df.head() 💡주소 데이터 분리를 하기 위해 str Accessor 활용df['sido'] = df['address'].str.split().str[0]df['sigungu'] = df['address'].str.split().str[1]df.head() ✔️각 행정구역별 카페 개수를 집계하고, 카페 개수가 많은 순으로 정렬ta..
1) 등분산성 검정scipy의 stats에서 이를 위한 bartlett-killen, levene, fligner 등이 있음둘 이상의 정규성을 만족하는 데이터 집합에 대해 모분산이 같은 지 확인하기 위한 검정에는 bartlett 사용정규성을 만족하지 않는 경우 levene, fligner를 사용 2) 등분산성 검정의 가설H0(귀무가설) : 등분산성을 만족한다H1(대립가설) : 등분산성을 만족하지 못한다'p-value > 유의수준', '검정통계량 3) 등분산성 검정의 종류bartlett test : 정규성을 충족하며, 데이터셋의 크기가 서로 다른 2개 이상의 집단 간에도 사용 가능- 카이제곱 검정을 사용하여 그룹 간 분산 차이를 비교- 단, 정규성이 만족되지 않으면 검정 결과를 신뢰할 수 없음leven..
정규성 검정이란? ● 데이터셋의 분포가 정규분포를 따르는지 검정하는 것을 정규성 검정이라 한다.● 모수 검정은 데이터의 정규성을 확인하는 검정 과정을 진행한 후에 수행된다. ● 중심극한정리에 의해 표본의 크기가 30보다 크면 표본평균의 분포는 모집단의 분포 모양과는 관계없이 정규분포에 가까워진다.● 데이터 수가 30이 넘어도 데이터 특성에 따라 정규분포를 만족하지 않을 수 있어 확인하는 것이 좋다. 정규성 검정 종류에는?Shaprio-Wilks Test표본수가 5000미만인 데이터셋에 적합한 검정 방법, pvalue 반환shaprio(x)Kolmogorov-Smirnov Test두 개의 데이터셋이 같은 분포인지 아닌지 검정하는 방법, pvalue 반환kstest(x1, x2)Normal Test20개 ..
DataFrame.pivot() DataFrame.pivot() 메서드는 Pandas에서 데이터를 재구조화하는 데 사용한다. 이를 통해 열(column)을 재배치하거나 데이터의 행(row)과 열을 기준에 따라 재구성할 수 있다. 직접적인 데이터 변환:고유한 값만을 허용하며, 중복 값이 있을 경우 오류 발생세 가지 주요 매개변수:index: 새로운 DataFrame에서 행으로 사용할 열columns: 새로운 DataFrame에서 열로 사용할 열values: 새로운 DataFrame에서 값으로 사용할 열# 1아래 국가별 5세 이하 사망 비율 통계 자료가 있다. 위 데이터를 나라에 따른 년도별 사망률을 알아볼 수 있게 데이터를 재구조화 해보자. df2.pivot(index='Location', columns=..
날짜 데이터 다루기✔️ object 타입의 '(년-월-일:시)' 컬럼을 pandas에서 인식할 수 있는 datetime 형태로 변경해보자. 우선 pandas에서 datetime으로 인식 할 수 있는 데이터 형태는 다양하다. ● 날짜만 포함된 형식 : YYYY-MM-DD | YYYY/MM/DD | MM/DD/YYYY ● 날짜와 시간 포함된 형식 : YYYY-MM-DD HH:MM:SS | YYYY/MM/DD HH:MM | YYYY-MM-DDTHH:MM:SS제공 데이터에서 해당 컬럼의 형식이 '2021-05-15:15' 와 같이 되어있기 때문에 단계적으로 ' YYYY-MM-DD HH:MM:SS ' 형태로 가공하고자 한다. # Step 1 str 문자열 메소드를 활용해 ':'를 기준으로 문자열을 분..
날짜 데이터 다루기.dt.weekday VS .dt.day_name() VS .dt.strftime('%w')df['weekday'] = df['Yr_Mo_Dy'].dt.weekday # int returndf.insert(14, 'weekdayName', df['Yr_Mo_Dy'].dt.day_name())df.insert(14, 'weekday_1', df['Yr_Mo_Dy'].dt.strftime('%w'))df.head() # .dt.weekday()월요일은 0, 화요일은 1, ... , 일요일은 6에 대응하는 숫자를 반환한다. # .dt.strftime('%w')일요일은 '0', 월요일은 '1', ... , 토요일은 '6'에 대응하는 문자를 반환한다. # .dt.day_name()요일의 이름을 ..
문제 Yr_Mo_Dy에 년도가 2061년 이상의 경우에는 모두 잘못된 데이터이다. 해당경우의 값은 100을 빼서 새롭게 날짜를 Yr_Mo_Dy 컬럼에 정의하자. 해결방법 1df['Yr_Mo_Dy_1'] = df['Yr_Mo_Dy'].apply(lambda x : x.replace(year = x.year - 100) if x.year >= 2061 else x) ✅ Series.apply( ) : 각 날짜를 개별적으로 처리하기 위함 ✅ x.replace( ) : datetime 객체를 다루는 방식 중 하나로, 날짜에서 특정 구성 요소(예: 연도, 월, 일 ... )를 변경하는 데 사용 ☞ datetime.replace( ) 메소드는 날짜/시간 객체의 일부 속성을 새로운 값으로 대체하는 기능을 제공● y..
pd.Series.map() Series.map() : Series 객체에 있는 각 요소에 대해 변환을 수행할 수 있다. ● 함수를 적용 ● dictionary를 사용해 매핑 # 1Income_Category의 카테고리를 map 함수를 이용하여 다음과 같이 변경하여 newIncome 컬럼에 매핑해보자.(Unknown : N / Less than $40K : a / $40K - $60K : b / $60K - $80K : c / $80K - $120K : d / $120K + : e) df['newIncome'] = df['Income_Category'].map({'Unknown':'N', 'Less than $40..
pd.DataFrame.unstack() 'neighbourhood' 값과 'neighbourhood_group' 값에 따른 'price' 컬럼의 평균을 계산한 데이터프레임을 가정하자.df.groupby(['neighbourhood', 'neighbourhood_group'])[['price']].mean() df.unstack() ● 데이터프레임이 위와 같이 멀티인덱스를 사용할 때, 하위 레벨 인덱스를 컬럼으로 옮겨 데이터를 재구조화 가능 ● 기본적으로 가장 하위 레벨(-1)을 컬럼으로 이동하며, 다른 레벨을 지정하려면 level 파라미터를 사용 가능df.groupby(['neighbourhood', 'neighbourhood_group'])[['price']].mean().unstack()..
특정 조건에 부합하는 값만 변경하기 ✔️df의 데이터 중 아래와 같이 item_name 값이 'Izze'인 데이터를 'Fizzy Lizzy'로 변경하고자 한다. (1) Series.replace() 활용df['item_name'] = df['item_name'].replace('Izze', 'Fizzy Lizzy') 값 전체를 대상으로 변경하기 때문에 regex=True 옵션을 필요로 하지 않는다. (2) .loc 활용df.loc[df['item_name'] == 'Izze', 'item_name'] = 'Fizzy Lizzy' 특정 조건을 만족하는 행과 열을 지정하여 값만 변경할 수 있는 방법이다. 단순 대체가 필요한 상황이라면 방법 (1)도 적합하겠지만, 조건에 따른 변경이 빈번한 상황에 대응하기..