Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- python
- 웹크롤링
- ESG지원사업
- 데이터
- 고용노동부
- 파이썬타자게임
- ABC부트캠프
- 청년친화형
- 파이썬기초
- 머신러닝
- 공공데이터
- 파이썬라이브러리
- 파이썬
- 한국산업인력공단
- jupiternotebook
- JupyterNotebook
- 유클리드소프트
- 주피터노트북
- 소셜이노베이션
- 디지털마케팅
- 프로그래밍
- 데이터분석
- 빅데이터
- 딥러닝
- pythonlibrary
Archives
- Today
- Total
TECH_LOG
Python Library_Pandas3 [ DataFrame ] 본문
ABC부트캠프_2023.03.23
DataFrame 표 같은 스프레드시트 형식의 자료구조 - 각 컬럼은 다른 종류의 값을 담을 수 있음 |
- 우선 하나의 열이 되는 데이터를 리스트나 일차원 배열을 준비한다.
- 이 각각의 열에 대한 이름(라벨)을 키로 가지는 딕셔너리를 만든다.
- 이 데이터를 DataFrame 클래스 생성자에 넣는다. 동시에 열방향 인덱스는 columns 인수로, 행방향 인덱스는 index 인수로 지정한다.
- 데이터 프레임 생성
import pandas as pd
from pandas import Series, DataFrame
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
df.values # 1차원 배열로 구성 되었던 값들 출력
>>>
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)
df.columns
>>>
Index(['지역', '2015', '2010', '2005', '2000', '2010-2015 증가율'], dtype='object')
df.index
>>>
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
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
#"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
# (2010년 값 - 2005년 값) 을 2005년 값으로 나누어준 후 x100 , 소숫점 두자리까지
>>>
특성 지역 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
- 열 인덱싱
df["지역"]
>>>
도시
서울 수도권
부산 경상권
인천 수도권
대구 경상권
df[["2010", "2015"]]
>>>
특성 2010 2015
도시
서울 9631482 9904312
부산 3393191 3448737
인천 2632035 2890451
대구 2431774 2466052
df[["2010"]] #데이터프레임 자료형 유지
>>>
특성 2010
도시
서울 9631482
부산 3393191
인천 2632035
대구 2431774
type(df[["2010"]])
>>> pandas.core.frame.DataFrame
type(df["2010"])
>>>pandas.core.series.Series
import numpy as np
df2 = pd.DataFrame(np.arange(12).reshape(3,4))
df2
>>>
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
df2[2]
>>>
0 2
1 6
2 10
df2[[2,3]] # colum을 기준으로 2,3을 추출
# colum은 인덱스로 추출
# 행은 슬라이싱으로 추출
>>>
2 3
0 2 3
1 6 7
2 10 11
- 행 인덱싱
- 행 단위로 인덱싱을 하고자 하면 항상 슬라이싱 해야 함.
df2[1:3] #행의 1인덱스 부터 2인덱스 까지 슬라이싱
>>>
0 1 2 3
1 4 5 6 7
2 8 9 10 11
df[:1]
>>>
특성 지역 2015 2010 2005 2000 2005-2010 증가율
이름
서울 수도권 9904312 9631482 9762546 9853972 -1.34
-- 예제
'Programming' 카테고리의 다른 글
Python Library_Pandas5[ 데이터프레임의 데이터 조작, 정렬, 행/열 합계 ] (0) | 2023.03.27 |
---|---|
Python Library_Pandas4 [ 데이터 입출력, loc, iloc ] (0) | 2023.03.23 |
Python Library_Pandas2[ Series2 ] (0) | 2023.03.23 |
Python Library_Pandas1[ Pandas의 개념,Series1 ] (0) | 2023.03.22 |
Python Library_Numpy4[데이터 무작위선택, 난수생성, 정렬] (0) | 2023.03.22 |
Comments