HAN_PY 2020. 11. 21. 14:10
반응형

0. 들어가면서

 판다스(Pandas)는 파이썬 라이브러리 중 하나로 편리하게 데이터 구조와 데이터 분석 기능을 제공한다. 따라서 데이터를 다룬다면 반드시 알아둬야 한다. 여기서는 자연어처리(NLP)를 하기위한 최소한의 Pandas의 기초를 알아보자.

 

 

 

1. 설치하기

설치는 간단하다. 아래와 같은 명령어를 치면 된다.

# 아나콘다
$ conda install pandas

# colab
$ pip install pandas

import 하는 법도 간단하다.

import pandas as pd

 

 

 

 

2. 판다스(Pandas)

 판다스로 사용가능한 데이터 구조는 시리즈(Series), 데이터프레임(DataFrame), 패널(Panel) 이렇게 세 가지 데이터 구조를 사용할 수 있다. 이 세 가지 데이터 구조의 다장 큰 차이점은 차원이다.

 

시리즈(Series)                      - 1차원의 데이터 구조

데이터프레임(DataFrame)       - 2차원의 데이터 구조

패널(Panel)                         - 3차원의 데이터 구조

 

 

 

2.1. 시리즈(Series)    

간단히 말하면 아래와 같은 구조다.

35 12 567 421 32 82

 

 

2.2. 데이터프레임(DataFrame)  

 2차원 데이터 구조로 데이터프레임의 각각의 열은 각각의 Series 라고 할 수 있다. 아래와 같은 구조다.

이름 가격 수량
수박 10000 61
딸기 13000 132
사과 7000 25

 

 

2.3. Panel(패널)  

 패널은 3차원 데이터이고, 주로 패널은 데이터프레임 모음이라고 할 수 있다. 

 

간단히 생각하면 시리즈가 모여 데이터프레임이 되고, 데이터프레임이 모여 패널이 된다.

 

 

 

 

3. 코드 작성

 이제 판다스를 이요하여 데이터를 생성하는 방법을 알아보자. 시리즈와 데이터프레임에 대해 알아본 후에 패널 부분은 csv파일을 여는 법을 알아보자.

 

기본적으로 아래와 같이 라이브러리를 불러오자

import pandas as pd
import numpy as np

 

 

3.1. 시리즈(Series)

시리즈를 만드는 명령어는 아래와 같다.

pandas.Series(data, index, dtype, copy)

물론 data를 제외한 값들은 생략가능하다. 이때, data는 리스트로 직접 넣어도 가능하고, 넘파이 배열을 이용해 생성을 해도 된다. 예제를 통해 살펴 보자. 출력 시 index 값도 같이 나오는 것을 확인할 수 있다.

 

 

리스트를 이용한 데이터 생성

a = pd.Series([1, 3, 5, 7, 10])
print(a)

 

 

넘파이 배열을 통한 데이터 생성

data = np.array(['a', 'b', 'c', 'd'])
b = pd.Series(data)
print(b)

 

 

arange 함수로 생성한 배열로 데이터 생성

c = pd.Series(np.arange(10, 30, 5))
print(c)

 

 

시리즈 데이터는 기본적으로 순서대로 index가 존재하는 것을 알 수 있다. 이러한 인덱스 값을 바꿀 수 있는 방법을 알아보자.

 

인덱스를 직접 지정

a = pd.Series(['a', 'b', 'c'], index=[10, 20, 30])
print(a)

 

 

딕셔너리를 활용한 시리즈 생성

dict = {'a' : 10, 'b' : 20, 'c' : 30}
d = pd.Series(dict)
print(d)

 

 

 

3.2. 데이터프레임(DataFrame)

2차원 데이터인 데이터프레임을 만드는 명령은 다음과 같다.

pandas.DataFrame(data, index, columns, dtype, copy)

시리즈를 생성할 때와 마찬가지로 data를 제외한 나머지 값은 생량이 가능하다. columns를 지정하면 각각의 열에 라벨을 지정할 수 있다. 예제를 보면서 이해해 보자.

 

 

리스트를 사용한 데이터프레임 생성

a = pd.DataFrame([1, 3, 5, 7, 9])
print(a)

-----------------------------------------------

   0
0  1
1  3
2  5
3  7
4  9

 

 

 

딕셔너리를 사용하여 데이터프레임 생성

dict = {'Name' : ['Cho', 'Kim', 'Lee'], 'Age' : [28, 31, 38]}
b = pd.DataFrame(dict)
print(b)

-------------------------------------------------------------

  Name  Age
0  Cho   28
1  Kim   31
2  Lee   38

 

 

 

리스트 중첩으로 데이터프레임 생성

c = pd.DataFrame([['apple', 7000], ['banana', 5000], ['orange', 4000]])
print(c)

-------------------------------------------------------------------------

        0     1
0   apple  7000
1  banana  5000
2  orange  4000

 

 

 

colums 인자를 사용한 데이터프레임 생성

a = pd.DataFrame([['apple', 7000], ['banana', 5000], ['orange', 4000]], columns = ['name', 'price'])
print(a)

---------------------------------------------------------------------------------------------

     name  price
0   apple   7000
1  banana   5000
2  orange   4000

 

 

 

3.3. 판다스 데이터 불러오기 및 쓰기

 보통의 데이터셋은 .csv 파일 형식으로 돼 있다. 판다스의 read_csv라는 함수를 사용하면 간단히 데이터 파일을 읽을 수 있다.

pandas.read_csv('file_path')

 

보통은 아래와 같이 read_csv 함수의 인자 값에 데이터가 저장된 경로를 설정하여 변수에 넣어주면된다.

dataframe = pd.read_csv( './panpy/datafile.csv' )

 

 

 

3.4. 데이터 다루기

데이터를 다룰려면 데이터를 불러와야한다.

dataframe = pd.read_csv( './panpy/datafile.csv' )

각각의 열을 읽어 올 수 있고, 추가 삭제도 가능하다.

 

 

# 'A'라는 열의 데이터 확인
dataframe['A']


# 'A'라는 데이터 중 앞 5개만 확인
dataframe['A'][:3]


# A열과 B열 합치기
dataframe['C'] = dataframe['A']+dataframe['B']

 

 

만약 데이터에 대한 평균, 표준편차 등 다양한 수치를 얻고 싶다면 describe() 함수를 사용하면 된다.

dataframe.describe()

 

 

4. 마무리

다 외울려고 하지말자. 이런게 있다는 것을 이해하고 코드를 짜다가 궁금한게 있다면, 다시 돌아와서 확인하는 정도면 된다. 

반응형