본문 바로가기
Python/Python DataAnalysis

[Python Data Analysis] 3. Pandas 모듈

by Rosmary 2021. 9. 20.
728x90
반응형

 

 

 

 

Python을 통해 데이터를 분석하면서 반드시 설치해야되는 패키지(모듈)로는 pandas가 있다. 이 pandas 모듈은, 특정 조건을 만족하는 List, Tuple 뿐만 아니라, Excel, CSV, 심지어 분석이 가능한 포맷이라면 클립보드에 복사된 내용까지도 분석할 수 있다. 따라서, 빅데이터 분석기사 실기 시험 시 Python으로 응시를 한다고 하면, 반드시 pandas 패키지의 사용법을 숙지하고 있어야 한다. 

 

 

1. Pandas 패키지 설치

 

pip install 명령어를 사용하여 pandas 패키지를 설치하자. windows 사용자는 cmd로 이동하여 pip 명령어를 사용하자.

# 명령어: pip install pandas

 

설치가 완료되면, Python 인터렉티브 모드에서 아래와 같이 pandas 모듈의 사용이 가능해진다. 

 

 

 

2. pandas 패키지의 데이터 Read 함수

 

pandas에서 읽어들일 수 있는 파일 및 객체 종류는 굉장히 다양하다. 기본적으로 데이터 분석에 많이 사용되는 csv와 Excel은 지원하며, 데이터베이스의 sql, 웹 크롤링 시 사용하는 html, 더 나아가 API로 주로 호출되는 파일 형태인 json도 분석이 가능하다. 객체로는 list가 포함된 list, tuple, dictionary도 지원한다. 

 

pandas 모듈은 하나의 클래스로 정의된 코드다. 따라서 pandas 모듈을 불러오면 모듈 내의 매서드들을 호출함으로써 위에서 언급한 데이터를 하나씩 추출할 수 있다. Python 인터렉티브 모드에서 dir(pandas)를 입력하면, "read_"로 시작하는 매서드들이 몇 개 보일 것이다.

 

하나씩 살펴보자.

 

 

(1) CSV 파일 읽기: pandas.read_csv

 

** 필자는 본 포스팅을 위해 아래의 사이트에서 샘플 CSV를 추출했다.

https://eforexcel.com/wp/wp-content/uploads/2017/07/100-Records.zip

 

위의 Method를 보면 read_csv라는 이름의 매서드가 보일 것이다. 이 매서드가 CSV 파일 내용을 읽어들이는 역할을 한다. 매서드 인자로는 CSV 파일 경로를 입력해주면 된다. 

 

pandas의 read_csv를 사용하여 csv 파일 내용을 보면, with open 방식으로 불러온 결과와 조금 다른 점이 있다. 먼저 출력되는 데이터 내용이 많을경우, 내용을 특정 줄에 축약하여 나타내고, 데이터 양이 얼마나 되는지(100 rows x 37 columns) 마지막에 표시한다는 점이다. 두 번째는 화면에 출력되는 정보가 csv 형태, 즉 콤마(,)가 사라진 형태로 나타난다는 점이다.

사실 pandas로 읽어들이는 모든 데이터는 pandas.DataFrame이라는 표 형식의 객체로 전환되도록 코드가 작성되어 있다. 이 DataFrame과 관련된 내용은 다음 포스팅에서 다룰 예정이다.

 

 

(2) Excel 파일 읽기 - read_excel

 

샘플 CSV 파일을 다른 이름으로 저장하되, Excel로 저장하자. 그럼, CSV 파일과 같은 경로에 Excel 파일이 생성된다.

 

Pandas의 매서드 중 read_excel은 엑셀 파일의 읽기를 지원한다. read_csv와 마찬가지로 파일명을 함수 인자 위치에 작성해주면 된다.

 

결과는 read_csv와 크게 다르지 않다. 마찬가지로 이 출력 결과 역시 pandas.DataFrame이라는 표 형태의 객체다. 

 

!!  read_excel 함수를 사용하기 위해서 Python의 openpyxl 패키지가 설치되어 있어야 한다. 해당 패키지가 설치되어 있지 않다면 pip install openpyxl 명령어를 이용하여 설치 후 재진행해보자. 

 

 

(3) json 파일 읽기 - read_json

 

json 파일은 대괄호 {}로 정보를 표시하는 방식이며, REST API의 호출 결과값으로 많이 사용되고 있는 형식이다. 이 json 형식의 파일도 pandas로 호출하는 것이 가능하다. 아래의 샘플을 보자.

 

{"name":{"1":"Alex","2":"Breta","3":"Charles"},"Age":{"1":19,"2":20,"3":21},"Nations":{"1":"USA","2":"Germany","3":"France"}}

 

위의 샘플은 3 명의 인적 정보를 행으로 정렬한 Json 샘플이다. 이 정보를 test.json이라는 파일명으로 저장한 뒤, pandas.read_json 매서드로 해당 파일을 호출하면 아래와 같이 DataFrame 형식으로 변환되어 화면에 출력된다.

 

 

read_json 파일을 사용하기 위해서 json 파일이 어느 정도 정제되어 있어야 하는데, "column명":{"행이름1":"값1", "행이름2":"값2...}" 형태로 형식이 지정되어야 한다. 만약 이 형식에서 많이 벗어나게 된 json 파일이라면, read_json의 결과가 이전의 예시처럼 예쁘게 표시되지 않음을 확인할 수 있다.

 

아래의 페이지에서 sample json 파일의 내용을 긁어 test2.json으로 저장한 뒤, 이 파일을 read_json으로 불러보자.

https://json.org/example.html

 

따라서, 정제되지 않은 json 파일의 경우, 별도의 정제 과정을 거쳐 read_json 매서드를 사용해야 한다는 불편함이 있다.

 

 

read_json 매서드는 다른 매서드와 달리 orient라는 인자가 하나 추가될 수 있다. 이 인자는 json 파일의 데이터를 DataFrame 객체로 변환할 때, 어떤 기준으로 DataFrame을 만들어 낼 것인지를 설정하는 인자라 보면 된다.

read_json매서드에서 orient 인자는 여러가지가 있지만, index와 column이 가장 많이 사용된다. 이름을 보면 알겠지만, index는 행의 내용을 그대로, column은 column 내 값을 행으로 표시한다는 차이점이 있다. 

 

 

orient 인자 값은 index, column 외에도 table, values, records, split이 있지만, read_json보다 DataFrame 객체의 to_json 매서드에 훨씬 많이 사용된다. 추후 json 파일을 다루는 포스팅 진행 시, 언급하려 한다.

 

 

 

(4) html 파일 읽기 - read_html

 

다음은 html, 즉 인터넷에 존재하는 데이터를 불러 읽어들이는 read_html 매서드다. read_html이 인터넷에서 가져오는 정보는 표 형식으로 정리된 데이터인데, html 내에서 표를 의미하는 <table> 레이블을 탐지하여 표의 내용을 변환한다.

 

표 형식으로 가장 쉽게 확인할 수 있는 데이터 중 하나는 구기종목의 리그 순위가 있다. Nav**에서 K리그의 순위를 보여주는 페이지 URL을 복사해 read_html 매서드의 인자에 넣고 실행해보자. 

 

브라우저 창에서 F12를 누르면 화면에 뜬 창의 HTML 페이지가 나타난다. <table>이 네모 박스 안에 작성된 것이 보인다.

 

 

위에서 예시로 든 URL의 경우, 중계 일정도 <table> 형태로 작성되었기 때문에 순위 뿐만 아니라 중계 일정도 함께 DataFrame 형태로 변환되어 나타난 것이 보인다. 별도로 순위 부분만 데이터로 쓰려면 read_html로 불러들인 결과를 가공하는 작업을 진행해주어야 한다.

 

특이하게도, read_html로 변환된 데이터는 다른 매서드들의 결과와 달리, List 형태로 나타난다. 메모장에 아래의 내용을 붙여넣고, html_table.html로 저장한 뒤, read_html로 저 파일을 불러보자.

 

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

<!DOCTYPE html>
<html>
<head>
<title>Example</title>

<!-- CSS -->
<style>
.myTable { 
  width: 100%;
  text-align: left;
  background-color: lemonchiffon;
  border-collapse: collapse; 
  }
.myTable th { 
  background-color: goldenrod;
  color: white; 
  }
.myTable td, 
.myTable th { 
  padding: 10px;
  border: 1px solid goldenrod; 
  }
</style>

</head>
<body>

<!-- HTML -->
<table class="myTable">
<tr>
<th>Header</th>
<th>Header</th>
</tr>
<tr>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>Table cell</td>
<td>Table cell</td>
</tr>
</table>

</body>
</html>

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

 

(5) read_clipboard

 

pandas는 마우스로 복사한 표 형태의 데이터, 즉 클립보드에 저장된 내용도 DataFrame으로 변환할 수 있다. 앞의 read_csv에서 사용한 샘플의 일부를 복사하여, read_clipboard매서드를 사용해보자.

 

 


 

이번 포스팅에서는 pandas의 기본 매서드들, 특히 csv, excel 등 다양한 파일로 작성된 데이터를 읽어들이는 방법에 대해 알아보았다. 다음 포스팅에서는 pandas의 DataFrame 객체와 DataFrame의 매서드에 대해 알아볼 예정이다.

 

 

Fin.

반응형

댓글