Python 데이터분석(1)

2021. 7. 5. 23:29Soft_Ware/Python

  • Pandas

pandas는 파이썬 라이브러리로 엑셀과 같이 데이터를 분석하는 라이브러리이다.

 

import pandas as pd

위와 같이 Import를 통해 라이브러리를 포함시켜주고 간결성을 위해 pd로 수행되곤 한다.

주로 파이썬에서 데이터 분석을 위해서 엑셀 등의 파일을 활용하는데 pandas에서는 이러한 엑셀등의 파일을 읽어오는

pandas.read_* 메소드를 제공한다.

chicken07 = pd.read_csv('./data/chicken_07.csv')

다음은 치킨데이터를 담고있는 chicken_07.csv파일을 pd.read_csv를 통하여 읽어 들인 모습이다.

이와 같은 데이터를 불러오고 chicken07을 Jupyter Notebook을 통해 확인해보면 엑셀파일과 같이 한눈에 알아보도록 나타낼 수 있다.

필자의 경우 위와 같이 기준일,요일 등의 특징을 가지는 chickendata를 pandas를 통해 읽어들였는데, 읽어들인 데이터를 Jupyter Notebook으로 실행시켜보면 위와 출력되는것을 알 수 있다.

chicken07['기준일']
chicken07['성별']

위와 같이 특징점을 읽어들인 데이터에 list와 같은 형식으로 대괄호를 이용하여 명시해주면 대괄호 안에있는 키워드만 따로 출력할 수 있다.

추가적으로 연령대의 경우 특정 연령대만 적혀있는 경우가 있고 이를 해결 하기 위해서 아래와 같이 set키워드를 사용하면 중복 출력되는 문제점을 해결할 수 있다.

위의 chicken07은 7월에 치킨을 시킨 데이터를 모아놓은 csv파일인데 필자가 실습한 파일은 chicken07이외에도 chicken08,chicken09이 추가적으로 있었다.

이럴때 월별이 아닌 총 치킨 주문 데이터를 보고 싶다면 어떻게 해야 할까?

chicken_data = pd.concat([chicken07,chicken08,chicken09])
chicken_data = chicken_data.reset_index(drop = True)

아, 위의 코드에서 생략된 것이 있는데, pd.read_csv를 통한 파일 불러오기를 chicken08과 chicken09에도 적용시켜 주어야 한다. 그 후 사용한 함수가 pd.concat함수인데, 이는 동일한 데이터 형식을 가지는 데이터 셋을 합쳐주는 함수이다.위와 같이 그냥 데이터 셋을 나열하기만 하면 default 값으로 axis = 0이 되어 위에서 아래로 합치기의 형태가 된다. 또한 chicken_data.reset_index(drop = True)는 세개의 각 파일에 대하여 동일한 인덱스를 가지는 데이터들이 존재할텐데, 이들에 대하여 다시 indexing을 해주는 함수이다.drop = True 는 기존 인덱스를 drop하고 새로 만들어진다는 의미이다.

 

  • Matplotlib

다음은 Matplotlib에 관한 설명이다.Matplotlib 는 차트 및 그래프 등의 시각적인 자료를 구하기 위해 사용되는 라이브러리 이다.

import matplotlib as plt

위와 같이 import 키워드를 통하여 포함시켜주며 matplotlib는 비교적 무거운 라이브러리이기 때문에 필자가 실습할 당시에는 matplotlib.pyplot이라는 키워드를 통하여 필요한 부분만 import 하기도 했다.

sum_data = chicken_data.groupby('요일')['통화건수'].sum()

위와 같이 앞서 불러들인 csv 데이터들을 groupby키워드를 통해 원하는 데이터인 통화건수의 데이터를 요일로 묶은 다음 sum() 키워드를 통해 총 합계를 나타낼 수 있다.

이때, sort_values(ascending = True)라는 함수를 통하여 오름차순으로 정렬도 가능하다.

sum_data_sorted = sum_data.sort_values(ascending = True)

위와 같이 오름차순으로 정렬 시키거나 내림차순 혹은 원하는 방식으로 데이터를 정렬해 놓고 matplotlib를 통하여 시각화한다.

plt.figure(figsize=(8,5))
##시각화 할 차트의 사이즈 설정
plt.bar(sum_data_sort.index, sum_data_sort)
##x축에 들어갈 data, y축에 들어갈 데이터
plt.title("요일에 따른 치킨 주문량 합계")
plt.show()

위와 같은 코드를 통해 정렬된 데이터를 시각화 할 수 있다.포함된 주석에 설명된대로 차트 및 그래프의 형태가 그려지고 plt.title과 같은 코드를 통하여 자료의 제목을 나타내 줄 수 있다.

하지만 여기서 가끔 font와 관련된 error를 겪을 수 있을 것이다.

plt.rcParams['font.size']
plt.rcParams['font.family']
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['font.family'] = 'AppltGothic'

font와 관련된 오류는 현재 사용하고 있는 font와 운영체제나 프로그램에 따라 지원되는 font의 종류가 서로 달라서 발생하는 오류일 것이다.

필자는 window10을 사용중이고 3번 째 줄의 코드인 Malgun Gothic을 사용하면 이 error가 해결되었다. Mac이용자들은 AppleGothic font를 이용하면 이 에러를 해결할 수 있을 것이다.

plt.xlabel('지역')
plt.xticks(rotation = 45)
###########차트의 축에 특징 주기
plt.bar(sort_chicken_data_date.index, sort_chicken_data_date)
plt.bar(sort_pizza_data_date.index, sort_pizza_data_date)
###########두개의 데이터에 대한 차트 및 그래프 그리기

추가적으로 위와 같은 코드를 통하여 원하는 그래프를 구성할 수 있다.

 

지금까지 간단히 pandas 및 matplotlib에 대해서 설명했는데 이것은 매우 간략한 설명일 뿐이고 python에는 많은 라이브러리들이 존재하기 때문에 실습을 통해 익힐 필요가 있다.

또한 pandas와 같이 데이터 분석을 하는데 사용되는 numpy라이브러리에 대해서도 한번 기회가 된다면 실습해 보면 좋을 것으로 판단된다.

'Soft_Ware > Python' 카테고리의 다른 글

Python 데이터 분석(4)  (0) 2021.08.02
Python 데이터 분석(2)  (0) 2021.07.17
Python 데이터 분석(3)  (0) 2021.07.17
Python 기초 문법  (0) 2021.07.03