Dacon/중고차 가격 예측 경진대회

[데이터 분석_1] Pandas 라이브러리를 사용한 데이터 분석

컴공돌이​ 2022. 6. 7. 12:02

 

 

 

 

 

 

Pandas 라이브러리를 사용한 데이터 분석

 

먼저 Pandas 라이브러리를 import해줍니다.

In [2]:
import pandas as pd
 

Pandas 라이브러리에 내장되어있는 read_csv() 함수를 사용하여 훈련용 데이터를 읽어줍니다.

In [3]:
train_data = pd.read_csv("./data/train.csv", engine="python")
 

데이터를 정상적으로 읽었는지를 확인해주기 위해서 데이터의 일부를 출력해보겠습니다.

 

데이터의 일부를 선택하는 방법은 크게 3가지가 있습니다.

  • head() 함수를 사용하여 불러온 데이터의 앞부분을 선택해주는 방법
  • tail() 함수를 사용하여 불러온 데이터의 뒷부분을 선택해주는 방법
  • sample() 함수를 사용하여 불러온 데이터에서 랜덤하게 몇개의 샘플을 선택해주는 방법

 

head(), tail() 함수를 사용하게 되면 기본적으로 데이터의 5개의 샘플이 선택되며 이는 함수 내부의 파라미터값을 조절해주면 변경이 가능합니다. sample() 함수를 사용하게되면 기본적으로 데이터에서 랜덤한 1개의 샘플만이 선택되며 이는 앞의 head(), tail() 함수와 마찬가지로 내부의 파라미터값을 조절해주면 변경이 가능합니다.

In [4]:
print(train_data.head(n=3))
print(train_data.tail(n=3))
print(train_data.sample(n=3))
 
   id                          title  odometer location    isimported  \
0   0                   Toyota RAV 4     18277   Lagos   Foreign Used   
1   1            Toyota Land Cruiser        10    Lagos          New    
2   2  Land Rover Range Rover Evoque     83091    Lagos  Foreign Used   

           engine transmission    fuel  paint  year    target  
0  4-cylinder(I4)    automatic  petrol    Red  2016  13665000  
1  4-cylinder(I4)    automatic  petrol  Black  2019  33015000  
2  6-cylinder(V6)    automatic  petrol    Red  2012   9915000  
        id         title  odometer location    isimported          engine  \
1012  1012  Toyota Camry     96802    Abuja  Foreign Used  4-cylinder(I4)   
1013  1013  Lexus GX 460    146275    Lagos  Foreign Used  6-cylinder(V6)   
1014  1014        DAF CF         0    Lagos  Locally used  6-cylinder(V6)   

     transmission    fuel  paint  year    target  
1012    automatic  petrol  Black  2011   3415000  
1013    automatic  petrol   Gold  2013  14315000  
1014       manual  diesel  white  1998  10015000  
      id         title  odometer location    isimported          engine  \
965  965  Toyota RAV 4    109418    Abuja  Foreign Used  6-cylinder(I6)   
356  356  Lexus RX 330     85441    Lagos  Foreign Used  4-cylinder(I4)   
828  828  Lexus LX 570     20423    Lagos  Foreign Used  4-cylinder(I4)   

    transmission    fuel  paint  year    target  
965    automatic  petrol  White  2010   4815000  
356    automatic  petrol  Gray   2004   4015000  
828    automatic  petrol  Black  2018  48015000  
 

다음으로 데이터의 형태를 확인해보겠습니다.

 

데이터의 형태는 shape 함수를 통하여 확인이 가능하며 (a, b)의 형태로 반환됩니다. a는 데이터가 몇개의 샘플로 이루어져있는지를 나타내며, b는 데이터가 몇개의 변수로 이루어져있는지를 나타냅니다.

In [5]:
print(train_data.shape)
 
(1015, 11)
 

다음은 데이터의 간단한 정보를 확인해보겠습니다.

 

데이터의 정보는 info() 함수를 통하여 확인이 가능합니다. info() 함수를 사용하게 되면 데이터가 어떠한 변수들로 이루어져 있는지, 각각의 변수는 어떠한 타입의 데이터인지, 변수들에 결측치가 있는지 없는지에 대하여 확인이 가능합니다.

In [6]:
print(train_data.info())
 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1015 entries, 0 to 1014
Data columns (total 11 columns):
 #   Column        Non-Null Count  Dtype 
---  ------        --------------  ----- 
 0   id            1015 non-null   int64 
 1   title         1015 non-null   object
 2   odometer      1015 non-null   int64 
 3   location      1015 non-null   object
 4   isimported    1015 non-null   object
 5   engine        1015 non-null   object
 6   transmission  1015 non-null   object
 7   fuel          1015 non-null   object
 8   paint         1015 non-null   object
 9   year          1015 non-null   int64 
 10  target        1015 non-null   int64 
dtypes: int64(4), object(7)
memory usage: 87.4+ KB
None
 

다음은 데이터의 요약통계량을 확인해보겠습니다.

 

요약통계량은 describe() 함수를 통하여 확인이 가능합니다. 기본적으로 요약통계량은 수치형 변수(Numerical Variable)들에 대하여 작동됩니다. describe() 함수를 사용하게 되면 수치형 변수들에 대해서 데이터의 개수, 평균, 표준편차, 최소값, 하위 25% 값, 중앙값, 상위 75% 값, 최대값을 확인할 수 있습니다.

 

변수는 수치형 변수뿐만이 아니라 범주형 변수(Categorical Variable)도 있습니다. 이러한 범주형 변수의 통계를 확인하기 위해서는 describe() 함수 내부의 파라미터인 include를 object로 설정해주어야 합니다. 이렇게 설정한 describe(include='object') 함수를 사용하게 되면 범주형 변수들에 대해서 데이터의 개수, 고유 데이터 개수, 가장 많이 출현한 변수 종류, 가장 많이 출현한 변수의 빈도수를 확인할 수 있습니다.

In [7]:
numerical_data_description = train_data.describe()
print(numerical_data_description)

categorical_data_description = train_data.describe(include="object")
print(categorical_data_description)
 
                id       odometer         year        target
count  1015.000000    1015.000000  1015.000000  1.015000e+03
mean    507.000000  116842.121182  2008.385222  8.243204e+06
std     293.149564  105162.545836    35.592123  1.239567e+07
min       0.000000       0.000000  1217.000000  4.000000e+05
25%     253.500000   55918.000000  2006.000000  2.535000e+06
50%     507.000000   94972.000000  2010.000000  4.215000e+06
75%     760.500000  153224.000000  2014.000000  8.927500e+06
max    1014.000000  987322.000000  2020.000000  1.500150e+08
               title location    isimported          engine transmission  \
count           1015     1015          1015            1015         1015   
unique           203       13             3               8            2   
top     Toyota Camry    Lagos  Foreign Used  4-cylinder(I4)    automatic   
freq             129      792           744             618          965   

          fuel  paint  
count     1015   1015  
unique       2     76  
top     petrol  Black  
freq       970    292  
 

마지막으로 데이터의 상관계수를 확인해보겠습니다.

 

상관계수는 corr() 함수를 통하여 확인이 가능합니다. corr()를 아무런 파라미터 세팅없이 사용해주면 가장 대표적인 상관계수은 Pearson Correlation Coefficient를 확인할 수 있습니다. 이밖에 다른 상관계수를 확인하고 싶다면 corr() 함수 내부의 파라미터인 method를 다른 값으로 변경해야 합니다. 변경 가능한 파라미터 값으로는 'kendall' 과 'spearman'이 있습니다.

이번에는 기본적인 corr() 함수를 사용해보겠습니다.

In [8]:
PCC = train_data.corr()
print(PCC)
 
                id  odometer      year    target
id        1.000000 -0.017320 -0.017048  0.025104
odometer -0.017320  1.000000 -0.220366 -0.261147
year     -0.017048 -0.220366  1.000000 -0.042637
target    0.025104 -0.261147 -0.042637  1.000000
 

Pandas 라이브러리만을 사용하더라도 간단한 데이터 분석이 가능하다는 것을 확인해보았습니다.

 

물론 더 심층적인 데이터 분석을 위해서는 다양한 분석용 라이브러리를 사용해야 하고, 분석 결과를 보다 원활하게 확인하기 위해서는 시각화 라이브러리를 사용해야 합니다. 다음에는 이러한 데이터 분석에 도움이 되는 라이브러리를 함께 사용하여 데이터 분석을 진행해 보겠습니다.

반응형