반응형
판다스(Pandas) 란?¶
- 데이터 처리와 분석을 위한 파이썬 라이브러리
- 파이썬계의 엑셀
- http://pandas.pydata.org
- 아나콘다 설치시 자동으로 설치
- 외부모듈이라서 임포트는?
import pandas as pd
Pandas의 자료구조¶
- 시리즈(Series) : 리스트와 딕셔너리 두가지의 장점을 섞어놓은 듯한 자료구조
- 데이타프레임(DataFrame) : Row와 Column으로 이뤄진 2차원 형태의 자료구조. 시리즈(Series)의 결합체
pandas, numpy import¶
In [2]:
import numpy as np
import pandas as pd
pandas 버전 확인하기¶
In [3]:
pd.__version__
Out[3]:
Series 만들기¶
- 시리즈(Series)란?
인덱스와 값이 자동으로 생성되는 데이터 단위
넘파이 배열에서 인덱스가 추가된 형태
시리즈의 집합체는? => 데이타 프레임
파이 그래프 활용에 필요함
1차원 배열
시리즈이름 = pd.Series([리스트])
- 시리즈이름 = pd.Series({딕셔너리})
- 시리즈이름 = pd.Series(넘파이배열 np.arange() 등)
정수 리스트로 시리즈 생성¶
In [4]:
s1 = pd.Series([1,-5,8,9,10])
s1
Out[4]:
In [5]:
type(s1)
Out[5]:
문자열 리스트로 시리즈 생성¶
In [6]:
s2 = pd.Series(['도','레','미'])
s2
Out[6]:
In [7]:
type(s2)
Out[7]:
딕셔너리로 시리즈 생성¶
- 키값이 인덱스로 변경된다.
In [9]:
myDict = {'a':'apple','b':'banana','c':'cat'}
mySeries = pd.Series(myDict)
mySeries
Out[9]:
딕셔너리처럼 시리즈이름.인덱스이름 이나 시리즈이름[인덱스이름] 으로 호출 가능¶
In [10]:
mySeries['a']
Out[10]:
In [11]:
mySeries.a
Out[11]:
np.arange()로 시리즈 생성¶
In [13]:
# 2~20 사이의 짝수로 구성된 시리즈 만들기
s3 = pd.Series(np.arange(2,21,2))
s3
Out[13]:
In [14]:
s3[0]
Out[14]:
Series의 index, values, dtype 속성¶
- 시리즈이름.index : 인덱스
- 시리즈이름.values : 값 => 넘파이배열 형태로 표시
- 시리즈이름.dtype : 데이터형
- 시리즈이름.size : 전체 크기
- 시리즈이름.shape : 구조 (행수,)
In [17]:
obj = pd.Series([4, 7, -5, 3])
obj
Out[17]:
In [18]:
obj.values
Out[18]:
In [20]:
type(obj.values)
Out[20]:
In [21]:
obj.index
Out[21]:
In [22]:
type(obj.index)
Out[22]:
In [23]:
obj.dtype
Out[23]:
In [24]:
obj.shape
Out[24]:
In [25]:
obj.size
Out[25]:
Series를 생성할 때 인덱스 지정하기¶
시리즈이름 = pd.Series( 리스트/딕셔너리/넘파이배열 ,
index=[인덱스 리스트])
In [27]:
fruitSeries = pd.Series([100,200,400],index=['수박','토마토','바나나'])
fruitSeries
Out[27]:
In [28]:
# 값만 추출
fruitSeries.values
Out[28]:
In [29]:
# 인덱스값만 추출
fruitSeries.index
Out[29]:
특정인덱스값 호출¶
- 시리즈이름.index[인덱스번호]
In [31]:
# 첫번째 인덱스에 대한 값 추출
fruitSeries.index[0]
Out[31]:
In [ ]:
인덱스 다시 설정하기¶
- 시리즈명.index = [리스트]
In [32]:
obj = pd.Series([4, 7, -5, 3], )
obj
Out[32]:
In [33]:
obj.index=['d', 'b', 'a', 'c']
obj
Out[33]:
딕셔너리를 시리즈로 지정하고 인덱스값만 추출하기¶
In [34]:
sdata = {"Charles": 35000, "Julia":71000, "Hayoung":16000, "Sangjae":5000}
obj= pd.Series(sdata)
obj
Out[34]:
In [35]:
obj.index
Out[35]:
In [36]:
obj.index[1]
Out[36]:
Series 와 index 의 대표 이름 설정하기¶
- 시리즈이름.name = 시리즈의대표이름
- 시리즈이름.index.name = 인덱스의대표이름
In [37]:
sdata = {"Charles": 35000, "Julia":71000, "Hayoung":16000, "Sangjae":5000}
obj= pd.Series(sdata)
obj
Out[37]:
In [30]:
obj.name = "Salary"
obj.index.name= "Names"
obj
Out[30]:
퀴즈 - 시리즈 생성하기¶
아래와 같은 형태로 시리즈 grade를 생성하여라
과목
국어 90
수학 80
영어 100
과학 55
역사 70
Name: 중간고사 성적표, dtype: int64
평균 : 79.0
Answer¶
In [44]:
grade = pd.Series([90,80,100,55,70])
grade.index = ['국어','수학','영어','과학','역사']
grade.name = '중간고사 성적표'
grade.index.name = '과목'
print(grade)
print('평균 : ', grade.mean())
퀴즈 - 넘파이 난수로 시리즈 만들기¶
- 100~200 사이의 난수로 구성된 시리즈를 아래와 같이 생성하여라.
- 총점과 평균을 출력하여라. 평균은 소숫점 3자리까지 표시한다.
index
one 193
two 114
three 200
four 133
five 175
six 186
seven 109
Name: [ 100~201 Random Num Series ], dtype: int32
Total : 1110
Average : 158.571
Answer¶
In [40]:
data = np.random.randint(100,201,size=7)
data
Out[40]:
In [42]:
myNumSeries = pd.Series(data)
myNumSeries.index = ['one','two', 'three', 'four', 'five', 'six', 'seven']
myNumSeries.name = '[ 100~201 Random Num Series ]'
myNumSeries.index.name = 'index'
print(myNumSeries)
print('Total : ',myNumSeries.sum())
print('Average : %.3f '% myNumSeries.mean())
반응형