PANDAS로 데이터 조작하기(2)
Chapter 01에서 배울 내용
- DataFrame: Pandas의 기본 데이터 형태
- DataFrame 합치기
- DataFrame 정보 요약하기
- DataFrame의 열(column) 선택하기
- DataFrame의 행(row) 선택하기(basic)
- DataFrame의 행(row) 선택하기(filtering)
- 분류하기(Sorting)
- DataFrame 통계 기술하기
- 데이터 질 평가(quality check)
- 행 이름 수정하기
- 이상치(outlier) 처리하기
- 파일 불러오기/내보내기
04 Columns selection
users['gender'] # select one column type(users['gender']) # Series users.gender # select one column using the DataFrame # select multiple columns users[['age', 'gender']] # select two columns my_cols = ['age', 'gender'] # or, create a list... users[my_cols] # ...and use that list to select columns type(users[my_cols]) # DataFrame
05 Rows selection(basic)
iloc은 수를 이용하여 indexing하는 함수입니다.
df = users.copy() df.iloc[0] # first row df.iloc[0, 0] # first item of first row df.iloc[0, 0] = 55 for i in range(df.shape[0]): df.iloc[i, 0] *= 100
반면 ix는 수뿐만 아니라 label로도 indexing이 가능합니다.
df = users.copy() df.ix[0] # first row df.ix[0, "age"] # first item of first row df.ix[0, "age"] = 55 for i in range(df.shape[0]): df.ix[i, "age"] *= 10
* 여기서 shape 함수는 DataFrame의 모양(행과 열)을 나타냅니다. users의 경우 6행 5열로 shape 함수의 리턴값은 [6, 5] 입니다.
06 Rows selection(filtering)
users[users.age < 20] # only show users with age < 20 young_bool = users.age < 20 # or, create a Series of booleans... young = users[young_bool] # ...and use that Series to filter rows users[users.age < 20].job # select one column from the filtered results
users[users.age < 20][['age', 'job']] # select multiple columns users[(users.age > 20) & (users.gender == 'M')] # use multiple conditions users[users.job.isin(['student', 'engineer'])] # filter specific values(job이 student와 engineer인 사람만 select)
07 Sorting(default: ascending)
df = users.copy() df.age.sort_values() # only works for a Series df.sort_values(by='age') # sort rows by a specific column df.sort_values(by='age', ascending=False) # use descending order instead df.sort_values(by=['job', 'age']) # sort by multiple columns df.sort_values(by=['job', 'age'], inplace=True) # modify df, "True inplace" modifies the original df
08 Descriptive statistics
기본적으로 모든 numeric columns의 정보를 요약하여 보여준다. include 옵션을 이용하여 대상을 지정할 수 있다.
print(df.describe()) print(df.describe(include='all')) print(df.describe(include=['object'])) # limit to one (or more) types, show descrition only 'object' columns
groupby
각 그룹별 통계 역시 볼 수 있다.
df.groupby("job").mean() for grp, data in df.groupby("job"): print(grp, "\n", data)
Out:
engineer age gender job name height 4 33 M engineer peter NaN manager age gender job name height 3 58 F manager paul NaN scientist age gender job name height 5 44 F scientist julie 171.0 student age gender job name height 0 19 F student alice 165.0 1 26 M student john 180.0 2 22 M student eric 175.0 |