오늘 할 일: 끝내주게 숨쉬기
article thumbnail

지난 포스팅()에서는 Pandas 라이브러리를 활용하여 데이터프레임 만들기, 조회하기를 알아보았습니다. 이번 포스팅에서는 만들어진 데이터프레임을 활용하여 칼럼명 변경, 정렬, 결합 그리고 칼럼 순서 변경에 대해 알아보겠습니다.

 

rename : 칼럼명 변경

특정 칼럼의 이름을 변경하기 위해 rename()을 사용합니다. 여기서는 Math 칼럼의 이름을 MATH로 변경하였습니다. 

print(grades.columns)
grades.rename(columns = {'Math':'MATH'}, inplace = True)
print(grades.columns)
Index(['Math', 'Science', 'English', 'History'], dtype='object')
Index(['MATH', 'Science', 'English', 'History'], dtype='object')

 

sort_values : 칼럼 정렬

지정된 칼럼을 기준으로 오름차순/내림차순 정렬을 하고 반환합니다.

grades.sort_values('Math')   # 오름차순 정렬

grades.sort_values('Math', ascending = False) # 내림차순 정렬

 

concat : 데이터 프레임 결합

데이터 프레임을 아래로 이어붙이기 위해 임의의 데이터 프레임 grade2를 생성하였습니다.

grades2 = pd.DataFrame({'Math'     : [77,55,93,76],
                        'Science'  : [88,60,90,74],
                        'English'  : [84,76,66,90],
                        'History'  : [77,69,92,81]})
grades2

grades와 grades2를 행결합하기 위해 concat()를 사용합니다. axis=0은 행을 기준으로 결합한다는 것을 의미합니다. 

pd.concat([grades, grades2], axis=0, ignore_index=True)

 

열결합은 어떻게 할까요? axis=1을 지정해주면 됩니다.

grades3 = pd.DataFrame({'Korean'   : [90,74,66,82,84,79,92,88]})
pd.concat([grades, grades3], axis=1)

 

다음과 같이 칼럼명과 값을 지정하여 열을 추가할 수도 있습니다.

grades['Student'] = ['Tom', 'Jane', 'Mike', 'Jason', 'Kim', 'Stephanie', 'Mary', 'Jack']
grades['Gender']  = ['M','F', 'M', 'M', 'F', 'F', 'F', 'M']
grades['Class']   = ['A', 'A', 'C', 'B', 'C', 'A', 'B', 'C']
grades

 

칼럼 순서 변경

원하는 순서대로 칼럼명을 담은 리스트를 만든 후, 다음과 같은 과정을 통해 칼럼 순서를 변경할 수 있습니다.

cols = ['Student', 'Class', 'Gender', 'Math', 'Science', 'English', 'History']
grades = grades[cols]
grades

 

참고자료

https://pandas.pydata.org/

 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org

https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf

불러오는 중입니다...

https://towardsdatascience.com/pandas-cheat-sheet-4c4eb6802a4b