본문 바로가기
TOP
데이터 스킬업/데이터 처리&시각화(Python)

[파이썬 : DataFrame 다루기] #01 DataFrame 생성, 컬럼값(특정값)/인덱스 기준 정렬 with Pandas

by 티챠림 2022. 7. 17.

[왕초보 데이터분석 무작정 따라하기] 데이터분석의 가장 기초가 되는 DataFrame에 대해 알아보고, 파이썬을 통한 DataFrame 생성과 정렬 코드를 설명한다.


 DataFrame 생성, 컬럼(특정값)/인덱스 기준 정렬


Dataframe 생성 (바로가기 Click)

컬럼기준 정렬/인덱스기준 정렬 (바로가기 Click)


기능 코드 파라미터
pandas 라이브러리 불러오기 import pandas as pd  
DataFrame 만들기 pd.DataFrame(data = , columns =[])  data = : 데이터를 구성하는 row 리스트
colmns = ['컬럼명', ...] : 컬럼명 지정
컬럼 기준 정렬하기 .sort_values(by = [], ascending = ) by = ['컬럼명'] : 기준이 될 '컬럼명' 지정
ascnding = : True는 오름차순, False 내림차순
인덱스 기준 정렬하기 .sort_index(ascending = ) ascnding = : True는 오름차순, False 내림차순

가장 기본적인 데이터 분석은 데이터를 눈으로 보는 것이다. 하지만, 적게는 수십수백에서 많게는 수십수백만에 달하는 데이터를 눈으로 보는 것은 거의 불가능한 일이다. 그렇기 때문에 우리는 행과 열로 구성된 표의 형태로 데이터들을 정리한다. 이를 DataFrame이라고 하며 우리는 표의 행과 열을 의도에 맞게 정렬하는 것으로 데이터를 보다 쉽게 볼 수 있다.

 

DataFrame은 나열된 데이터 묶음인 list로 구성되는데 그 구조는 아래 그림과 같다. columns은 '각 데이터 카테고리의 이름표' 묶음이며,  rows는 '컬럼 순으로 정렬된 데이터 값을 묶은 row' 묶음으로 생각하면 이해가 쉬울 것이다.

DataFrame 구조와 list 구조

 

 

   Dataframe 생성


아래와 같은 DdataFrame을 만든다고 할 때의 파이썬 코드는 다음과 같다. 먼저 각 데이터의 카테고리 별 이름을 나열한 columns 리스트를 만들고, 각 데이터를 column에 해당하는 순서대로 나열란 row 리스트를 만들면 된다. 마지막으로 각 row 리스트를 rows 리스트로 한번 더 묶으면 DataFame 생성을 위한 list 구조는 완성된다. 

 

import pandas as pd	#DataFrame을 사용하기 위한 pandas 라이브러리를 불러와서 pd로 정의

cols = ['str', 'int', 'float']	#데이터 카테고리 별로 이름 지정한 columns 리스트, cols

row1 = ['a', 1, 0.1]	#데이터값이 정렬된 1번째 row 리스트, row1
row2 = ['b', 1, 0.2]	#데이터값이 정렬된 2번째 row 리스트, row2
row3 = ['c', 2, 0.1]	#데이터값이 정렬된 2번째 row 리스트, row2

rows = [row1, row2, row3]		#row들을 묶어주는 리스트 rows

df = pd.DataFrame(data = rows, columns= cols)	#DataFrame 생성
df

 

각 데이터값이 정렬된 row가 3개 쌓여 DataFrame 구조를 만들고, column을 지정해줘 각 데이터값의 순서에 따라 str, int, float이라는 이름표를 달아준 것이다. 가장 왼쪽 0, 1, 2 번호는 Dataframe의 index으로 각 row에 대한 번호표라고 생각하면 된다. 일상적으로 숫자를 1부터 사용하는 것과 다르게 코딩의 세계에서는 숫자는 항상 0부터 시작한다.

 

 

 

   Dataframe 정렬


데이터를 정리할 때, 가장 기본적으로 사용하는 기능은 정렬일 것이다. sort_values 메소드를 사용하면 특정값을 기준으로한 내림차순 또는 오름차순으로 정렬할 수 있고, sort_index 메소드를 사용하여 인덱스를 기준으로 정렬할 수 있다.

 

1. 특정값으로 정렬

.sort_values(by = , ascending = )

  • by = '컬럼명' : 기준이 될 '컬럼명' 지정
  • ascending = True or False : True는 오름차순, False 내림차순

 

float를 기준으로 내림차순 정렬

#float를 기준으로 내림차순
sorT_df = df.sort_values(by = 'float',ascending = True)
sorT_df

 

 

 

 

 float를 기준으로 오름차순 정렬

#float를 기준으로 오름차순
sorF_df = df.sort_values(by = 'float',ascending = False)
sorF_df

 

 

 

 

 int를 기준으로 내림차순, float를 기준으로 오름차순 정렬

#int를 기준으로 내림차순, float를 기준으로 오름차순
sorted_df = df.sort_values(by = ['int', 'float'],ascending = [False, True])
sorted_df

 

 

 


 

2. 인텍스 기준으로 정렬

.sort_index( ascending = )

  • ascending = True or False : True는 오름차순, False 내림차순

 

값으로 정렬한 값을 다시 index 순으로 정렬할 수 있고, 마찬가지로 내림차순과 오름차순으로 가능하다

 

 index 기준으로 오름차순 정렬

#index 기준으로 오름차순
inT_df = sorted_df.sort_index(ascending =True)
inT_df

 

 

 

 index 기준으로 내림차순 정렬

#index 기준으로 내림차순
inF_df = sorted_df.sort_index(ascending = False)
inF_df

 

 

댓글