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
참고 문서