Python/NumPy | Pandas

[Python] Pandas - DataFrame 1

비번변경 2022. 12. 10. 01:38

DataFrame

DataFrame은 2차원 행렬 데이터에 인덱스를 붙인 것과 같다. 각 행에 행 인덱스(row index), 열에는 열 인덱스(column index)를 붙일 수 있다.

 

DataFrame 생성

DataFrame을 간단히 생성하는 방법은 다음과 같다.

1. 힌 개의 열이 될 데이터를 리스트나 1차원 배열로 준비한다.

2. 열에 대한 이름을 키로 가지는 딕셔너리를 생성한다.

3. 데이터를 DataFrame 생성자로 전달한다. 열 인덱스는 columns 인수로, 행 인덱스는 index 인수로 지정한다.

data = {
    "2015": [9904312, 3448737, 2890451, 2466052],
    "2010": [9631482, 3393191, 2632035, 2431774],
    "2005": [9762546, 3512547, 2517680, 2456016],
    "2000": [9853972, 3655437, 2466338, 2473990],
    "지역": ["수도권", "경상권", "수도권", "경상권"],
    "2010-2015 증가율": [0.0283, 0.0163, 0.0982, 0.0141]
}
columns = ["지역", "2015", "2010", "2005", "2000", "2010-2015 증가율"]
index = ["서울", "부산", "인천", "대구"]
df = pd.DataFrame(data, index=index, columns=columns)
df

# 실행 결과
     지역     2015     2010     2005     2000  2010-2015 증가율
서울  수도권  9904312  9631482  9762546  9853972         0.0283
부산  경상권  3448737  3393191  3512547  3655437         0.0163
인천  수도권  2890451  2632035  2517680  2466338         0.0982
대구  경상권  2466052  2431774  2456016  2473990         0.0141

DataFrame은 2차원 배열 데이터라고 이해하는 것보다 공통 인덱스를 가진 column series를 딕셔너리로 묶어놓은 것이라고 보는 게 더 정확하다. 

 

데이터를 접근하려면 values 속성을 이용하고, 열 인덱스와 행 인덱스 각각은 columns, index 속성을 이용하도록 한다.

df.values
df.columns
df.index

# 실행 결과
array([['수도권', 9904312, 9631482, 9762546, 9853972, 0.0283],
       ['경상권', 3448737, 3393191, 3512547, 3655437, 0.0163],
       ['수도권', 2890451, 2632035, 2517680, 2466338, 0.0982],
       ['경상권', 2466052, 2431774, 2456016, 2473990, 0.0141]], dtype=object)
Index(['지역', '2015', '2010', '2005', '2000', '2010-2015 증가율'], dtype='object')
Index(['서울', '부산', '인천', '대구'], dtype='object')

 

행 인덱스와 열 인덱스 각각에 이름을 붙일 수도 있다.

df.index.name = "도시"
df.columns.name = "특성"
df

# 실행 결과
특성   지역     2015     2010     2005     2000  2010-2015 증가율
도시                                                        
서울  수도권  9904312  9631482  9762546  9853972         0.0283
부산  경상권  3448737  3393191  3512547  3655437         0.0163
인천  수도권  2890451  2632035  2517680  2466338         0.0982
대구  경상권  2466052  2431774  2456016  2473990         0.0141

 

DataFrame은 전치를 포함한 NumPy 2차원 배열이 가지는 대부분의 속성과 메서드를 지원한다.

df.T

# 실행 결과
도시                  서울       부산       인천       대구
특성                                               
지역                 수도권      경상권      수도권      경상권
2015           9904312  3448737  2890451  2466052
2010           9631482  3393191  2632035  2431774
2005           9762546  3512547  2517680  2456016
2000           9853972  3655437  2466338  2473990
2010-2015 증가율   0.0283   0.0163   0.0982   0.0141

 

 

열 데이터의 갱신, 추가, 삭제

DataFrame은 열 시리즈의 딕셔너리이므로 열 단위로 데이터를 갱신, 추가, 삭제할 수 있다.

 

아래 코드는 2010-2015 증가율 열의 데이터를 갱신한 것이다.

df["2010-2015 증가율"] = df["2010-2015 증가율"] * 100
df

# 실행 결과
특성   지역     2015     2010     2005     2000  2010-2015 증가율
도시                                                        
서울  수도권  9904312  9631482  9762546  9853972           2.83
부산  경상권  3448737  3393191  3512547  3655437           1.63
인천  수도권  2890451  2632035  2517680  2466338           9.82
대구  경상권  2466052  2431774  2456016  2473990           1.41

 

아래 코드는 2005-2010 증가율이라는 열을 추가하는 것이다.

df["2005-2010 증가율"] = ((df["2010"] - df["2005"]) / df["2005"] * 100).round(2)
df

# 실행 결과
특성   지역     2015     2010     2005     2000  2010-2015 증가율  2005-2010 증가율
도시                                                                       
서울  수도권  9904312  9631482  9762546  9853972           2.83          -1.34
부산  경상권  3448737  3393191  3512547  3655437           1.63          -3.40
인천  수도권  2890451  2632035  2517680  2466338           9.82           4.54
대구  경상권  2466052  2431774  2456016  2473990           1.41          -0.99

 

아래 코드는 2010-2015 증가율이라는 열을 삭제하는 것이다.

del df["2010-2015 증가율"]
df

# 실행 결과
특성   지역     2015     2010     2005     2000  2005-2010 증가율
도시                                                        
서울  수도권  9904312  9631482  9762546  9853972          -1.34
부산  경상권  3448737  3393191  3512547  3655437          -3.40
인천  수도권  2890451  2632035  2517680  2466338           4.54
대구  경상권  2466052  2431774  2456016  2473990          -0.99

 

 

참고 문서

데이터 사이언스 스쿨 - 4.1 판다스 패키지의 소개