rubus0304 님의 블로그
[데이터분석 3주차] 관심 데이터직무 넓히기 & 파이썬 문법복습 본문
1. 데이터활용직무
1) 글로벌마케팅 데이터분석 직무 (2주차 분석참고)
2) 프로덕트 분석가 (Product Analystics)
- 회사의 제품 데이터를 분석
- 앱 서비스 또는 웹 서비스에서 발생하는 유저 행동로그 데이터를 분석
: 고객이 제품을 어떻게 사용하고 있을까?
: 퍼널별로 얼마나 체류할까? 퍼널 분석
: 어떻게 제품을 사용할까?
: 제품 개선을 위한 유저 활동 데이터 분석
: 코호트 분석
: 어떤 지표를 볼 지 정하고, 그 지표를 보기 위한 데이터 로깅
: 제품 AB Test
: UX 관점의 데이터를 파악
: 제품 KPI 모니터링
(유저 리텐션(Retention): 서비스를 계속 사용하는지)
(퍼널 별 전환율)
(특정 기능, 버튼 사용률)
(페이지별 체류 시간)
- 업무예시
: 새로운 기능을 성공을 의미하는 Metric 정의
: 새로운 Feature(기능) 출시 후, Metric 모니터링 및 해석
: 어떤 고객들이 리텐션이 높은가?
- 프로젝트 매니저 직군이 데이터를 자주 보다가 프로덕트 분석가가 되는 경우 꽤 존재.
- 주로 Google Analytics, Google Tag Manager, Amplitude 등의 도구를 다루며 채용 공고의 필요역량 중 SQL, 논리적 사고가 자주 나옴.
기업 | 업무 |
쿠팡 (경력 5~17년) |
주요업무Data Analyst 로서 쿠팡 사용자들에게 세계 최상급의 고객 경험을 제공하기 위해 물류운용 측면에서의 보고와 인사이트 관련 업무를 담당합니다. 수백만명의 고객이 쿠팡을 사용하며 이 과정에서 수십억 개의 데이터 포인트가 생성됩니다. 팀은 이와 같은 데이터를 취합하여 적용 가능한 인사이트 생성, 복잡한 비즈니스 관련 질문에 대한 답 모색, 쿠팡 고객들에 대한 이해도 향상 등의 업무를 진행합니다.• 최고의 쇼핑경험을 제공하기 위해 새로운 고객경험 지표와 인사이트 제시 및 생성 • 데이터를 기반으로 한 결정을 내리기 위해 PM(Product Manager), 디자이너, 프로그램 매니저, 엔지니어, 이해관계자들과 협업 • 주, 월, 분기별 비즈니스 보고서 생성 및 관리, 여러 팀들과 협력하여 높은 수준의 인사이트를 포착하고 이를 주요 이해관계자와 경영진에게 제시 • 사고 리더십을 발휘하고 이커머스와 물류 서비스 분석 분야의 전문가로서 활동 자격요건•SQL에 능숙하고 데이터 분석 분야에 5년 이상 경력이 있는 분•통계학, 산업공학 관련 학사/ 석사 학위를 보유하거나 그와 동등한 경력을 보유한 분 •데이터와 인사이트를 분석하여 명확하고 실행 가능한 계획을 제시한 경험이 있는 분 •Hadoop, Spark, Presto, Airflow와 같은 빅데이터 기술을 사용한 경험이 있는 분 •Power BI, Tableau 등과 같은 BI 툴을 사용한 경험이 있는 분 •복잡한 분석 내용을 글과 의사소통을 통해 간결하고 명료하게 전달할 수 있는 능력을 보유한 분 https://www.wanted.co.kr/wd/223481 |
3) CRM 마케터 (Customer Relationship Management)
- 고객과 커뮤니케이션하고 분석
- 유저 Life Cycle 관리
: AARRR 퍼널 별 KPI를 달성하기 위한 마케팅 전략 수립
: 마케팅 KPI 모니터링
(유저 리텐션 (Retention): 서비스를 계속 사용하는 자 )
(LTV (Life Time Value): 고객 생애 가치)
: (고객 등급이 있는 경우) 고객 등급별 분석
: (구독 모델이 존재하는 경우) 구독 모델 기획 및 분석
: 고객이 계속 제품을 사용하도록 문자, 이메일, Push Notification 기획 및 분석
: 쿠폰 마케팅 (어떤 금액대의 쿠폰을 누구에게 보낼 것인가)
: 고객 Segment 분석
: AB Test
- 고객 커뮤니케이션 툴인 Braze 사용하며, Google Analytics, Amplitude 등 활용하며 SQL을 자주 활용함
4) 그로스 해킹 - 양승화 (책)
- 프로덕트 분석가 + 퍼포먼스 마케터 + CRM 마케터 + 비즈니스 분석가의 역할을 넓게 하는 Role
- Growth를 위한 데이터 분석
: 마케팅 -> AARRR 퍼널 분석
: 퍼포먼스 마케팅
: CRM 마케팅
: KPI 수립 및 관리
: AB Test
- 제품을 성장시키기 위한 지표를 정하고, 그 지표를 위한 것들을 수단 가리지 않고 진행하고, 액션하는 직군
- 요새는 그로스 해커보다 그로스 마케터/ 그로스 데이터 분석가 채용 공고가 존재
- Amplitude, Mixpanel, Segment, Tag Manager, SQL 등을 활용
https://1point.kr/blog/insights/growth-performance-difference/
2.파이썬 문법정리
문법 | 내용 |
1.변수 선언과 자료형 | |
변수 선언 | a = 3 # 3을 a에 넣는다. print(a) b = a # a에 들어 있는 값인 3을 b에 넣는다. print(b) a = 5 # a에 5라는 새로운 값을 넣는다. print(a, b) # 5 3 |
숫자형 자료형 |
1) 사칙연산 (+,-,*,/) ex) a=7, b=2 a+b =c print (c) --> 9 a+b # 9 a-b # 5 a*b # 14 a/b # 3.5 2) 변수에 저장된 값 연산 후 다시 그 값을 같은 변수에 저장가능 a=5 a= a+3 ( a+= 3으로 줄여쓸 수도 있음!) print(a) -->8 3) 나눗셈의 나머지 a//b # 3 (몫) a%b # 1 (나머지) a**b # 49 (거듭제곱) |
Bool 자료형 | 참/거짓 x= True (참) y=False (거짓) (에러) z= true (x) * 소문자로 쓰면 자료형으로 인식하지 않고 변수명으로 생각해 에러남. True = 1 (x) *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 a # False NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다. a and b # False AND 연산자로 모두 참이어야 참을 반환한다. a or b # True OR 연산자로 둘 중 하나만 참이면 참이다. (연습문제) 숫자들의 평균 구하기 a = 24 b = 16 c = 26 print((a+b+c)/3) |
2.문자열 다루기 | |
문자열 | 1) 문자열 기초 파이썬에서는 '글'도 데이터로 사용할 수 있는데요, 이것을 '문자열'이라고 합니다. 작은 따옴표 또는 큰 따옴표. 둘 다 같아요! a = "aa" b = 'aa' 2) 따옴표로 감싸지 않으면 변수이름을 뜻함. (꼭 구분해서 써야함!) a = 1 b = "a" c = a print(a, b, c) --> 1 "a" 1 따라서, 이렇게 다양한 방법으로 만들 수 있기 때문에, 문자열에 따옴표를 포함해야할 때 쓰면 편해요 ex) print("I'm happy :)") |
문자열 연산 | 문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환합니다. first_name = "Harry" last_name = "Potter" first_name + last_name # HarryPotter first_name + " " + last_name # Harry Potter a = "3" b = "5" a + b # 35 문자열과 정수를 더하면 에러! a = "3" a + 5 # ERROR (문자열과 숫자형은 더할 수 없어서 에러!) 문자열의 길이는 len( ) 함수 print(len("abcde")) # 5 print(len("Hello, Sparta!")) # 14 print(len("안녕하세요.")) # 6 그 외에도 다양한 기능 이렇게 특정 자료형 뒤에 . 을 붙이고 쓰는 내장 함수들을 '메소드(method)' 1) 모든 알파벳을 대문자/소문자로 바꾸기 sentence = 'Python is FUN!' sentence.upper() # PYTHON IS FUN! sentence.lower() # python is fun! 2) 특정 문자를 기준으로 문자열을 나누기 # 이메일 주소에서 도메인 'gmail'만 추출하기 myemail = 'test@gmail.com' result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :)) result[0] # test (리스트의 첫번째 요소) result[1] # gmail.com (리스트의 두 번째 요소 result2 = result[1].split('.') # ['gmail','com'] result2[0] # gmail -> 우리가 알고 싶었던 것 result2[1] # com # 한 줄로 한 번에! myemail.split('@')[1].split('.')[0] 3) 특정 문자를 다른 문자로 바꾸기 txt = '서울시-마포구-망원동' print(txt.replace('-', '>')) # '서울시>마포구>망원동' |
인덱싱과 슬라이싱 | 1) 문자열은 '문자들의 모임'이기 때문에 그 일부를 따로 떼어 부르는 방법이 있음. 한 글자 씩 부를 때는 몇 번째인지 '인덱스'를 넣어 불러서 인덱싱이라고 합니다. f="abcdefghijklmnopqrstuvwxyz" f[1] # b (파이썬은 숫자를 0부터 셉니다) 2) 문자열의 일부를 잘라낼 때는 슬라이싱 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 처음부터 끝까지 3)특정 문자열로 자르고 싶을 때! split('문자열') 을 활용 myemail = 'abc@sparta.co' domain = myemail.split('@')[1].split('.')[0] print(domain) (연습문제) Q. 문자열의 앞의 반만 출력하기 "sparta" 의 앞의 3글자인 "spa" 만 출력 text = "sparta" print(text[:3]) Q. 전화번호의 지역번호 출력하기 phone = "02-123-1234" phone = "02-123-1234" print(phone.split("-")[0]) |
3. 리스트와 딕셔너리 | |
리스트 기초 | 1) 순서가 있는, 다른 자료형들의 모임! a = [1, 5, 2] b = [3, "a", 6, 1] c = [] d = list() e = [1, 2, 4, [2, 3, 4]] 2) 리스트의 길이도 len() 함수를 사용해서 잴 수 있어요. a = [1, 5, 2] print(len(a)) # 3 b = [1, 3, [2, 0], 1] print(len(b)) # 4 3) 순서가 있기 때문에, 문자열에서처럼 인덱싱과 슬라이싱을 사용할 수 있음 a = [1, 3, 2, 4] print(a[3]) # 4 print(a[1:3]) # [3, 2] print(a[-1]) # 4 (맨 마지막 것) 4) 리스트의 요소가 리스트라면? 중첩해서! a = [1, 2, [2, 3], 0] print(a[3]) # [2, 3] print(a[3][0]) # 2 |
리스트 더 많은 기능들 | 1) 덧붙이기 a = [1, 2, 3] a.append(5) print(a) # [1, 2, 3, 5] a.append([1, 2]) print(a) # [1, 2, 3, 5, [1, 2]] # 더하기 연산과 비교! a += [2, 7] print(a) # [1, 2, 3, 5, [1, 2], 2, 7] 2) 정렬하기 a = [2, 5, 3] a.sort() print(a) # [2, 3, 5] a.sort (reverse=True) print(a) # [5, 3, 2] 3) 요소가 리스트 안에 있는지 알아보기 a = [2, 1, 4, "2", 6] print(1 in a) # True print("1" in a) # False print(0 not in a) # True |
딕셔너리 기초 | 1) 딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 자료의 모임입니다. 영한사전에서 영어 단어를 검색하면 한국어 뜻이 나오는 것처럼요! person = {"name":"Bob", "age": 21} print(person["name"]) 2) 딕셔너리를 만드는 데는 여러가지 방법을 쓸 수 있습니다. a = {"one":1, "two":2} # 빈 딕셔너리 만들기 a = {} a = dict() 3) 딕셔너리의 요소에는 순서가 없음 (인덱싱을 사용불가) person = {"name":"Bob", "age": 21} print(person[0]) # 0이라는 key가 없으므로 KeyError 발생! 4) 딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있습니다. person = {"name":"Bob", "age": 21} person["name"] = "Robert" print(person) # {'name': 'Robert', 'age': 21} person["height"] = 174.8 print(person) # {'name': 'Robert', 'age': 21, 'height': 174.8} 5) 딕셔너리의 밸류로는 아무 자료형이나 쓸 수 있어요. 다른 딕셔너리를 넣을 수도 있죠! person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}} print(person["scores"]) # {'math': 81, 'science': 92, 'Korean': 84} print(person["scores"]["science"]) # 92 |
딕셔너리의 더 많은 기능들 | 딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때는 in 을 사용합니다. person = {"name":"Bob", "age": 21} print("name" in person) # True print("email" in person) # False print("phone" not in person) # True |
리스트와 딕셔너리의 조합 | 딕셔너리는 리스트와 함께 쓰여 자료를 정리하는 데 쓰일 수 있습니다. people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}] # people[0]['name']의 값은? 'bob' # people[1]['name']의 값은? 'carry' person = {'name': 'john', 'age': 7} people.append(person) # people의 값은? [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}] # people[2]['name']의 값은? 'john' (연습문제) Q. 딕셔너리에서 원하는 정보를 찾아보기 [코드스니펫] - 딕셔너리 퀴즈 people = [ {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}}, {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}}, {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}}, {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}} ] smith의 science 점수를 출력해보세요 print(people[3]['score']['science']) |
4. 조건문 | |
if문 | 1) 조건을 만족했을 때만 특정 코드를 실행하도록 하는 문법입니다. money = 5000 if money > 3800: print("택시 타자!") 2) 파이썬에서는 어디까지 구문에 포함되는지를 들여쓰기로 구분하기 때문에 아주 중요합니다. -> 조건에는 불 자료형이 들어갑니다. money > 3800은 True money = 5000 if money > 3800: print("택시 타자!") |
else/ elif |
1) 조건을 만족하지 않을 때 다른 코드를 실행하고 싶을 때 쓰는 문법입니다. money = 2000 if money > 3800: print("택시 타자!") else: print("걸어가자...") 2) 다양한 조건을 판단할 때는 elif 를 쓰면 좋아요! age = 27 if age < 20: print("청소년입니다.") elif age < 65: print("성인입니다.") else: print("무료로 이용하세요!") |
5. 반복문 | |
for문 | 0부터 9까지 숫자를 출력해볼까요? print(0) print(1) print(2) ... print(9) 파이썬에서는 아래처럼 쓰는 것이 더 자연스럽습니다. fruits = ['사과', '배', '감', '귤'] for fruit in fruits: print(fruit) (연습문제1)- Q. 사람의 나이 출력하기 people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] 이 리스트에서 나이가 20보다 큰 사람만 출력합니다 for person in people: if person['age'] > 20: print(person['name']) (연습문제2)for 문 - enumerate, break fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지'] for i, fruit in enumerate(fruits): print(i,fruit) 예를 들어 앞에 5개만 출력해보고 싶다면? for i, fruit in enumerate(fruits): print(i, fruit) if i == 4: break |
5-1. 반복문 연습문제 | |
Q1. 리스트에서 짝수만 출력하는 함수 만들기 - 짝수 출력하기 num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] 이 리스트에서 짝수인 요소만 출력해봅시다. num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] for num in num_list: if num % 2 == 0: print(num) Q2. 리스트에서 짝수의 개수를 출력하기 num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] count = 0 for num in num_list: if num % 2 == 0: count += 1 print(count) Q. 리스트 안에 있는 모든 숫자 더하기 num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] result = 0 for num in num_list: result += num print(result) print(sum(a_list)) Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기 num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4] max_value = 0 for num in num_list: if num > max_value: max_value = num print(max_value) print(max(a_list)) |
|
6. 함수 | |
함수 사용 방법 | 함수는 반복적으로 사용하는 코드들에 이름을 붙여놓은 것입니다. def hello(): print("안녕!") print("또 만나요!") hello() hello() 조건문에 넣을 값을 바꿔가면서 결과를 확인할 때 쓰면 편합니다. def bus_rate(age): if age > 65: print("무료로 이용하세요") elif age > 20: print("성인입니다.") else: print("청소년입니다") bus_rate(27) bus_rate(10) bus_rate(72) 단순한 출력 뿐만 아니라 결과 값을 돌려주도록 함수를 만들 수도 있어요! def bus_fee(age): if age > 65: return 0 elif age > 20: return 1200 else: return 0 money = bus_fee(28) print(money) Q. 주민등록번호를 입력받아 성별을 출력하는 함수 만들기 def check_gender(pin): print('') my_pin = '200101-3012345' check_gender(my_pin) 주민등록번호 뒷자리의 맨 첫 번째 숫자가 1, 3 등 홀수이면 남성, 2, 4 등 짝수이면 여성이죠? 힌트! → "2"라는 문자열을 숫자로 바꾸려면? int("2") 이렇게, int로 감싸주세요! def check_gender(pin): num = int(pin.split('-')[1][0]) if num % 2 == 0: print('여성') else: print('남성') my_pin = "200101-3012345" check_gender(my_pin) |
7.튜플,집합 | |
튜플 | 튜플은 리스트와 비슷하지만 불변 인 자료형 입니다. 마찬가지로 순서가 존재하죠! a = (1,2,3) print(a[0]) 예를 들어 아래와 같은 작업이 불가합니다! a = (1,2,3) a[0] = 99 주로 사용은 아래와 같이, 딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰입니다! a_dict = [('bob','24'),('john','29'),('smith','30')] |
집합 (set) | 집합은 말 그대로 '집합'을 구현하는 방법! 좋은점: 중복이 제거 됩니다 a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1] a_set = set(a) print(a_set) 교집합 / 합집합 / 차집합도 구할 수 있어요 a = ['사과','감','수박','참외','딸기'] b = ['사과','멜론','청포도','토마토','참외'] print(a & b) # 교집합 print(a | b) # 합집합 (연습문제) 구글링문제 - Q. A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기 - AB수업 문제 student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육'] student_b = ['물리1','수학1','미술','화학2','체육'] a와 b의 '차집합' 구하는 방법을 구글링해보세요! set_a = set(student_a) set_b = set(student_b) print(set_a-set_b) |
8.f-string | |
변수로 더 직관적인 문자열 만들기 | 예를 들어 아래 for문을 살펴보겠습니다. - 점수 모음 scores = [ {'name':'영수','score':70}, {'name':'영희','score':65}, {'name':'기찬','score':75}, {'name':'희수','score':23}, {'name':'서경','score':99}, {'name':'미주','score':100}, {'name':'병태','score':32} ] 이름과 점수를 모두 출력 for s in scores: name = s['name'] score = str(s['score']) print(name,score) 아래와 같이 출력해보면 어떨까요? for s in scores: name = s['name'] score = str(s['score']) print(name+'는 '+score+'점 입니다') f-stirng을 이용하면 훨씬 간단 for s in scores: name = s['name'] score = str(s['score']) print(f'{name}은 {score}점입니다') |
9.예외처리 | |
try-except문 | 에러가 있어도 건너뛰게 할 수 있는 방법 - try-except 예제 people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] 실제 프로젝트 남용하는 것은 금물! 어디서 에러가 났는지 알 수 없어요 ? 다음과 같이 20세 보다 큰 사람만 출력한다고 해봅시다. people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] for person in people: if person['age'] > 20: print (person['name']) 그런데 만약, bobby가 age를 갖고 있지 않다면? - 데이터 하나가 잘못 들어간거죠! people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby'}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] for person in people: if person['age'] > 20: print (person['name']) 그 때 아래와 같이 try except 구문을 이용하면 에러를 넘길 수 있답니다. for person in people: try: if person['age'] > 20: print (person['name']) except: name = person['name'] print(f'{name} - 에러입니다') |
10.파일 불러오기 | |
여러개 파일로 분리하려면 | 1) main_test.py from main_func import * say_hi() 2) main_func.py def say_hi(): print('안녕!') |
11.한줄의 마법 | |
if문-삼항연산자 | 만약 조건에 따라 다른 값을 변수에 저장하고 싶다면? num = 3 if num%2 == 0: result = "짝수" else: result = "홀수" print(f"{num}은 {result}입니다.") 이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식입니다 num = 3 result = "짝수" if num%2 == 0 else "홀수" print(f"{num}은 {result}입니다.") (참일 때 값) if (조건) else (거짓일 때 값) 으로 항이 3개라 삼항 연산자입니다 ? |
for문 (한방에) | a_list 의 각 요소에 2를 곱한 새로운 리스트를 만들고 싶다면? a_list = [1, 3, 2, 5, 1, 2] b_list = [] for a in a_list: b_list.append(a*2) print(b_list) 이것을 한 번에 쓸 수 있는 방법이 있죠! a_list = [1, 3, 2, 5, 1, 2] b_list = [a*2 for a in a_list] print(b_list) |
12. map,filter,lambda식 | |
map | map - 리스트의 모든 원소를 조작하기 - 리스트조작 연습 people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] 1. 1차 조작 def check_adult(person): if person['age'] > 20: return '성인' else: return '청소년' result = map(check_adult, people) print(list(result)) 2.2차 조작! def check_adult(person): return '성인' if person['age'] > 20 else '청소년' result = map(check_adult, people) print(list(result)) 3. 3차 조작! result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people) print(list(result)) |
filter - 리스트의 모든 원소 중 특별한 것만 뽑기 | map과 아주 유사한데, True인 것들만 뽑기! (map보다 훨씬 쉬워요!) result = filter(lambda x: x['age'] > 20, people) print(list(result)) |
13. 함수 심화 | |
함수의 매개변수 | 이 내용들은 직접 쓰는 것보단 알고 있으면 내장함수 등을 사용할 때 도큐먼트를 읽는 데 도 움이 됩니다! 1.함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있어요. 순서 상관 없음! def cal(a, b): return a + 2 * b print(cal(3, 5)) print(cal(5, 3)) print(cal(a=3, b=5)) print(cal(b=5, a=3)) 2.특정 매개변수에 디폴트 값을 지정해줄 수 있어요. def cal2(a, b=3): return a + 2 * b print(cal2(4)) print(cal2(4, 2)) print(cal2(a=6)) print(cal2(a=1, b=7)) 3. 입력값의 개수를 지정하지 않고 모두 받는 방법! def call_names(*args): for name in args: print(f'{name}야 밥먹어라~') call_names('철수','영수','희재') 이렇게 여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args 라는 이름을 사용 합니다. arguments라는 뜻이에요! 4.키워드 인수를 여러 개 받는 방법! def get_kwargs(**kwargs): print(kwargs) get_kwargs(name='bob') get_kwargs(name='john', age='27') |
14.클래스 | |
우선, 클래스를 언제 사용하는지 생각해보시죠! 중앙에서 HP 관리 각 객체가HP관리 (더 자유로움) 클래스의 사용 방법을 눈으로 살펴보겠습니다. class Monster(): hp = 100 alive = True def damage(self, attack): self.hp = self.hp - attack if self.hp < 0: self.alive = False def status_check(self): if self.alive: print('살아있다') else: print('죽었다') m = Monster() m.damage(120) m2 = Monster() m2.damage(90) m.status_check() m2.status_check() |
'Data Analyst > Weekly' 카테고리의 다른 글
[데이터분석 4주차] Pandas 기본 문법정리 (1) | 2024.11.01 |
---|---|
[데이터분석 2주차] 데이터분석 도메인 이해, 파이썬 기초문법 (2) | 2024.10.12 |
Python 강의요약 (4) | 2024.10.08 |
[데이터분석 1주차]데이터 직무분석,SQL기초문법 (4) | 2024.10.04 |
SQL 기초수업요약 (3) | 2024.10.04 |