Python 실습 문제
인기동영상 제작횟수가 많은 채널 상위 10개명을 출력
df.channelTitle.value_counts().head(10)
dislikes수가 like 수보다 높은 동영상을 제작한 채널을 모두 출력
df['likes'] < df['dislikes]
df['channelTitle'].unique()
df[df['likes'] < df['dislikes']]['channelTitle'].unique()
20회(20일)이상 인기동영상 리스트에 포함된 동영상의 숫자
df[['title','channelId']].value_counts()>=20
(df[['title','channelId']].value_counts()>=20).sum()
각 에피소드의 시작날짜(년-월-일)를 에피소드 이름과 묶어 데이터 프레임으로 만들고 출력
start_date = video.sort_values(['ct','videoname']).drop_duplicates('videoname')[['ct','videoname']]
start_date
start_date['date'] = start_date.ct.dt.date
answer = start_date[['date','videoname']]
display(answer)
video 정보의 가장 최근 데이터들에서 각 에피소드의 싫어요/좋아요 비율을 ratio 컬럼으로 만들고 videoname, ratio로 구성된 데이터 프레임을 ratio를 오름차순으로 정렬
video.sort_values('ct').drop_duplicates('videoname',keep='last')
좋아요 싫어요 비율
target['ratio'] = target['dislikecnt']/target['likecnt']
오름차순
target.sort_values('ratio')[['videoname','ratio']].reset_index(drop=True)
target = video.sort_values('ct').drop_duplicates('videoname',keep='last')
target['ratio'] =target['dislikecnt'] / target['likecnt']
answer = target.sort_values('ratio')[['videoname','ratio']].reset_index(drop=True)
groupby
전체 기간의 각 나라별 골득점수 상위 5개 국가와 그 득점수를 데이터프레임형태로 출력하라
나라별 골득점수
df.groupby('country')['goals']
상위 5개 (내림차순)
.sort_values(ascending =False)
result = df.groupby('Country').size().sort_values(ascending=False).head(5)
print(result)
Yugoslavia 국가의 월드컵 출전횟수가 2회인 선수들의 숫자를 구하
출전회수 2회
df2.Lencup==2
Yugoslavia 국가
df2.country == 'Yugoslavia'
횟수
len(df2[(df2.LenCup==2) & (df2.Country =='Yugoslavia')])
2002년도에 출전한 전체 선수는 몇명
2002년도 출전
df2.years.str.contains('2002')
각 요일별 가장 많이 이용한 대여소의 이용횟수와 대여소 번호를 데이터 프레임으로 출력
요일별 대여소번호 이용회수
df.groupby(['day_name','대여소번호']).size().to_frame('size').sort_values(['day_name','size'],ascending =False).reset_index()
평일 (월~금) 출근 시간대(오전 6,7,8시)의 대여소별 이용 횟수를 구해서 데이터 프레임 형태로 표현한 후 각 대여시간별 이용 횟수의 상위 3개 대여소와 이용횟수를 출력하라
평일
(df.day_name.isin(['Tuesday', 'Wednesday', 'Thursday', 'Friday','Monday']))
시간대 (오전 6,7,8시)
df.대여시간.isin([6,7,8])
평일 (월~금) 출근 시간대(오전 6,7,8시)의 대여소별 이용 횟수를 구해
df[(df.day_name.isin(['Tuesday', 'Wednesday', 'Thursday', 'Friday','Monday'])) & (df.대여시간.isin([6,7,8]))]
데이터 프레임 형태로 표현
target.groupby(['대여시간','대여소번호']).size().to_frame('이용 횟수')
대여시간별 이용 횟수의 상위 3개 대여소와 이용횟수를 출력
result.sort_values(['대여시간','이용 횟수'],ascending=False).groupby('대여시간').head(3)
남성(‘M’ or ‘m’)과 여성(‘F’ or ‘f’)의 이동거리값의 평균값을 구하여라
남성(‘M’ or ‘m’)과 여성(‘F’ or ‘f’)의 정의
df['성별'].map(lambda x: '남' if x in ['M','m'] else '여')
or
del sex
if x in ['M','m']:
return '남'
else
return '여'
df['성별'].map(sex)
성별,이동거리의 평균값
df[['sex','이동거리']].groupby('sex').mean()
각년도의 행복랭킹 50위이내의 나라들의 각각의 행복점수 평균을 데이터프레임으로 표시하라
행복랭킹 50위이내 년도,점수
df.행복랭킹<=50[['년도','점수']]
행복점수 평균
.groupby('년도').mean()
df[df.행복랭킹<=50]['년도','점수']].groupby('년도').mean()
Zone 1 Power Consumption 컬럼의 value값의 크기가 Zone 2 Power Consumption 컬럼의 value값의 크기보다 큰 데이터들의 Humidity의 평균을 구하여라
Zone 1 Power Consumption 컬럼의 value값의 크기가 Zone 2 Power Consumption 컬럼의 value값의 크기보다 큰 데이터
df['Zone 1 Power Consumption'] > df['Zone 2 Power Consumption']
Humidity의 평균
Humidity.mean()
df[df['Zone 1 Power Consumption'] > df['Zone 2 Power Consumption']].Humidity.mean()
Temperature의 값이 10미만의 경우 A, 10이상 20미만의 경우 B,20이상 30미만의 경우 C, 그 외의 경우 D라고 할때 각 단계의 데이터 숫자를 구하
Temperature의 값이 10미만의 경우 A, 10이상 20미만의 경우 B,20이상 30미만의 경우 C, 그 외의 경우 D
def split_data(x):
if x<10:
return "A"
elif x<20:
return 'B'
elif x<30:
return 'C'
else:
return 'D'
df.Temperature.map(split_data)
단계의 데이터 숫자
df['sp'].value_counts()
표준편차
Temperature.std()
분산
Temperature.var()
매년 5월달의 open가격의 평균값을 데이터 프레임으로 표현
매년 5월달 open가격의 평균값
df['Date'] =pd.to_datetime(df['Date'])
target = df.groupby(df['Date'].dt.strftime('%Y-%m')).mean()
answer = target.loc[target.index.str.contains('-05')].Open