#통합 연비 변수 만들기
mpg_new=mpg_new.rename(columns={'mf':'manufacturer'})
mpg_new['total']=(mpg['cty']+mpg['hwy'])/2
mpg_new.head()
#파생변수 분석하기
mpg_new['total'].mean()
mpg_new['total'].describe()
#그래프 만들기
mpg_new['total'].plot.hist()
#합격 판정 변수 만들기(np는 numpy)#total 20이상이면 pass, 아니면 failimport numpy as np
mpg_new['test']=np.where(mpg_new['total']>=20,'pass','fail')
mpg_new.head()
#연비 합격 빈도표 만들기
mpg_new['test'].value_counts()
#막대 그래프로 빈도 표현하기
count_test=mpg_new['test'].value_counts() #연비 합격 빈도표를 변수에 할당
count_test.plot.bar() #연비 합격 빈도 막대 그래프 만들기
count_test.plot.bar(rot = 0) #축 이름 수평으로 만들기#연비 등급 변수 만들기
mpg_new['grade']=np.where(mpg_new['total']>=30, 'A' , np.where(mpg_new['total']>=20,'B','C'))
mpg_new.head()
#빈도표와 막대 그래프로 연비등급 살펴보기
count_grade=mpg_new['grade'].value_counts()
count_grade.plot.bar(rot=0)
#알파벳순으로 막대 정렬하기
count_grade = mpg_new['grade'].value_counts().sort_index() #메서드 체이닝: (.)을 이용해 메서드를 계속 이어서 작성하는 방법, 변수에 여러 메서드를 순서대로 적용
count_grade.plot.bar(rot = 0)
메서드 체이닝(method chaining)
.을 이용해 메서드를 계속 이어서 작성하는 방법
변수에 여러 메서드를 순서대로 적용
출력 결과를 변수에 할당하고 다시 불러오는 작업을 반복하지 않아도 됨
버티컬바(|): '또는(or)'을 의미하는 기호
#목록에 해당하는 행으로 변수 만들기
mpg_new['size']=np.where((mpg_new['category']=='compact')|(mpg_new['category']=='subcompact')|(mpg_new['category']=='2seater'),'small','large')
count_size=mpg_new['size'].value_counts()
count_size.plot.bar(rot=0)
#df.isin() 활용
mpg_new['size']=np.where(mpg_new['category'].isin(['compact','subcompact','2seater']),'small','large')
count_size=mpg_new['size'].value_counts()
count_size.plot.bar(rot=0)
데이터 전처리
분석에 적합하게 데이터를 가공하는 작업
pandas: 전처리 작업에 가장 많이 사용되는 패키지
조건에 맞는 데이터만 추출하기: .query()
import pandas as pd
exam = pd.read_csv('exam.csv'#nclass가 1인 경우
exam.query('nclass==1')
#nclass가 2인 경우
exam.query('nclass==2')
#수학 점수가 50점 초과
exam.query('math>50')
#1반이면서 수학점수가 50점 이상인 경우
exam.query('nclass==1 & math>=50')
#여러 조건 중 하나 이상 충족하는 행
exam.query('math>=90|english>=90')
exam.query('nclass in [1,3,5]')
#전체 조건에 작은 따옴표, 추출할 문자에 큰 따옴표 사용
df.query('sex=="F"& country=="Korea"')
#전체 조건에 큰 따옴표, 추출할 문자에 작은 따옴표
df.query("sex=='M'& country=='China'")