판다스 column, row
1. 인덱싱, 슬라이싱을 이용한 데이터 추출
1) row, column명으로 가져오기
"""Row 1개"""
# df.loc['row']
print(df.loc['no.2'])
print(type(df.loc['no.2']))
----------------------------------
Name Paul Labile Pogba
Country France
Team Manchester United
Name: no.2, dtype: object
<class 'pandas.core.series.Series'>
"""Column 1개"""
# df.loc[:,'col']
# df['col']
print(df.loc[:, 'Name'])
print(type(df.loc[:, 'Name']))
---------------------------------
no.1 Steven Gerrard
no.2 Paul Labile Pogba
no.3 Zinedine Zidane
no.4 Zlatan Ibrahimović
no.5 Cristiano Ronaldo
no.6 Patrick Vieira
Name: Name, dtype: object
<class 'pandas.core.series.Series'>
"""여러개의 Row"""
# df.loc[['row1','row2','row4']]
df.loc[['no.1', 'no.3', 'no.4']]
"""여러개의 Column"""
# df.loc[:,['col1','col4']]
# df[['col1','col4']]
df.loc[:, ['Name', 'Team']]
"""Row slicing"""
# df.loc['row1':'row4']
# df['row1':'row4']
df.loc['no.3':'no.6']
"""Column slicing"""
# df.loc[:,'col1':'col3']
df.loc[:, 'Country':'Team']
# slicing, slicing
df.loc['no.2':'no.5', 'Name':'Team']
# slicing, indexing
df.loc['no,2':'no.5', ['Name', 'Team']]
# indexing, slicing
df.loc[['no.2', 'no.4'], 'Name':'Team']
# indexing, indexing
df.loc[['no.1', 'no.3', 'no.5'], ['Name', 'Team']]
2) 위치(번호)로 가져오기
"""Row 1개"""
# df.iloc[숫자]
# df[숫자]
"""Column 1개"""
# df.iloc[:,숫자]
"""여러개의 Row"""
# df.iloc[[숫자, 숫자]]
# df[[숫자, 숫자]]
"""여러개의 Column"""
# df.loc[:,[숫자, 숫자]]
"""Row slicing"""
# df.iloc[숫자:숫자]
# df[숫자:숫자]
"""Column slicing"""
# df.iloc[:, 숫자:숫자]
3) 조건식으로 가져오기
"""특정 Column조건에 맞는 샘플(row)들"""
# condition = df['col'] > 5
# condition = df['col'] == '대한민국'
# new_df = df[condition]
condition_1 = df['Country'] == 'France'
condition_2 = df['Team'] == 'Manchester United'
condition_3 = condition_1 & condition_2
df[condition_3]
🔔 한 개의 row, column을 DataFrame으로 가져오고 싶은 경우
# Series
df.loc['row1']
# DataFrame
df.loc[['row1']]
2. row, column 삭제하기
labels
는 지우고자 하는 항목의 index명 또는 column명입니다. 단일 값 또는 list, ndarray와 같은 배열을 값으로 줄 수 있습니다. axis
는 labels
에서 선택한 값이 index명이면 ‘axis=index’ 또는 ‘axis=0’, column명이면 ‘axis=columns’ 또는 ‘axis=1’입니다. index
, columns
인자는 앞의 두 인자를 하나로 받는 역할을 합니다. inplace
는 DataFrame의 값을 바꿀 것인지 그대로 둘 것인지를 나타냅니다. ‘inplace=True’로 할 경우 DataFrame의 값이 바뀌게 됩니다. 예시를 살펴보겠습니다.
""""샘플 한 개 삭제"""
# labels와, axis에 값을 주는 방법
df.drop('no.1', axis='index', inplace=True)
df.drop('no.1', axis=0, inplace=True)
# index인자에만 값을 주는 방법, 결과는 동일
df.drop(index='no.1', inplace=True)
"""샘플 몇 개 삭제"""
df.drop(['no.2', 'no.5'], axis='index', inplace=True)
df.drop(index=['no.2', 'no.5'], inplace=True)
"""샘플 슬라이싱으로 삭제"""
df.drop(df.index[1:3], axis='index', inplace=True)
"""Column 한 개 삭제"""
# del 내장 함수 사용 -> inplace=True
del df['Name']
df.drop('Name', axis='columns', inplace=True)
df.drop('Name', axis=1, inplace=True)
df.drop(columns='Name', inplace=True)
"""Column 몇 개 삭제"""
df.drop(['Name','Team'], axis=1, inplace=True)
df.drop(columns=['Name', 'Team'], inplace=True)
"""Column 슬라이싱으로 삭제"""
df.drop(df.columns[1:3], axis='columns', inplace=True)
df.drop(columns=df.columns[1:3], inplace=True)
3. index, column명 바꾸기
1) index, column명 확인하기
# index명 확인하기
df.index
-------------------------------------
Index(['no.1', 'no.2', 'no.3', 'no.4', 'no.5', 'no.6'], dtype='object')
# column명 확인하기
df.columns
-------------------------------------
Index(['Name', 'Country', 'Team'], dtype='object')
2) index, column명 바꾸기
# index명 바꾸기
# df.rename(index={'old_index': 'new_index'}, inplace=True)
df.rename(index={'no.1': 'no.9999', 'no.5':'no.1234'}, inplace=False)
# column명 바꾸기
# df.rename(columns={'old_column': 'new_column'}, inplace=True)
df.rename(columns={'Name': '선수명', 'Country':'국적', 'Team':'팀'}, inplace=False)
4. index설정하기
1) 특정 column index로 가져오기
df.set_index('Name', inplace=True)
df.columns
-------------------------------------------------------------------
Index(['Country', 'Team'], dtype='object')
df.index
---------------------------------------------------------------------
Index(['Steven Gerrard', 'Paul Labile Pogba', 'Zinedine Zidane',
'Zlatan Ibrahimović', 'Cristiano Ronaldo', 'Patrick Vieira'],
dtype='object', name='Name')
2) index명 정하기
df.index.name = '등록 번호'
df.columns
-------------------------------------
Index(['Name', 'Country', 'Team'], dtype='object')
df.index
-------------------------------------
Index(['no.1', 'no.2', 'no.3', 'no.4', 'no.5', 'no.6'], dtype='object', name='등록 번호')