파이썬 기초 문법 강의 – 6일차 Pandas 2

파이썬 기초 문법 강의 – 6일차 Pandas 2

이번 시간에는 이어서 판다스(Pandas)에 대해서 알아보겠습니다. 저번 시간의 판다스의 데이터 구조에 대해서 간단하게 알아보았는데요. 이제는 활용하는 방법에 대해서 간단히 알아보겠습니다.

판다스 활용하기

저번 시간에 이어서 타이타닉 데이터를 불러와서 사용해보도록 하겠습니다.

불러올 때 index_col 옵션은 데이터프레임에서 인덱스로 사용할 열을 지정하는 역할을 하는데요. 아래처럼 이 옵션을 생략하면 기본적으로 인덱스는 0부터 시작하는 정수로 설정됩니다.

import pandas as pd

TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
df = pd.read_csv(TRAIN_DATA_URL)

print(df)
df.info()
titan

이제 원하는 열만 선택한다고 하면 df[[‘survived’,’sex’]]를 통해 원하는 열만 선택해서 볼 수 있습니다.

>>> df[['survived','sex']]
     survived     sex
0           0    male
1           1  female
2           1  female
3           1  female
4           0    male

그리고 열 이름을 바꾼다고 하면 rename을 통해서 할 수 있습니다.

>>> df.rename(columns={'survived':'생존자'})
     생존자     sex   age  n_siblings_spouses  ...   class     deck  embark_town alone
0      0    male  22.0                   1  ...   Third  unknown  Southampton     n

그리고 딱 하나의 값을 가져오는 것은 at함수를 이용하면 되는데요. at[인덱스,칼럼]을 통해 불러올 수 있습니다.

>>> df.at[1,'sex']
'female'

그리고 df.iloc을 통해 정수로 슬라이싱도 가능한데요. 열을 부를때는 [:,1] 이런 형태나 그냥 열이름으로 인덱싱이 가능합니다. 행 역시 동일합니다.

df.iloc[:,1]
0        male
1      female
2      female
3      female

Name: sex, Length: 627, dtype: object
>>> df['sex']
0        male
1      female
2      female
3      female

Name: sex, Length: 627, dtype: object

그리고 value_counts()를 통해 남녀가 어느정도 비율인지 한번에 알수 있습니다.

>>> df['sex'].value_counts()
male      410
female    217
Name: sex, dtype: int64

판다스 조건으로 데이터 선택하기

그리고 조건을 입력하는 것도 가능한데요. 나이가 22살 보다 많은 사람을 찾는 것은 아래와 같이 간단하게 할 수 있습니다.

>>> df['age'] > 22
0      False
1       True
2       True
3       True
4       True

여기에 다중 조건을 준다면 아래처럼 조건을 준 다음 and는 &, or는 |를 통해 구현할 수 있습니다.

나이가 22살이고 요금을 10달러 이상인 사람들을 조회해봤습니다. 그리고 정렬은 sort_values(by=[‘age’]) 형태로 가능합니다.

>>> con1 = (df['age'] > 22)
>>> con2 = (df['fare'] > 10)
>>> df.loc[con1 & con2]
     survived     sex   age  ...     deck  embark_town  alone
1           1  female  38.0  ...        C    Cherbourg      n
3           1  female  35.0  ...        C  Southampton      n
6           1  female  27.0  ...  unknown  Southampton      n
10          0    male  39.0  ...  unknown  Southampton      n
13          1    male  28.0  ...  unknown  Southampton      y
..        ...     ...   ...  ...      ...          ...    ...
6
[307 rows x 10 columns]

>>> df.loc[con1 | con2].sort_values(by='age',ascending=False).head()
     survived   sex   age  ...     deck  embark_town  alone
449         1  male  80.0  ...        A  Southampton      y
74          0  male  71.0  ...        A    Cherbourg      y
356         0  male  71.0  ...  unknown    Cherbourg      y
91          0  male  70.5  ...  unknown   Queenstown      y
527         0  male  70.0  ...        B  Southampton      n

그리고 특정값이 포함되었는지는 isin 함수를 활용할 수 있습니다. 아래는 데크에서 C라는게 있는지 확인해보는 것입니다.

>>> df['deck'].isin(['C'])
0      False
1       True
2      False
3       True

그룹이라는 함수를 통해서 그룹을 만들 수 있는데요. 결과를 보니 여자의 생존률이 더 높다는 것을 알 수 있습니다.

  • mean은 평균
  • median은 중앙값
  • sum은 합계
  • count는 갯수
  • describe는 요약통계
  • var은 분산
  • std는 표준편차
  • mode 최빈값

등 다양한 기술 통계를 볼 수 있습니다.

 >>> df.groupby('sex').mean()
        survived        age  n_siblings_spouses    parch       fare
sex                                                                
female  0.778802  28.652074            0.654378  0.62212  47.118741
male    0.180488  30.149585            0.487805  0.25122  27.646044

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다