PANDAS로 데이터 조작하기(2)

Chapter 01에서 배울 내용

  1. DataFrame: Pandas의 기본 데이터 형태
  2. DataFrame 합치기
  3. DataFrame 정보 요약하기
  4. DataFrame의 열(column) 선택하기
  5. DataFrame의 행(row) 선택하기(basic)
  6. DataFrame의 행(row) 선택하기(filtering)
  7. 분류하기(Sorting)
  8. DataFrame 통계 기술하기
  9. 데이터 질 평가(quality check)
  10. 행 이름 수정하기
  11. 이상치(outlier) 처리하기
  12. 파일 불러오기/내보내기

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

 

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다