이번에는 데이터분석에서 많이 사용되는 Pandas라는 모듈에 대해 정리해 보겠습니다. pandas는 파이썬 패키지로 주로 데이터분석에 활용되는 모듈입니다. SQL 테이블 또는 Excel 과 같이 생긴 데이터를 주로 다룬다고 이해하시면 됩니다.
!pip install pandas
Requirement already satisfied: pandas in c:\programdata\anaconda3\lib\site-packages (1.1.3) Requirement already satisfied: pytz>=2017.2 in c:\programdata\anaconda3\lib\site-packages (from pandas) (2020.1) Requirement already satisfied: numpy>=1.15.4 in c:\programdata\anaconda3\lib\site-packages (from pandas) (1.19.5) Requirement already satisfied: python-dateutil>=2.7.3 in c:\programdata\anaconda3\lib\site-packages (from pandas) (2.8.1) Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)
import pandas as pd
import pandas as pd
pandas는 관용적으로 pd로 사용됩니다. 넘파이를 np형식으로 사용하는것과 같습니다.
pandas에서는 기본적으로 정의되는 자료구조인 Series와 DataFrame을 사용합니다. 이 자료구조들은 빅 데이터 분석에 있어서 높은 수준의 효율을 보여줍니다. 먼저 Series를 알아보겠습니다.
s1 = pd.Series([1,2,3,4,5])
s1
0 1 1 2 2 3 3 4 4 5 dtype: int64
s1.values
array([1, 2, 3, 4, 5], dtype=int64)
pandas에서 꺼낸 값을 Series형태로 사용하기보다 numpy에 array 형태로 사용할 일이 상당히 많기 때문에 values는 꼭 기억해 두는것이 좋습니다.
len(s1)
5
파이썬 내장함수 len 을 사용해서 Series의 길이를 알아낼 수 있습니다.
s1.dtypes
dtype('int64')
dtype라는 함수로 어떤 데이터 타입이 들어있는지 알수있습니다.
s2 = pd.Series([10,20,30,40,50],index=['a','b','c','d','e'])
s1,s2
(0 1 1 2 2 3 3 4 4 5 dtype: int64, a 10 b 20 c 30 d 40 e 50 dtype: int64)
Series를 정의할 때 index라는 파라미터를 주어서 0열을 원하는데로 바꿀수 있습니다. 또한 파이썬의 기본 데이터 타입인 dictionary를 사용해서도 Series를 만들 수 있습니다. key가 index가 됩니다.
dic = {"사과":2000,"딸기":3000,"멜론":4000,"포도":5000,'참외':6000}
s3 = pd.Series(dic)
s3
사과 2000 딸기 3000 멜론 4000 포도 5000 참외 6000 dtype: int64
.index를 통해서 index를 바꿔줄 수 있습니다.
s3.index = ['아이스크림','우유','계란','고기','야채']
s3
아이스크림 2000 우유 3000 계란 4000 고기 5000 야채 6000 dtype: int64
List나 array와 마찬가지로 Series또한 [ ] 를 통해서 특정 content에 접근할 수 있습니다.
s1,s2,s3
(0 1 1 2 2 3 3 4 4 5 dtype: int64, a 10 b 20 c 30 d 40 e 50 dtype: int64, 아이스크림 2000 우유 3000 계란 4000 고기 5000 야채 6000 dtype: int64)
s1[0],s2[0],s3[0]
(1, 10, 2000)
s1[3],s2[4],s3[2]
(4, 50, 4000)
s1[2:]
2 3 3 4 4 5 dtype: int64
index를 통해서 접근하는 것도 가능합니다.
s2['a'],s2['b'],s2['c']
(10, 20, 30)
s3['계란'],s3['야채']
(4000, 6000)
Series끼리의 연산이 가능합니다. 단, 여기서는 index가 같아야하고 index가 서로 다를경우 단순하게 이어지게되며 예측한 값과는 다르게 나옵니다.
s1.index=['아이스크림','우유','계란','고기','야채']
s1+s3
아이스크림 2001 우유 3002 계란 4003 고기 5004 야채 6005 dtype: int64
s2+s3
a NaN b NaN c NaN d NaN e NaN 계란 NaN 고기 NaN 아이스크림 NaN 야채 NaN 우유 NaN dtype: float64
s1-s3
아이스크림 -1999 우유 -2998 계란 -3997 고기 -4996 야채 -5995 dtype: int64
s2-s3
a NaN b NaN c NaN d NaN e NaN 계란 NaN 고기 NaN 아이스크림 NaN 야채 NaN 우유 NaN dtype: float64
s1*s3
아이스크림 2000 우유 6000 계란 12000 고기 20000 야채 30000 dtype: int64
s1/s3
아이스크림 0.000500 우유 0.000667 계란 0.000750 고기 0.000800 야채 0.000833 dtype: float64
Pandas_3 (0) | 2021.06.24 |
---|---|
Pandas2 (0) | 2021.06.20 |
Numpy_2 (0) | 2021.06.14 |
Numpy_1 (0) | 2021.06.11 |
댓글 영역