Re:제로부터 시작하는 갓생

[Python] 25/01/20 베이직 실습4 본문

CodeKata/Task

[Python] 25/01/20 베이직 실습4

기븜 2025. 1. 20. 21:47
문제 1번
윤년이면 True, 윤년이 아니면 False를 출력하는 코드를 작성하세요
4로 나누어떨어지는 해는 윤년으로 한다. (2016년, 2020년, 2024년 등등)
4와 100으로 나누어떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년)
4, 100, 400으로 나누어떨어지는 해는 윤년으로 한다. (2000년, 2400년)

Skeleton code
year = int(input("연도를 입력하세요: "))

"""
코드 입력
"""​

출력 결과
# 2016
True
# 2100
False
# 2000
True​

 

* 정답

* 시도

더보기

작성하는 동안 틈새틈새 print 출력으로 맞는지 확인하면서 수정해나감

year = int(input("연도를 입력하세요: "))

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 :
    print(True)
else:
    print(False)

 

문제 2번

* Seaborn 라이브러리에서 제공하는 Penguins 데이터셋을 활용하여 다음을 수행하세요:
1) Penguins 데이터셋을 불러옵니다.
2) bill_length_mm이 species별 bill_length_mm의 평균(”mean_bill_length”)보다 작은 데이터를 선택하세요.
3) 선택된 데이터에 새 열을 추가하여, bill_length_mm과 bill_depth_mm을 조합하여 다음과 같은 규칙으로 계산한 값을 저장하세요:
- bill_length_mm * 0.5 + bill_depth_mm * 0.3 새 열의 이름은 weighted_bill로 지정하세요.
4) weighted_bill이 25 이상인 행만 추가로 필터링하여 출력하세요.
5) species 값의 문자열 길이가 6보다 크면 "long", 6 이하면 "short"으로 분류하는 새 열을 추가하세요.
새 열의 이름은 species_length_category로 지정하세요.

힌트:
2) groupby를 사용하여, species별 bill_length_mm의 평균 데이터 프레임을 생성하여 merge하거나,

다음 transform 함수를 사용할 수 있습니다.  https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.transform.html
5) apply()와 lambda를 사용하여 조건에 따른 새 열을 생성할 수 있습니다.

결과: final_result

'species', 'island', 'bill_length_mm', 'bill_depth_mm',
'flipper_length_mm', 'body_mass_g', 'sex', 'mean_bill_length',
'weighted_bill', 'species_length_category'

10번째, 90번째 행을 출력하세요


Skeleton code

# 1) Penguins 데이터셋 로드
penguins = sns.load_dataset("penguins")

"""
코드 입력
"""

# 결과 출력
print(final_result.iloc[10])
print(final_result.iloc[90])

출력 결과

'''
species                    Chinstrap
island                         Dream
bill_length_mm                  45.9
bill_depth_mm                   17.1
flipper_length_mm              190.0
body_mass_g                   3575.0
sex                           Female
mean_bill_length           48.833824
weighted_bill                  28.08
species_length_category         long
Name: 166, dtype: object
species                       Gentoo
island                        Biscoe
bill_length_mm                  41.7
bill_depth_mm                   14.7
flipper_length_mm              210.0
body_mass_g                   4700.0
sex                           Female
mean_bill_length           47.504878
weighted_bill                  25.26
species_length_category        short
Name: 326, dtype: object
'''

 

* 정답

* 시도

더보기

문제부터 이해를 못해서 2번부터 막혀버려...

from itertools import groupby
# 1) Penguins 데이터셋 로드
penguins = sns.load_dataset("penguins")

# 2) ?
# penguins[mean_bill_length] = penguins.groupby('species')['bill_length_mm'].transforms(mean)
# mean_penguins = penguins[bill_length_mm < mean_bill_length]
# 3) ?
# 4) ?
filter
# 5) ?

# 결과 출력
print(final_result.iloc[10])
print(final_result.iloc[90])

 

배운점

transform

lambda

iloc

loc

 

'CodeKata > Task' 카테고리의 다른 글

[Python] 25/01/21 베이직 실습5  (0) 2025.01.22
[Python] 25/01/15 베이직 실습3  (0) 2025.01.15
[Python] 25/01/13 베이직 실습2  (0) 2025.01.13
[Python] 25/01/09 베이직 실습1  (0) 2025.01.09