df[['A', 'B']]
#순서 변경 가능
df[['B', 'A']]
-> 두 개의 컬럼을 가져올 땐 리스트의 형태로 한 번 더 [ ]로 묶어줘야 함
-> loc를 통해서도 동일한 결과 값을 가져올 수 있음
<남성만 가져오기>
df[(df['sex'] == 'Male') & (df['smoker'] == 'Yes')]
-> 각 조건을 소괄호 형태로 묶어주고, &(and)
기호를 이용해서 이어 붙여주면 됨
df[(df['sex'] == 'Male') | (df['smoker'] == 'Yes')]
-> 각 조건을 소괄호 형태로 묶어주고, |(or)
기호를 사용해서 이어 붙여주면 됨
<사이즈가 3 초과인 전체 데이터 불러오기>
df.loc[df['size'] > 3, :]
<특정 컬럼만>
df.loc[df['size'] > 3, 'tips' : 'smoker']
<특정 컬럼에서 특정 값만 찾고 싶을 때>
df[df['size'].isin([1, 2])]
<문자로 변경해서 찾고 싶을 때>
df[df['day'].isin(['sun', 'Thur'])]
<여러 개의 조건이 있을 때 \(역슬래쉬)
를 통해 줄 바꿈 가능>
ex)
cond = (df['sex'] == 'Male')\
& (df['tip'] > 3) \
& (df['smoker'] == 'Yes')\
& (df['total_bill'] >=20) \
& (df['size'] == 4
df[cond]
df['created_at'] = pd.to_datetime(df['created_at'])
-> 두 데이터 타입으로 변환해준 값을 넣고 출력해서 df.info()로 확인해보면 데이터 타입이 변경됨
<revenue 컬럼 추가>
df['revenue'] = df['total_bill'] + df['tip']
<tip의 퍼센트를 보고 싶을 때(tip의 차지 비율)>
df['tip_percentage'] = df['tip'] / df['revenue']*100
<concat(두 데이터 프레임을 양 옆으로 합치거나 위 아래로 합치는 방법)>
pd.concat([df1, df2, df3], axis = 0).reset_index(drop=True)
-> 위 아래로 합쳐졌고, 정수 값으로 정렬됨
-> axis = 0
은 위 아래의 기본 값
df = pd.concat([df1, df2], axis = 1)
-> 양 옆으로 합쳐짐
-> axis = 1
은 양 옆의 기본 값
<merge(특정 컬럼을 고려해서 데이터 병합[SQL의 JOIN과 유사])>
pd.merge(df1, df2, on = 'key')
-> 별도 리스트 형태로 묶지 않아도 되지만 순서가 중요
-> on = 'key'
는 병합하고자 하는 컬럼의 기준
#SQL의 INNER JOIN과 같음
pd.merge(df1, df2, on = 'key', how = 'inner')
#SQL의 LEFT JOIN과 같음
pd.merge(df1, df2, on = 'key', how = 'left')
#SQL의 RIGHT JOIN과 같음
pd.merge(df1, df2, on = 'key', how = 'right')
#전체 데이터 출력
pd.merge(df1, df2, on = 'key', how = 'outer')
(데이터 생성)
df = pd.DataFrame({
'Category' : ['A', 'B', 'A', 'B', 'A', 'B'],
'Valwe' : [1, 2, 3, 4, 5, 6]
})
df
<카테고리 기준 group by>
#mean() 평균 집계
df.groupby('Category').mean()
#count() 개수
df.groupby('Category').count()
#max() 최대
df.groupby('Category').max()
#min() 최소
df.groupby('Category').min()
#frist() 첫 번째 등장한 애들만 넣는 것
df.groupby('Category').frist()
#agg()
df.groupby('Category').agg(list)
-> value 값이 list 형태로 묶여서 출력
pivot = df.pivot_table(index = 'Date', columns = 'Category', values = 'Value', aggfunc = 'sum')
-> Date라는 인덱스 생성
-> 카테고리의 컬럼에 따라 value 값이 합계된 형태로 데이터 구성
df.sort_value(by='age', ascending = False)
-> age 컬럼 기준으로 정렬을 하는 것이며, 기본 값은 오름차준으로 정렬됨
-> ascending = False
를 입력하면 내림차순으로 정렬
df.sort_index(ascending = False)
-> 인덱스 기준으로도 정렬 가능