파이썬 함수

pandas 라이브러리(1) pandas라이브러리 활용

개발연습자1 2022. 11. 24. 09:30

 pandas라이브러리는 파이썬 언어로 제작된 데이터 분석용 라이브러리이다.

 기존의 데이터 구조보다 기능이 많이 확장되어 다양한 데이터 조작과 가공이

 가능하다.

 

  1. pandas의 특징

  • 기본적인 통계 데이터 제공
  • 없는 수치(NaN=Not a Number) 자동 처리
  • 데이터셋 재구조화
  • 통합 인덱싱을 활용한 데이터 조작

   2. pandas 호출 하기

#기존 numpy와 똑같이 별명을 붙여 호출한다.

import pandas as pd

     

   3. pandas series 데이터 생성

        pandas는 pandas series 데이터를  생성 할수 있으며  데이터를 메모리에 저장하면 기존 데이터 구조와 마찬가지로

        데이터를 활용한 다양한 함수를 적용할 수 있다.

 

 

index = ['eggs', 'apples', 'milk', 'bread']
data = [30, 6, 'Yes', 'No']

groceries = pd.Series(data = data, index=index)

#인덱스를 확인
groceries.index
>>> Index(['eggs', 'apples', 'milk', 'bread'], dtype='object')

#데이터를 확인
groceries.values
>>> array([30, 6, 'Yes', 'No'], dtype=object)

# shape 확인
groceries.shape
>>> (4,)

#차원 확인
groceries.ndim
>>> 1

#데이터 갯수
groceries.size
>>> 4

#저장된 데이터의 타입 확인
groceries.dtype
>>> dtype('O')

# 'apples' 가 groceries 안에 들어있나?
'apples' in groceries
>>>True

 

   4. pandas라이브러리 인덱스

       pandas 데이터는 기존 데이터 구조의 인덱스와 다르게 사람이 이해하는 언어로 인덱스를

       구성 할수 있다.

#인덱스는 사람용,안보이는 왼쪽에 컴퓨터용 인덱스가 따로 있다

groceries
>>> eggs       30
    apples      6
    milk      Yes
    bread      No
    dtype: object

 빨간 네모 친 부분이 인덱스 이며 사람이 이해할수 있는 언어로 되어 있다.

 

 

 

 

   인덱스는 딕셔너리 데이터와 비슷하게 데이터를 인덱스로 호출 할 수 있다.

 

groceries["milk"]
>>> 'Yes'

#핀다스 인덱스에는 +1을 쓰지 않는다.
groceries[  :"milk"]
>>> eggs       30
    apples      6
    milk      Yes
    dtype: object

 

 5. pandas 데이터 연산

   pandas 데이터도 numpy와 비슷하게 데이터 단위로 연산이 가능하다.

index = ['apples', 'oranges', 'bananas']
data = [10, 6, 3,]

fruits = pd.Series(data = data, index = index)
>>> apples     10
    oranges     6
    bananas     3
    dtype: int64
 
fruits = fruits+5
>>> apples     15
    oranges    11
    bananas     8
    dtype: int64
    
#인덱스단위로 연산이 가능하다.
fruits['oranges'] = fruits['oranges'] -2
fruits
>>> apples     10
    oranges     4
    bananas     3
    dtype: int64

 

6. Pandas Dataframe

    panda  시리즈데이터를 깔끔한 데이터프레임 형식으로 보는것이 가능하다.

    이 데이터프레임은 컬럼이 추가되어 기존보다 더 보기 쉬운 형식이 되었다.

 

import pandas as pd

# We create a dictionary of Pandas Series 
items = {'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']),
         'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}

df = pd.DataFrame(data= items)
df

 그림에 있는것 처럼 위에 가로로 컬럼이 추가된 형식으로 나오게 된다.

 

 데이터 프레임도 다양하게 활용이 가능하다.

 

#왼쪽의 행부분의 진한글씨: 인덱스
#위쪽의 열부분의 진한글씨: 컬럼
#안쪽에 있는 데이터: values

df.index
>>> Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')

df.columns
>>> Index(['Bob', 'Alice'], dtype='object')

df.values
>>> array([[245., 500.],
           [ nan,  40.],
           [ nan, 110.],
           [ 25.,  45.],
           [ 55.,  nan]])

df.shape
>>> (5, 2)

df.ndim
>>> 2

df.size
>>> 10

#데이터의 정보 자세히 보기
df.info()
>>> <class 'pandas.core.frame.DataFrame'>
    Index: 5 entries, bike to watch
    Data columns (total 2 columns):
    #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
    0   Bob     3 non-null      float64
    1   Alice   4 non-null      float64
    dtypes: float64(2)
    memory usage: 120.0+ bytes

 

7.없는 수 NaN

   NaN은 Not a Number의 약자로써 numpy에도 있는 기호이다. NaN은 해당 항목에 0도 없는

   아예 값이 없다는 것을 뜻한다. 

#nan은 Not a Number이다.

np.nan

 

8. pandas 데이터 엑세스

   pandas 데이터도 다른 데이터 구조들처럼 데이터 엑세스가 가능하다.

items2 = [{'bikes': 20, 'pants': 30, 'watches': 35}, 
          {'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
df = pd.DataFrame(data=items2, index = ['store1','store2'])
df

 이 데이터 프레임에서 데이터를 가져오는 방법은 3가지가 있다.

 

  1) 컬럼의 데이터를 가져오는 방법 => 변수명 바로 오른쪽에 대괄호 사용

 

df['bikes']
>>> store1    20
    store2    15
    Name: bikes, dtype: int64
    
# bikes 컬럼과 glasses 컬럼을 가져오세요.
df[['bikes','glasses']]

 

  2) 행과 열의 정보로 데이터를 가져오는 방법

      (.loc[ , ] 함수로 가져오는 방법)

#위에 item2의 데이터 프레임을 활용한다.
# 스토어1의 팬츠 데이터를 가져오시오.

df.loc[ 'store1','pants'  ]
>>> 30

df.loc['store2',['bikes','watches']]
>>>  bikes      15.0
     watches    10.0
     Name: store2, dtype: float64

 

3) 컴퓨터 상에 행과 열로 데이터를 가져오는 방법

    (.iloc[ ,] 함수로 가져오는 방법)

#위에 item2의 데이터 프레임을 따른다.
# iloc로 스토어1의 pants 데이터 가져오기
#이 방법은, 컴퓨터가 매기는 인덱스(오프셋)으로 데이터를 억세스한다.
df.iloc[ 0 , 1 ]
>>> 30

# 스토어2 데이터에서, bikes 부터 watches 까지의 데이터를 가져오시오.
df.iloc[ 1,0:2+1 ]
>>> bikes      15.0
    pants       5.0
    watches    10.0
    Name: store2, dtype: float64

 

반응형