10월 2주차 파이썬 스터디
이번주는 중간고사 대비 파이썬 정리하여, 정리본 올립니다.
<ch.3>
[p. 37-39]
1. 시험 변수 만들고 출력하기
# score = [80, 60, 70, 50, 90]
2. 합계 점수 구하기
# sum(score)
3. 합계 점수 변수 만들어 출력하기
# sum_score = sum(score)
# sum_score
<ch.4>
[p. 13-15]
1. 다음 표의 내용을 데이터 프레임으로 만들어 출력하기
# sales = pd.DataFrame({'fruit' : ['사과', '딸기', '수박'], 'price' : [1800, 1500, 3000], 'volume' : [24, 38, 13]})
# sales
2. 앞에서 만든 데이터 프레임 이용해, 과일 가격 평균과 판매량 평균 구하기
# sum(sales['price']) / 3
# sum(sales['volume']) / 3
<ch.5>
[p.28-31]
1. mpg 데이터 불러오기
# mpg = pd.read_csv('mpg.csv')
2. 복사본 만들기
# mpg_new = mpg.copy()
3. 변수명 바꾸기
# mpg_new = mpg_new.rename(columns = {'cty' : 'city'})
# mpg_new = mpg_new.rename(columns = {'hwy' : 'highway'})
4. 데이터 일부 출력하여, 변수명 변경되었는지 확인
# mpg_new.head()
[p.55-61]
1. midwest.csv 불러와서 특징 파악하기
# midwest = pd.read_csv('midwest.csv')
# midwest.head()
# midwest.tail()
# midwest.shape
# midwest.info()
# midwest.describe()
2. 변수명 수정 (poptotal-> total, popasian-> asian)
# midwest = midwest.rename(columns = {'poptotal' : 'total' })
# midwest = midwest.rename(columns = {'popasian' : 'asian'})
3. 파생변수 추가('전체 인구 대비 아시아 인구 백분율')
# midwest['ratio'] = midwest['asian'] / midwest['total'] * 100
4. 히스토그램 만들어 분포 살피기
# midwest['ratio'].plot.hist()
5. 아시아 인구 백분율 전체 평균 구하기
# midwest['ratio'].mean()
6. 평균 초과시 'large', 외에는 'small' 부여하기
# midwest['group'] = np.where(midwest['ratio']> 0.4872, 'large', 'small')
7. 'large'와 'small'에 해당하는 지역이 얼마나 많은지 빈도표 만들기
# count_group = midwest['group'].value_counts()
# count_group
8. 막대 그래프 만들기
# count_group.plot.bar(rot = 0)
<ch.6>
# df.query()-> 조건에 맞는 데이터만 추출하기
# df.sort_values()-> 순서대로 정렬하기
# df.assign()-> 파생변수 추가하기
[p. 27-30]
# 1. 자동차 배기량에 따라 고속도로 연비 다른지 알아보고자 함. displ(배기량)이 4 이하인 자동차와 5 이상인 자동차 중 어떤 자동차의 hwy(고속도로 연비) 평균이 더 높은지 알아보기
# mpg = pd.read_csv('mpg.csv')
# mpg_a = mpg.query('displ <= 4')
# mpg_b = mpg.query('displ >= 5')
# mpg_a['hwy'].mean()
# mpg_b['hwy'].mean()
# 2. 자동차 제조회사 따라 도시 연비 다른지 알아보고자 함. 'audi', 'toyota' 중 어느 manufacturer(자동차 제조회사)의 cty(도시 연비) 평균이 더 높은지 알아보기
# mpg_audi = mpg.query('manufacturer == "audi"')
# mpg_toyota = mpg.query('manufacturer == "toyota"')
# mpg_audi['cty'].mean()
# mpg_toyota['cty'].mean()
# 3. 'chevrolet', 'ford', 'honda' 자동차의 고속도로 연비 평균은? 데이터 추출하고 hwy 전체 평균 구해봐.
# (manufacturer가 세 회사에 해당하면 추출)
# mpg_new = mpg.query('manufacturer in ["chevroret", "ford", "honda"]')
# mpg_new['hwy'],mean()
[p. 44-46]
# 1. mpg 데이터는 11개 변수로 구성됨. 일부만 추출하려고 함. mpg 데이터에서 category(자동차 종류), cty(도시 연비) 변수 추출해, 새로운 데이터 만들기. 새로운 데이터 일부 출력해 두 변수로만 구성되어 있는지 확인하기
# mpg = pd.read_csv('mpg.csv')-> mpg 데이터 불러오기
# mpg_new = mpg[['category', 'cty"]] -> 이거 왜 [[]]?
# mpg_new.head()
# 2.위 추출한 데이터 이용해 category(자동차 종류)가 'suv'와 'compact' 중 어떤 게 cty(도시 연비) 평균 높은지 알아보기
# mpg_new.query('category == "suv"')['cty'].mean()
# mpg_new.query('category == "compact"')['cty'].mean()
[p. 53]
# 1. 'audi'에서 생산한 자동차 중 hwy(고속도로 연비) 높은 1~5위를 출력하세요
# mpg = pd.read_csv('mpg.csv')
# mpg.query('manufacturer == "audi"')
# mpg.sort_values('hwy', ascending = False)
# mpg.head()
[p. 62-66]
# 1. mpg 데이터 복사분 만들기
# mpg = pd.read_csv('mpg.csv')
# mpg_new = mpg.copy()
# 2. cty와 hwy 더한 '합산 연비 변수' 추가하세요
# mpg_new = mpg_new.assign(total = mpg_new['cty'] + mpg_new['hwy'])
# 3. '합산 연비 변수' 2로 나눠 '평균 연비 변수' 추가하세요
# mpg_new = mpg_new.assign(mean = mpg_new['total'] / 2)
# 4. '평균 연비 변수' 가장 높은 자동차 3종 데이터 출력하기
# mpg_new.sort_values('mean', ascending = False).head()
# 5. 1~3번 해결 가능한 하나로 연결된 pandas 구문 만들어 실행하기.(데이터는 mpg 원본 이용)
# mpg.assign(total = lambda x: x['cty'] + x['hwy'], mean = lambda x: x['total'] / 2).sort_values('mean', ascending = False).head(3)
[p. 79-84]
# 1. category별 cty 평균을 구하시오.(mpg 데이터의 category는 특징 따라 'suv', 'compact' 등 7종류로 분류한 변수. 어떤 차종의 도시 연비가 높은지 비교.)
# mpg = pd.read_csv('mpg.csv')
# mpg.groupby('category').agg(mean_cty = ('cty', 'mean'))
# 2. 위 출력 결과는 category값 알파벳순. 어떤 차종 cty(도시 연비)가 높은지 평균 높은 순으로 정렬하기.
# mpg.groupby('category').agg(mean_cty = ('cty', 'mean')).sort_values('mean_cty', ascending = False)
# 3. hwy(고속도로 연비) 평균이 가장 높은 회사 세 곳을 출력하기
# mpg.groupby('manufacturer').agg(mean_hwy = ('hwy', 'mean')).sort_values('mean_hwy', ascending = False).head(3)
# 4. 회사별 'compact' 차종 수 내림차순 정렬하여 출력하기
# mpg.query('category == "compact"').groupby('manufacturer').agg(n= ('manufacturer', 'count')).sort_values('n', ascending = False)
or
# mpg.query('category == "compact"').value_counts('manufacturer')
[p. 95-98]
# 1. mpg 데이터의 f1 변수는 자동차에 사용하는 연료(fuel) 의미. 정보 활용하여 연료와 가격으로 구성된 데이터 프레임 만들기
# fuel = pd.DataFrame({'f1': ['c', 'd', 'e', 'p', 'r'], 'price_f1': [2.35, 2.38, 2.11, 2.76, 2.22]})
# 2. 위 fuel 데이터 이용하여 mpg 데이터에 price_f1(연료 가격) 변수 추가하기
# mpg = pd.read_csv('mpg.csv')
# mpg = pd.merge(mpg, fuel, how = 'left', on = 'f1')
# 3. model, f1, price_f1 변수 추출해 앞부분 5행 출력해보기
# mpg[['model', 'f1', 'price_f1']].head()
[p. 104-109]
# 미국 동북중부 437개 지역의 인구통계 정보 담은 midwest.csv 사용해서 해결하기
# 1. midwest 데이터에 ‘전체 인구 대비 미성년 인구 백분율’ 변수를 추가하기(popadults- 해당 지역의 성인 인구, poptotal- 전체 인구)
# midwest = pd.read_csv('midwest.csv')
# midwest['ratio'] = (midwest['poptotal'] - midwest['popadults'])./midwest['poptotal']*100
# 2. 미성년 인구 백분율 가장 높은 상위 5개 county(지역)의 미성년 인구 백분율 출력하기
# midwest.sort_values('ratio', ascending = False).head().[['county', 'ratio']]
# 3. 분류표 기준 따라 미성년 비율 등급 변수 추가하기
# midwest['grade'] = np.where(midwest['ratio'] >= 40,'large', np.where(midwest['ratio'] >= 30, 'middle', 'small'))
# 4. 각 등급에 지역 몇개 있는지 알아보기
# midwest.groupby('grade').agg(n= ('grade', 'count'))
or
# midwest['grade'].value_counts()
# 4. '전체 인구 대비 아시아인 인구 백분율' 변수 추가하고 하위 10개 지역의 state(주), county(지역), 아시아인 인구 백분율 출력하기(popasian- 해당 지역의 아시아인 인구)
# midwest.assign(ratio_asian = midwest['popasian']/ midwest['poptotal'] * 100.sort_values('ratio_asian').head().[['state', 'county', 'ratio_asian']]