취뽀 기록

#열심히 살자 #취업 #공부

Python 185

[python] loc 활용 사례

loc의 주요 사용 사례:단일 행 선택: 특정 행 라벨을 지정하여 해당 행의 데이터를 선택할 수 있습니다.df.loc['행 라벨']다중 행 선택: 행 라벨의 리스트를 지정하여 여러 행의 데이터를 선택할 수 있습니다.df.loc[['행 라벨1', '행 라벨2']]행과 열 모두 선택: 행 라벨과 열 이름을 지정하여 특정 위치의 데이터를 선택할 수 있습니다.df.loc['행 라벨', '열 이름']조건에 따른 행 선택: 조건식을 사용하여 조건에 부합하는 행만을 선택할 수 있습니다.df.loc[df['열 이름'] > 10]슬라이싱을 통한 범위 선택: 슬라이스를 사용하여 연속된 행 또는 열의 데이터를 선택할 수 있습니다.df.loc['시작 행 라벨':'끝 행 라벨', '시작 열 이름':'끝 열 이름']값 변경: l..

[python] 결측치 처리, 대체 map 함수

# 결측값 확인(비율)# EDA - 결측값 확인(비율 확인)df.isnull().sum() / df.shape[0]  # 결측치 컬럼 삭제하기# 80%이상 결측치 컬럼, 삭제df = df.drop('f3', axis = 1) # city별 f1의 median 값 확인# 80%미만 결측치 컬럼, city별 중앙값으로 대체s = df[df['city'] == '서울']['f1'].median()k = df[df['city'] == '경기']['f1'].median()b = df[df['city'] == '부산']['f1'].median()d = df[df['city'] == '대구']['f1'].median() # map 함수 이용하여 f1의 결측값을 s, k, b, d로 대체하기# f1 평균값 결과 출력d..

[Level 2] 귤 고르기(★)

간단해보이는데 너무 어려웠다.. 오랜만에 코테 공부해서 그런가? def solution(k, tangerine): answer = 0 check = 0 dict = {} for num in tangerine: if num in dict: dict[num] += 1 else: dict[num] = 1 arr = sorted(dict.items(), key = lambda x:x[1], reverse = True) if arr[0][1] >= k: return 1 else: for i in arr: if check < k: check += i[1] answer += 1 else: break return answer 흐름은 이렇다. 1. 우선 dict라는 딕셔너리를 만들어서 각 귤의 크기와 개수를 담는다. 2..

[프로그래머스][Level 2] 최댓값과 최솟값

문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 def solution(s): s_list = s.split(' ') s_list = list(map(int, s_list)) return str(min(s_list)) +' '+ str(max(s_list)) 풀이 1. 공백으로 구분되어 있으므로 공백 기준으로 split하여 s_list를 생성한다. 2..

[프로그래머스][Level 2] 짝지어 제거하기

문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. ..

[python] 스포츠 센터 데이터 분석 ①

스포츠 센터에는 센터를 언제든 사용할 수 있는 종일 회원, 낮에만 사용할 수 있는 주간 회원, 밤에만 사용할 수 있는 야간 회원으로 3종류의 회원 구분이 존재 일반적으로 입회비가 존재하지만, 비정기적으로 입회비 반액 할인이나 입회비 무료 행사를 해서 신규회원을 늘리고 있음 월말까지 신청하면 그 다음 달 말에 탈퇴 처리 취급할 데이터 종류 ① use_log.csv - 센터 이용 이력, 회원이 센터를 이용하면 이용일이 시스템에 자동 입력됨 - 2018년 4월 ~ 2019년 3월까지 1년의 데이터 ② customer_master.csv - 2019년 3월 말 시점의 회원 데이터, 이전에 탈퇴한 회원도 포함되어 있음 ③ class_master.csv - 회원 구분 데이터(종일, 주간, 야간) ④campaign_..

[프로그래머스][Level 2] 전화번호 목록

문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 예시 풀이 # 풀..

[프로그래머스][Level 2] 피보나치 수

문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 2 이상 100,000 이하인 자연수입니다. 예시 풀이 # 풀이1 def solution(num): a, b = 0, 1 for i in range(nu..

[알고리즘] 깊이우선탐색(DFS)과 너비우선탐색(BFS)

1. 깊이 우선 탐색(Depth-First Search) : 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동(백트랙이라고도 불림) - 재귀를 사용하는 경우가 많음 - 오델로, 장기, 바둑 등 대전형 게임에 필수로 사용 - 모든 답을 찾지 않고 정해진 깊이까지 탐색하는 방법도 자주 사용됨 - 너비 우선 탐색에 비해 메모리 사용량을 줄일 수 있음 1. 모든 노드를 방문하고자 하는 경우에 이 방법을 선택 2. 깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 좀 더 간단함 3. 검색 속도 자체는 너비 우선 탐색(BFS)에 비해서 느림 DFS는 스택이라는 자료구조를 활용해서 구현된다. 스택은 LIFO(Last-In-First-Out) 방식을 사용한다. (후입선출) DFS 알고리즘은 특..