[스파르타코딩클럽]데이터분석 과정/TIL,WIL

코드카타 / 파이썬 / 판다스

설득이 2024. 1. 26. 20:00

SQL 코드카타

조건에 맞는 회원수 구하기
2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력
  • 가입년도가 2021년 -> between 2021-01-01 and  2021-12-31
  • 나이가 20세 이상 29세 이하 -> between 20 and 29
SELECT COUNT(*) FROM USER_INFO 
WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31' 
AND AGE BETWEEN 20 AND 29;

 

Game Play Analysis 5
첫 로그인과 재접속 시기를 비율로 나타내고, 2번째 자리에서 반올림
  • 반올림 -> round
  • 비율 계산 -> /
  • 날짜 계산 -> datediff
  • 최근접속 -> min
SELECT ROUND(SUM(login)/COUNT(DISTINCT player_id), 2) AS fraction
FROM (
  SELECT
    player_id,
    DATEDIFF(event_date, MIN(event_date) OVER(PARTITION BY player_id)) = 1 AS login
  FROM Activity
) a

 

Type of Triangle
Equilateral: It's a triangle with  sides of equal length.
Isosceles: It's a triangle with  sides of equal length.
Scalene: It's a triangle with  sides of differing lengths.
Not A Triangle: The given values of A, B, and C don't form a triangle.
  • ~때 : case when
  • 3개가 같다 -> A=B AND B=C
  • 2개만 같다 -> A=B OR B=C OR A=C
SELECT  CASE WHEN A + B > C AND B + C > A AND A + C > B THEN
        CASE WHEN A = B AND B = C THEN 'Equilateral'
            WHEN A = B OR B = C OR A = C THEN 'Isosceles'
            ELSE 'Scalene'
            END
            ELSE 'Not A Triangle'
            END
FROM TRIANGLES;

 


파이썬 코드카타

문자열 내 마음대로 정하
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬
예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬
  • FOR문 사용
  • N번째 글자 -> [i[n]+i
  • 정렬 -> sort
def solution(strings, n):
    answer = []
    #string에서 추출하기
    for i in strings : 
        answer.append(i[n]+i) #n번째 글자
    answer.sort() #정렬
    return [i[1:] for i in answer]

 

K번째
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하기
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성
  • 주어진만큼 자르기 -> i[0]-1:i[1]
  • 정렬 -> sort
def solution(array, commands):
    answer = []
    for i in commands:
        a = array[i[0]-1:i[1]]#주어진만큼 자르기
        a.sort() #정렬
        answer.append(a[i[2]-1])
    return answer

 


파이썬

초보용 300제를 다해서 다른 문제를 찾다가  코딩 도장에서 제공하는 문제를 풀어보았다.

오늘 푼 건, 초보용 300제랑 난이도가 비슷했다! 쉬운 부분이니까~.~

https://dojang.io/course/view.php?id=7

 

강좌: 파이썬 코딩 도장

모두 펼치기모두 접기

dojang.io

  • 5/2 -> 2.5
  • 5//2 -> 2 

나눗셈 후 소수점 이하를 버린다

  • 5%2 -> 1

나눗셈 후 나머지를 구한

 


판다스

  • DataFrame의 속성 값
ndim : 차원
shape : 행,열
index : rangeindex
columns : 열
values : 모든 값 출력, numpy array 형식
T : 전치 (index와 column의 축을 교환)
  • astype() : 타입 변환
  • sort_index() : index를 기준으로 정렬
  • sort_values() : 값을 기준으로 정렬
  • asscending = False : 내림차순
  • by = 행 -> 2개 이상 지정 가능

주제 생각하기

  • 프로 스포츠 지역 연고 선정이 지역 경제에 미치는 영향
  • 올림픽, 월드컵 등 스포츠 이벤트 기간에 일어나는 금융 시장 변화