serendipity
Pandas 판다스 본문
Pandas란 ?
: 데이터를 읽고 정리하는데 최적화된 도구인 파이썬 데이터분석 라이브러리입니다.
다음 종류의 데이터에 적합합니다.
- SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이있는 데이블 형식 데이터
- 정렬되고 정렬되지 않은 시계열 데이터
- 행 및 열 레이블이 포함 된 임의의 행렬 데이터
- 다른 형태의 관찰 / 통계 데이터 세트
Pandas 사용
import pandas as pd
from pandas import Series, DataFrame
데이터 구조 (자료구조)
a. Series : 시리즈
= 데이터가 순차적으로 나열된 1차원 배열의 형태 , 열 벡터 (Index 와 Value로 구성)
- 시리즈 생성
score = {'english':80, 'math':100, 'science':95} # 딕셔너리
>>> score # {'english': 80, 'math': 100, 'science': 95}
score_sr = pd.Series(score) # series 함수를 이용하여 딕셔너리를 시리즈 구조로 변환
>>> score_sr
english 80
math 100
science 95
dtype: int64
# index 확인하기
score_sr.index # Index(['english', 'math', 'science'], dtype='object')
# 데이터 값만 확인하기 values
score_sr.values # array([ 80, 100, 95])
- Index 명 입력 및 변경
data = Series([ '데이터분석가', 'inzeong' ], index = ['직업', '이름'])
>>> data
직업 데이터분석가
이름 inzeong
# 이미 생성되어있는 index명 변경
data.index = ['직무', '성함']
>>> data.index # Index(['도시명', '사는사람', '나이'], dtype='object')
- 데이터 조회 (색인)
data = Series([1,2,3,4,5],index = ["서울","대전","대구","부산","광주"])
>>> data
서울 1
대전 2
대구 3
부산 4
광주 5
# 서울 데이터 조회
data.at["서울"] # 1
# 서울, 부산 데이터 조회
data.at[["부산" , "서울"]]
부산 4
서울 1
- NaN 데이터 처리
fill_value 옵션 : add와 같은 산술연산함수를 적용할 때 fill_value 옵션을 적용하여 NaN이 발생할 경우 특정 값으로 대입할 수 있습니다.
fillna 함수 : Series에 NaN값이 있을 경우, fillna를 이용해 NaN을 입력값으로 변경할 수 있습니다.
>> data
광주 NaN
대구 33.0
대전 22.0
마산 NaN
부산 NaN
서울 11.0
성남 NaN
전주 NaN
충주 NaN
data.fillna(0)
광주 0.0
대구 33.0
대전 22.0
마산 0.0
부산 0.0
서울 11.0
성남 0.0
전주 0.0
충주 0.0
dtype: float64
b. DataFrame (DF) : 데이터 프레임
= 인덱스가 같은 하나 이상의 Series가 모여진 데이터로 2차원 배열 , 여러개의 열로 이루어진 2차원의 백터 혹은 행렬
(data : 저장되는 데이터 / index : index에 대한 정보 / columns : 열에 대한 이름값 / dtype : 데이터에 대한 타입 명시)
- 데이터 프레임 생성
data = DataFrame([[180,75],[160,65],[170,75], [175,80]],
index = ["사람1","사람2","사람3","사람4"],
columns = ["키","몸무게"])
>> data
키 몸무게
사람1 180 75
사람2 160 65
사람3 170 75
사람4 175 80
- 인덱스 및 컬럼명 저장
data = DataFrame([[180,75],[160,65],[170,75], [175,80]])
#인덱스 저장
data.index = ["Man1","Man2","Man3","Man4"]
>>> data
0 1
Man1 180 75
Man2 160 65
Man3 170 75
Man4 175 80
#컬럼명 저장
data.columns = ["Height","Weight"]
>>> data
Height Weight
Man1 180 75
Man2 160 65
Man3 170 75
Man4 175 80
* rename() 메서드를 이용하여 원본 객체를 변환하는 방법
data.rename( columns = {'Height':'키', 'Weight':'무게'}, inplace=True)
>> data
키 무게
Man1 180 75
Man2 160 65
Man3 170 75
Man4 175 80
- 데이터 추가 (append)
#컬럼 추가
data["나이"] = [30,40,32,33]
>>> data
Height Weight 나이
Man1 180 75 30
Man2 160 65 40
Man3 170 75 32
Man4 175 80 33
# Series 또는 DataFrame에서 추가
data["BMI"] = data["Weight"] / ((data["Height"] / 100) * (data["Height"] / 100))
>>> data
Height Weight 나이 BMI
Man1 180 75 30 23.148148
Man2 160 65 40 25.390625
Man3 170 75 32 25.951557
Man4 175 80 33 26.122449
#행 추가
listOfSeries = [pd.Series([187, 85, 34, 0], index = Data1.columns),
pd.Series([183, 80, 32, 0], index = Data1.columns)]
data1 = data.append(listOfSeries)
>>> data1
Height Weight 나이 BMI
Man1 180 75 30 23.148148
Man2 160 65 40 25.390625
Man3 170 75 32 25.951557
Man4 175 80 33 26.122449
0 187 85 34 0.000000
1 183 80 32 0.000000
- 데이터 삭제 (drop)
* axis = 0 (행 기준 삭제) / axis = 1(열 기준 삭제)
#열 삭제
data2 = data1.drop("BMI", axis = 1)
>>> data2
Height Weight 나이
Man1 180 75 30
Man2 160 65 40
Man3 170 75 32
Man4 175 80 33
0 187 85 34
1 183 80 32
#행 삭제
data3 = data2.drop("Man1", axis = 1)
>>> data3
Height Weight 나이
Man2 160 65 40
Man3 170 75 32
Man4 175 80 33
0 187 85 34
1 183 80 32
- 데이터 조회
1. Column 조회
- DataFrame명["속성명"] 을 통해 특정 속성명만 조회 가능하다.
- DataFrame명.속성명 을 통해 특정 속성명만 조회 가능하다.
>>> data
키 몸무게 나이
사람1 180 75 30
사람2 160 65 40
사람3 170 75 32
사람4 175 80 33
# 키 Column 만 조회
>>> data["키"]
사람1 180
사람2 160
사람3 170
사람4 175
# 두 개 이상 컬럼 조회
>>> data[["키", "몸무게"]]
키 몸무게
사람1 180 75
사람2 160 65
사람3 170 75
사람4 175 80
2. Index 조회
- DataFrame명.loc["index명"] 을 통해 특정 index만 조회 가능하다.
- DataFrame명.iloc[index번호] 를 통해 특정 index만 조회 가능하다.
인덱스 이름으로 행을 선택할 때에는 loc를 이용하고 , 위치로 인덱스를 사용할 때에는 iloc를 사용합니다.
>>> data2
키 몸무게 나이
사람1 180 75 30
사람2 160 65 40
사람3 170 75 32
사람4 175 80 33
>>> data2.loc["사람1"]
키 180
몸무게 75
나이 30
>>> data2.iloc[1] #사람2의 정보만 출력
키 160
몸무게 65
나이 40
'Study > Big Data' 카테고리의 다른 글
Hadoop 하둡 (0) | 2021.08.24 |
---|---|
Matplotlib (0) | 2021.07.10 |
Numpy 넘파이 (0) | 2021.07.10 |
구글 고급 애널리틱스 (0) | 2021.07.08 |
구글 초보 애널리틱스 (0) | 2021.07.08 |