[25.02.05] 사전캠프11일차 연휴스터디+아티클 스터디 +변수선언,자료형,문자열,리스트,딕셔너리

김명서·2025년 2월 5일
1

TIL_sparta

목록 보기
12/62
post-thumbnail

연휴스터디

5주차 숙제문제

❓음식 타입별, 연령별 주문건수 pivot view 만들기 (연령은 10~59세 사이)

아.......왜 자꾸 이렇게 나올까 ㅠㅠㅠㅠㅠㅠㅠ
cuisine_type이 Korean만 조회됨..

서브쿼리 안에서 cuisine_type, age별로 group by를 해주지 않아 생기는 문제였다.

첫번째, 두번째가 내가 시도했었지만 실패했던 결과고,
세번째 코드가 정답에 해당하는 코드이다.

간단히 오류원인을 정리해봤다
group by가 이렇게나 중요하구나 !!
직장에서 보고를 올려야할 때 이런 실수를 범했던거라면,, 정말 큰 실수였을 것이다..
.
.

걷기반 문제

2) 이제 좀 벌었으니 flex 한 번 해볼까요?!

#1. 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.

select product_name, price
from products

#2.테이블에서 제품 이름에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.

select*
from products
where product_name like '%프로%'

#3.테이블에서 제품 이름이 '갤'로 시작하는 모든 제품을 선택하는 쿼리를 작성해주세요.

select*
from products
where product_name like '%갤'

#4.테이블에서 모든 제품을 구매하기 위해 필요한 돈을 계산하는 쿼리를 작성해주세요.

SELECT sum(price) total_price
from products

여기까지는 그냥 노트북으로 풀었는데,
Dbeaver에서 데이터베이스 생성이 아무리 시도해봐도 안돼서.. 그냥 수기로 쓰면서 공부했다..^^&


2/5

아티클스터디

https://yozm.wishket.com/magazine/detail/1708/
[주제]

  • 데이터분석가에게 코딩이 필요한 이유

[아티클 요약]

  • 개발자 역량을 확인하기 위한 코딩 시험: 프로그래밍 언어를 사용하여 주어진 문제를 잘 해결할 수 있는지 [기술적인 부분을 확인하는 시험]
    데이터 분석가에게 필요한 코딩 : 데이터를 분석/활용하여 얼마나 잘 풀어내는가
    채용 공고에 자주 등장하는 내용
    1)데이터를 활용하여 현재 운영 중인 서비스/ 프로덕트 고도화
    2)데이터 기반 의사 결정을 위한 전략 및 분석 지원
    3)전사적 목표 달성을 위한 가설 설정 및 이를 검증하기 위한 실험 설계 분석
    4)인사이트 제공을 위한 지표 정의 및 대시보드 및 리포트 제작
    ex. 소방청
    주요 업무 고도화= 위험에 처한 사람을 더 빠르고 안전하게 구조하는 것
    어느 위치에서 어떠한 유형의 사고가 자주 일어나는지를 파악, 선제적으로 난간을 설치하는 등 안전을 강화 -⇒ 결과”약 22%의 출동건수 감소 및 사상자 수 43%감소와 같은 사고 저감 효과”달성

ex. 오바마 캠프의 A/B테스트 사례

실험 설계/분석
좋아요 버튼을 통해 수집되는 유저 데이터, 이메일 수신자 그룹 데이터, 오바마 홍보 웹페이지에 접속한 이후의 로그 데이터 등 다양한 데이터를 활용해서 세그먼트 별 가장 효과적은 캠페인을 진행할 수 있도록 A/B 테스트를 진행

ex.서울시 심야버스
데이터 기반 의사결정 전략

심야버스는 일반 대중교통과 다르게 추가 수요를 감당하는 관점이기 때문에 수요에 따른 지속적인 최적화가 필요 ⇒ 서울시는 통신사 KT 와 협업(휴대전화 이력 데이터를 통해 어느 지역에 심야 인구가 많은지 파악)

이를 달성하기 위한 사례에서 공통으로 나타난 특징 5가지

1.분석할 수 있는 데이터가 준비되었는가
2.서비스를 통해 풀고자 하는 문제를 명확하게 인지했는가(문제정의)
3.복잡한 혹은 최신 논문에 나오는 데이터 분석 기법을 활용하지 않았다(데이터분석에 대한 이해)
4.다양한 팀과 협업을 진행(타 직군과의 협업)
5.특별히 어떤 툴을 썼다 하는 내용은 언급되지 않는다
(어떤 문제를 왜 풀어서 무슨 변화를 만들 수 있는지 > 문제를 어떻게 풀 것인지)

💥따라서 위와 같은 능력을 보기 위해서는 코딩테스트보다 과제 전형이 대체로 더 효과적이다

➰데이터 직군의 코딩테스트에서 많이 언급되는 예시들

-머신러닝 모델의 평가 지표 계산

-sql을 활용한 메트릭 계산

-텍스트 등의 데이터 파싱 및 전처리

~> [scientific programming]이라 표현

그외

통계학 : 상당히 많은 데이터 분석 방법들이 통계학 기반
통계학에 대한 이해가 깊을수록 데이터를 더 온전히 활용할 수 있게됨

심리학 : 포그 행동 모델 같은 소비자 심리 기반 이론에 대한 지식이 있으면 좋다
(고객이 다음 행동을 진행하기 위해서 필요한 보상과 이를 막는 장벽 등을 모델링하고 설계하는 조금 깊은 심리학 )

[인사이트]
소방청이나 서울시(심야버스노선) 데이터 분석 사례에서 본 것처럼, 복잡한 데이터들을 한눈에 볼 수 있도록 하는 일의 중요성과 필요성을 다시한 번 되새길 수 있었다. 그동안 이리저리 과제를 하며, 이렇게 시각화 된 자료들만 접했었다면, 앞으로 데이터를 분석하는 역량과 기술을 길러 목표에 맞게 raw데이터부터 활용할 수 있는 사람으로 성장하고싶다. 따라서 코딩이나 머신러닝. sql과 같은 툴에 대한 실력을 키우고 싶은 마음이 더 커졌다.

개발직무와 데이터분석직무에서 필요한 코딩 역량이 살짝 다르다는 것도 이 아티클을 통해서 제대로 알 수 있었다. 그전에는 나도 개발직무 종사자 처럼 코딩 실력을 갖춰야할 것 같아 막막함이 컸는데, 지금은 그저 데이터 분석을 좀 더 잘하기 위한 기술?능력? 일종의 도구처럼 생각해 적재적소에 효율적으로 활용하는 데에 중점을 두고 학습하려한다.

.
.

python

1-3. 변수 선언과 자료형

변수란? 값을 담는 박스!

변수 선언

변수이름=값

출력할 때

print()                                                                                                                

사칙연산(숫자 간에만 가능) 이후!
3의 2승은 어떻게 계산하는가?

=> 🔴구글링

(모르면 구글링을 통해 몇개의 글을 읽어보고 공통적인 내용을 찾아보자)

  a=3
  b=2
  print(a**b)

나누기 후 나머지는?

a=11
b=7
print(a%b)

언제쓰나?
-> 동등하기 3가지를 나눠줄 때 [나머지가 0일때, 1일때, 2일때로 case 나눠서 명령]
-> 짝수 홀수 판단할 때 (2로나눠서 나머지가 0이면 짝, 1이면 홀)

변수선언은 쉽게 말해, 컴퓨터가 기억하고 있는 메모리를 가르키는 것

Bool 자료형

x = True # 참
y = False # 거짓

💫소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러 발생

z = true # name 'true' is not defined
True = 1 # True/False는 변수명으로 쓸 수 없다!

🔽비교연산자

4 > 2 # True 크다
5 < 1 # False 작다
6 >= 5 # True 크거나 같다
4 <= 4 # True 작거나 같다
3 == 5 # False 같다
4 != 7 # True 같지 않다

🔽논리연산자

a = 4 > 2 # True '이렇게 참인 식에 not을 쓰면'
not a # False
➡NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다.

a and b # False
➡AND 연산자로 모두 참이어야 참을 반환한다.

a or b # True
➡OR 연산자로 둘 중 하나만 참이면 참이다.

🔶문자열 주의하기
1.

a = 1
b = "a"
c = a
print(a, b, c) # 1 "a" 1
  1. '2'와 str(2)의 결과값은 같다

.
.
.


문자열 연산

first_name='myoungseo'
last_name=' kim'

print(first_name+last_name)

✔ myoungseo kim 출력됨 => 문자끼리 더한 것

text = 'abcdefghijk'
result=text
print(result)

✔요롷게 하면 abcdefghijk 가 나온다

💡글자수 길이를 세고싶다면
len()를 이용해서,

text = 'abcdefghijk'
result=len(text)
print(result)

11

이 나오게 된다!

➰글자수 자르기(인덱싱과 슬라이싱)

인덱싱

f="abcdefghijklmnopqrstuvwxyz"
f[1] # b 파이썬은 숫자를 0부터 셉니다

슬라이싱

f[4:15] # efghijklmno
f[4]부터 f[15] 전까지, 총 15-4=11개!

f[8:] # ijklmnopqrstuvwxyz
f[8]부터 끝까지, 앞의 8개 빼고!

f[:7] # abcdefg
시작부터 f[7] 전까지, 앞의 7개!

f[:] # abcdefghijklmnopqrstuvwxyz
처음부터 끝까지

🔻응용

text = 'abcdefghijk'
result=text[3:8]
print(result)

cf. text[:] 는 그대로 나옴

원하는 부분만 추출하기

myemail='kms30318@naver.com'
result=myemail
print(result)

✔이렇게 작성해주면 내 이메일 전체가 그대로 나온다.

myemail='kms30318@naver.com'
result=myemail.split('@')
print(result)

['kms30318', 'naver.com']
✔이렇게 나오고 왼쪽부터 0번째 1번째 이다

myemail='kms30318@naver.com'
result=myemail.split('@')[1]
print(result)

naver.com
✔그럼 이렇게 나오고 여기서 한번 더 . 을 기준으로 split 해준다.

myemail='kms30318@naver.com'
result=myemail.split('@')[1].split('.')[0]
print(result)

naver
✔최종적으로 이렇게 완성 !


quiz_1. "sparta"의 앞의 3글자인 "spa"만 출력해봅시다.

text='sparta'
result=text[:3]
print(result)

spa
easy easy~

quiz_2. Q. 전화번호의 지역번호 출력하기

phone='02-123-1234'
result= phone.split('-')[0]
print(result)

02
재미있다!
.
.

1-5. 리스트와 딕셔너리\

리스트란?
순서가 있는, 다른 자료형들의 모임.
다른 자료형들에는 리스트도 포함될 수 있다!
.
🔹'감'만 추출해보자✔이렇게!
(파이썬에서는 0부터 센다는 것을 잊지말기)

🍕리스트의 길이도 len() 함수를 사용해서 잴 수 있다

-append

🔻아래처럼 리스트도 슬라이싱이 가능하다.

🔻-1 = 맨마지막

-오름차순/내림차순

a_list=[2,3,7,8,4]
a_list.sort()
print(a_list)

이렇게 하면 오름차순 !

a_list=[2,3,7,8,4]
a_list.sort(reverse=True)
print(a_list)

이렇게 하면 내림차순!
나중에 알고리즘 문제를 풀 때 사용할 수 있다.

💡 리스트 안에 내가 찾는 값을 확인하고 싶을 때

a_list=[2,3,7,8,4]
result=(8 in a_list)
print(result)

있으면 True, 없으면 False로 나온다


딕셔너리

아래 문제로 보자면, dict의 name은 'key'라고 부르고 'bob'은 key_value에 해당한다

a_dict안에는 리스트도 들어갈 수 있다

-key를 추가하고싶다면?

a_dict={'name':'bob', 'age':27, 'friend':['영희','철수']}
a_dict['height']=180
print(a_dict)

-있는지 없는지 확인하고 넣어볼까?

a_dict={'name':'bob', 'age':27, 'friend':['영희','철수']}
a_dict['height']=180
result=('height' in a_dict)
print(result)

True

a_dict={'name':'bob', 'age':27, 'friend':['영희','철수']}
result=('height' in a_dict)
print(result)

False


리스트와 딕셔너리의 조합
ex.리스트 하나하나에 딕셔너리가 들어가있음

.

quiz_smith의 science 점수를 출력해보세요

❌ 에러 원인, 'score' 값들은 딕셔너리이기 때문에, 변수명을 불러와야한다.![]![]⭕정답


긴 연휴가 끝나고, 5일간 해외여행을 다녀와서 다시 공부 감을 잡을 필요가 있는 것 같다.
정말 행복하게 다녀와서.. 6월말까지 쭉 달릴 힘을 얻은 것 같다.
오늘은 새벽비행기를 타고 도착한지 얼마 안되었어서, 낮에 너무 졸음이 몰려왔다..ㅠ 그래서 목표했던 것까지는 최대한 해보려하다보니 자습시간이 길어졌다. (스터디 끝나고 잠을 잠깐 잤다)
오늘 마저 푹 쉬고, 내일부터 다시 열심히 진도를 따라잡아야겠다! 오늘 파이썬을 처음 들어봤는데, 나름 재미있는 것 같다. 나에게 스파르타 방식이 잘 맞는 듯 하다~! 내일은 함수를 중점적으로 다뤄봐야겠다!

profile
경영학도의 데이터분석 성장기💥

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN