Pandas 라이브러리 기본 알아보기¶

  • 데이터 처리와 분석을 위한 파이썬 라이브러리
  • R의 data.frame과 유사하게 설계한 DataFrame이라는 데이터 기반으로 만들어짐.
  • 데이터 분석시에 속도도 빠르고 많은 기능을 가지고 있어, 머신러닝 데이터 분석을 수행시에 많이 사용됨.
  • 데이터를 읽고, 쓰기가 비교적 용이함.
  • 참조 url : https://pandas.pydata.org/

학습 내용¶

  • 대표적인 데이터 셋 Iris의 기본 데이터 탐색
  • 행열 확인, 데이터 앞뒤 확인, 데이터 요약값 확인 등
  • 행열 선택

판다스의 2가지 자료형¶

  • Series(시리즈) 자료형
  • DataFrame(데이터 프레임) 자료형

01 판다스 불러오기¶

In [1]:
import pandas as pd

02 데이터 준비¶

In [2]:
import seaborn as sns
In [3]:
iris = sns.load_dataset("iris")
iris
Out[3]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica

150 rows × 5 columns

In [4]:
### seaborn에서 불러온 데이터 셋은 판다스 데이터 프레임이 된다.
type(  iris  )
Out[4]:
pandas.core.frame.DataFrame
In [5]:
### 데이터 프레임의 데이터의 각 열은 시리즈이다.
type(  iris['species']  )
Out[5]:
pandas.core.series.Series

03. Pandas 기본¶

  • 데이터 살펴보자.
In [6]:
### 행, 열 확인
iris.shape
Out[6]:
(150, 5)
In [7]:
### 컬럼명 확인
iris.columns
Out[7]:
Index(['sepal_length', 'sepal_width', 'petal_length', 'petal_width',
       'species'],
      dtype='object')
In [8]:
### 앞의 데이터 살펴보기 - 기본값은 5, 숫자 지정시 해당 행이 보임
iris.head()
Out[8]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
In [9]:
### 뒤의 데이터 살펴보기 - 기본값은 5, 숫자 지정시 해당 행이 보임
iris.tail()
Out[9]:
sepal_length sepal_width petal_length petal_width species
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica

데이터 행수 개수를 지정해서 보기¶

In [10]:
print(  iris.head(7)  )
print()
print(  iris.tail(7)  )
   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa
5           5.4          3.9           1.7          0.4  setosa
6           4.6          3.4           1.4          0.3  setosa

     sepal_length  sepal_width  petal_length  petal_width    species
143           6.8          3.2           5.9          2.3  virginica
144           6.7          3.3           5.7          2.5  virginica
145           6.7          3.0           5.2          2.3  virginica
146           6.3          2.5           5.0          1.9  virginica
147           6.5          3.0           5.2          2.0  virginica
148           6.2          3.4           5.4          2.3  virginica
149           5.9          3.0           5.1          1.8  virginica
In [11]:
# 데이터 정보를 전체적으로 확인해 보기
iris.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   sepal_length  150 non-null    float64
 1   sepal_width   150 non-null    float64
 2   petal_length  150 non-null    float64
 3   petal_width   150 non-null    float64
 4   species       150 non-null    object 
dtypes: float64(4), object(1)
memory usage: 6.0+ KB
In [12]:
# 데이터 수치형에 대해 알아보기
iris.describe()
Out[12]:
sepal_length sepal_width petal_length petal_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
In [13]:
# 데이터 범주형에 대한 정보 확인
iris.describe(include=['O'])
Out[13]:
species
count 150
unique 3
top setosa
freq 50
In [14]:
# 데이터에 비어 있는지 알아보기 (결측치 확인)
iris.isnull().sum()
Out[14]:
sepal_length    0
sepal_width     0
petal_length    0
petal_width     0
species         0
dtype: int64

행 선택¶

In [15]:
print( iris )

iris.iloc[ 0:10 , : ]  # 맨 앞에서 10행 선택
     sepal_length  sepal_width  petal_length  petal_width    species
0             5.1          3.5           1.4          0.2     setosa
1             4.9          3.0           1.4          0.2     setosa
2             4.7          3.2           1.3          0.2     setosa
3             4.6          3.1           1.5          0.2     setosa
4             5.0          3.6           1.4          0.2     setosa
..            ...          ...           ...          ...        ...
145           6.7          3.0           5.2          2.3  virginica
146           6.3          2.5           5.0          1.9  virginica
147           6.5          3.0           5.2          2.0  virginica
148           6.2          3.4           5.4          2.3  virginica
149           5.9          3.0           5.1          1.8  virginica

[150 rows x 5 columns]
Out[15]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
5 5.4 3.9 1.7 0.4 setosa
6 4.6 3.4 1.4 0.3 setosa
7 5.0 3.4 1.5 0.2 setosa
8 4.4 2.9 1.4 0.2 setosa
9 4.9 3.1 1.5 0.1 setosa

열 선택¶

In [16]:
print( iris.columns )

iris.iloc[ : , 0:1 ] # 맨 첫번째 열 선택
Index(['sepal_length', 'sepal_width', 'petal_length', 'petal_width',
       'species'],
      dtype='object')
Out[16]:
sepal_length
0 5.1
1 4.9
2 4.7
3 4.6
4 5.0
... ...
145 6.7
146 6.3
147 6.5
148 6.2
149 5.9

150 rows × 1 columns

In [17]:
iris.loc[ 0:5 ,  : ] # 행 인덱스 0~5 선택
Out[17]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
5 5.4 3.9 1.7 0.4 setosa
In [18]:
iris.loc[ : ,  'sepal_length':'petal_width' ] # 첫번째 컬럼부터 네번째 컬럼 선택
Out[18]:
sepal_length sepal_width petal_length petal_width
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2
... ... ... ... ...
145 6.7 3.0 5.2 2.3
146 6.3 2.5 5.0 1.9
147 6.5 3.0 5.2 2.0
148 6.2 3.4 5.4 2.3
149 5.9 3.0 5.1 1.8

150 rows × 4 columns

  • last update : 24/06, @by DJ, Lim
In [ ]: