- 출처
빅데이터 연합 동아리 BITAmin : 네이버 카페
빅데이터 연합 동아리 비타민입니다.
cafe.naver.com
11기 멤버 코테 내용이다.
주피터 노트북을 환경으로 했다.
- 문제1
문제 1 - 20점
문제 [1-1] - 3점
2023년 1월 29일, 자신의 이름, MBTI, 핸드폰 번호 뒷자리를 리스트로 저장하고 그것을 Series의 형태로 변환하여 출력하세요
list=['2023-01-29','홍길동','ESFP',0123]
pd.Series(list)
문제 [1-2] - 3점
딕셔너리를 사용하여 다음의 DataFrame 모양을 만들어 출력하세요.(DataFrame은 df로 저장해주세요)
data={'사람1':[95,100,90,80],'사람2':[85,85,90,100],'사람3':[80,90,80,90]}
df=pd.DataFrame.from_dict(data, orient='index', columns=['국어','수학','영어','탐구'])
df
문제 [1-3] - 3점
위에서 만들어진 df에서 '탐구'열(column)을 삭제하고 출력하세요.
df=df.drop('탐구',axis=1)
df
문제 [1-4] - 4점
df에 국어, 수학, 영어 3과목의 평균 점수를 나타내는 '평균' 열(column)을 추가하여 출력하세요.(소수점 세번째 자리에서 반올림하여 소수점 둘째자리까지만 나타내세요)
df['평균']=round((df['국어']+df['수학']+df['영어'])/3,2)
df
문제 [1-5] - 7점
'평균'열에 나온 점수를 기준으로 등급으로 변환한 '등급'열을 추가하여 출력하세요(95점 이상 A+, 90점 이상 A, 85점 이상 B+, 80점 이상 B 입니다.)
df['등급']=np.where(df['평균']>=95, 'A+', np.where(df['평균']>=90,'A',np.where(df['평균']>=85,'B+',np.where(df['평균']>=80,'B',''))))
df
- 문제2
문제 2 - 25점
문제 [2-1] - 3점
spotify.csv 파일을 불러오고 data 변수에 저장하여 맨 위에 3개 행을 출력하세요.
|
data=pd.read_csv('spotify.csv')
data.head(3)
문제 [2-2] - 3점
data의 열(column) 중에서 'Artist'열에서 고유값의 종류와 갯수를 확인할 수 있는 함수를 사용하여, 다음과 같이 출력하세요.
data['Artist'].value_counts()
문제 [2-3] - 5점
'Artist'열에서 아티스트가 BTS인 행들을 찾아 출력하세요.
data.loc[data['Artist']=='BTS']
문제 [2-4] - 7점
'tempo' 열에 대한 히스토그램을 그려주세요.
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
plt.hist(data['tempo'],bins=10)
plt.ylabel('frequency')
plt.show()

문제 [2-5] - 7점
'Artist'가 BTS이면서 'Tempo'가 평균 이상인 것들을 다음과 같이 출력하세요.
(열(column)은 Rank, Track Name, Artist, tempo만 나오도록 하세요)
a=data.loc[data['Artist']=='BTS']
b=a.loc[data['tempo']>=data['tempo'].mean()]
b=b[['Rank','Track Name','Artist','tempo']]
b
- 문제3
문제 3 - 20점
|
(아래 코드를 실행시켜 df1 변수에 저장 후, 시작해주세요)
df1 =pd.DataFrame({'Class': ['IoT','Network', 'Economy','Big Data', 'Cloud'],
'Year': [2018, 2017, 2018, 2018, 2019],
'Price': [100, 125, 132, 312, 250],
'limitStudent': [40, 40, 40, 40, 40],
'Location': ['Korea','Korea', 'Korea', 'US','Korea']},
index=['C01','C02','C03', 'C04', 'C05'])
df1
문제 [3-1] - 2점
C02, C03 강의의 Class, Year 열(column)을 출력하세요.
df1 =pd.DataFrame({'Class': ['IoT','Network', 'Economy','Big Data', 'Cloud'],
'Year': [2018, 2017, 2018, 2018, 2019],
'Price': [100, 125, 132, 312, 250],
'limitStudent': [40, 40, 40, 40, 40],
'Location': ['Korea','Korea', 'Korea', 'US','Korea']},
index=['C01','C02','C03', 'C04', 'C05'])
df1
df2=df1[['Class','Year']].loc[['C02','C03']]
df2
문제 [3-2] - 3점
Year 열(column)에서 년도가 2018년도 혹은 2019년도에 개설된 Class 를 출력하세요.
df3=df1.loc[(df1['Year']==2018) | (df1['Year']==2019)]
df3['Class']
문제 [3-3] - 5점
강의 별 price 에 대한 세로형 막대 그래프를 출력하세요.
plt.figure(figsize=(10,5))
plt.bar(df1.index,df1['Price'],width=0.5)
plt.xticks(rotation=90)
plt.show()

문제 [3-4] - 10점
priceLevel 열(column)을 추가하고 Price 열(column)의 값이 200보다 크거나 같으면 'High', 200 보다 작으면 'Low'를 할당하여 출력하세요.
이 때, get_priceLevel() 함수를 생성하여 priceLevel열의 값들을 추가하세요.
def get_priceLevel():
df1['priceLevel']=np.where(df1['Price']>=200,'High','Low')
get_priceLevel()
df1
- 문제4
문제4 - 20점
문제 [4-1] - 2점
titanic.csv 를 titanic 변수에 저장하여 불러와주세요.
titanic=pd.read_csv('titanic.csv')
titanic
문제 [4-2] - 2점
결측값을 확인하세요.
titanic.isnull()
문제 [4-3] - 4점
변수 Ticket, Cabin을 제거하세요.
titanic.drop(['Ticket','Cabin'], axis=1)
문제 [4-4] - 6점
age 변수의 결측값을 중간값으로 채워넣으세요.
titanic['Age'].fillna(df.median(numeric_only=True))
titanic
문제 [4-5] - 6점
'Embarked' 변수의 결측값을 'S'로 채워넣으세요.
titanic['Embarked'].fillna('S')
titanic
- 문제5
문제 5 - 15점
문제 [5-1] - 3점
인구수예제.xlsx를 data_p로 불러온 후, 위에서부터 5행을 출력하세요.
|
data_p=pd.read_excel('인구수예제.xlsx')
data_p.head(5)
문제 [5-2] - 5점
연도별/도시별 총인구수를 구하세요.
data_p.groupby(['연도','도시'])['총인구'].sum()
문제 [5-3] - 7점
도시/자치구별 평균 남자인구수와 여자인구수를 구하세요.
data_p.groupby(['도시','자치구'])[['남자인구','여자인구']].mean()
'프로그래밍 > 파이썬' 카테고리의 다른 글
EDA - 3단계 : 캐글 스터디(with TAVE 12기) (1) | 2023.09.10 |
---|---|
EDA - 2단계 : 실제 데이터 다루기 (5) (2) | 2023.08.02 |
EDA - 2단계 : 실제 데이터 다루기 (3) (1) | 2023.07.29 |
EDA - 2단계 : 실제 데이터 다루기 (2) (2) | 2023.07.27 |
EDA - 2단계 : 실제 데이터 다루기 (1) (3) | 2023.07.25 |