통계 4/ 전처리 및 시각화/ 코드카타/ 파이썬
통계
p 값이 유의 수준보다 작거나 같으면 귀무 가설을 기각하고 유의한 차이가 있다는 결론을 낼 수 있다.
p 값이 유의 수준보다 크면 귀무가설을 기각하지 못하며 큰 차이가 존재한다는 결론을 낼 수 없다.
이때 유의 수준은 대부분 5% (0.05)이다.
전처리
-Pandas : 다양한 라이브러리를 사용하여 데이터를 불러오고 변환, 분석
-DataFrame : 표 형태 (index와 columns로 구성)
-Series : 하나의 속성을 가진 데이터 집합 ; 표에서 열 1줄
-set_index() : 특정 컬럼에 들어 있는 값을 인덱스로 활용
-reset_index() : 핸져 인덱스를 0부터 시작하는 정수로 변경
-info() : 데이터 정보 파악
-describe() : 기초통계량 확인
-astype() : 데이터 타입 변경
-iloc[로우,컬럼] : 정수 기반의 인덱스 사용해서 데이터 선택
-loc[로우, 컬럼] : 레이블 기반의 인덱스를 사용해서 데이터 선택
-[] : 슬라이싱
-isin() : 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드, 원하는 조건에 해당하는 데이터를 빠르게 필터링 및 선택
-concat() : 데이터프레임을 위아래 혹은 좌우로 연결
-merge() : join과 유사
-> how :병합 방법을 나타내는 매개변수 (inner, outer, left, right)
-> on : 병합 기준이 되는 열 이름
-groupby : 데이터 프레임을 그룹화하고 그룹 단위로 데이터를 분할, 적용, 결합, 집계, 변환, 필터링
-pivot_table()
-sort_values() : 컬럼 기준으로 데이터 정렬
-sort_index() : 인덱스를 기준으로 데이터 정
SQL 코드카타
가격이 제일 비싼 식품의 정보 출력하기
food_product 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품 분류 식품 가격을 조회
- 전체 조회 -> *
- 가격이 제일 비싼 -> max(price)
- 가격이 제일 비싼 = 조건 -> where
- 서브쿼리 작성
select *
from food_product
where price = (select max(price) from food_product);
Monthly Transcation 1
월별, 국가별, 거래 건수와 총액, 승인된 거래 건수와 총액을 찾는 SQL 쿼리를 작성하세요.
- 월별 -> date_format()
- 거래 건수 -> coutn(id)
- 승인된 거래 건수 -> state = 'approved' -> sum
- 승인된 거래 총액 -> state ='approved' -> sum
- case when
select date_format(trans_date,'%Y-%m') month,
country,
count(id) as trans_count,
SUM(CASE WHEN state = 'approved' then 1 else 0 END) as approved_count,
SUM(amount) as trans_total_amount,
SUM(CASE WHEN state = 'approved' then amount else 0 END) as approved_total_amount
FROM Transactions
GROUP BY month, country
Employee Names
직원 이름을 알파벳 순서대로
- 알파벳 순서 -> name asc;
select name
from employee
order by name asc;
파이썬 코드카타
크기가 작은 부분 문자
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것
t="3141592"이고 p="271" 인 경우,
t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개
- p의 길이 <= t의 길이 <= 10000 -> len(p) len(t)
- 슬라이싱 사용
def solution(t, p):
answer = 0
for i in range(0, len(t)):
if i+len(p) > len(t):
continue
else:
if int(t[i:i+len(p)])<=int(p): #슬라이싱 사용
answer += 1
return answer
최소 직사각형
모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return하는 함수 완성
- 가로 w 세로 h
- sizes에서 값 추출 -> 큰 값 = w, 작은 값 = h -> for문 사용
- .append사용
- 모든 명합 수납 -> max
def solution(sizes):
#가로 w 세로 h
w = []
h = []
#sizes에서 값 추출 -> 큰 값 = w, 작은 값 = h
for i in sizes :
w.append(max(i))
h.append(min(i))
#가장 긴 것들 곱하기
return max(w) * max(h)
파이썬
Human 클래스 만들기
class Human:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
areum = Human("아름",25,"여자")
print(areum.sex) #.name / . age / .sex
del 사용
class Human:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def who(self):
print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex) )
def setinfo(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def __del__(self):
print("나의 죽음을 알리지 마라 ")
areum=Human("아름", 25, "여자")
del(areum)
class stock:
def __init__(self, name, code):
self.name = name
self.code = code
def set_name(self, name):
self.name=name
def set_code(self, code):
self.code=code
def get_name(self):
return self.name
def get_code(self):
return self.code
-set은 클래스의 속성을 설정하는 역할, 객체의 속성을 외부에서 변경
-get은 객체의 속성을 가져오는 역할
import random
class account:
def __init__(self, name, balance):
self.name = name
self.balance = balance
self.bank = "SC은행"
num1 = random.randint(0,999)
num2 = random.randint(0,99)
num3 = random.randint(0,999999)
num1 = str(num1).zfill(3)
num2 = str(num2).zfill(2)
num3 = str(num3).zfill(6)
self.account_number = num1 + '-' + num2 + '-' + num3
-.zfill : 문자열의 왼쪽에 0을 추구하여 문자열의 길이를 지정된 길이로 맞춤
-random : 랜덤 숫자를 생성
-random.randint(a,b) : a부터 b 사이의 랜덤 숫자 생성
주제 생각하기
- 인구가 줄어들면, 어느 분야의 소비가 줄어들까?
- 교통비가 오르면 그와 관련된 카드를 많이 발급할까? -> 고객 행동 분석?