수집한 데이터 중 어떤 항목을 어떻게 활용할지 살펴보는 것이다. 매우 중요하고 큰 비중을 차지 한다.
데이터 구성은 어떻게 되어 있는지, 데이터 타입은 무엇인지, 관계는 어떻게 되어 있는지 살피고, 원하는 형태로
가공하여 Raw 데이터 에서 내가 필요로 하는 항목을 정리하는 역할이다.
차트를 이용하여 x, y 값을 변경해 가면서 확인하는것 또한 매우 중요하다. (패턴 분석을 위해)
시각화 는 다음번에 다룰 생각이다.
딥러닝이든 시각화 이든 데이터가 문자열 형태보다는, 정수 혹은 실수형이 좋기에 데이터 타입을 변경해야 한다.
데이터 가공을 위해 pandas를 주로 활용 한다. EDA를 수행하는 프로세스가 정해진 것은 아니다.
필요에 따라 이것저것 수행해보면 되며, 이 중 몇가지를 다뤄보려 한다. 전국 주유소 정보 데이터를 예를들어
정리해 본다.
1. value_counts
- pandas변수['카테고리명'].value_counts() : 해당 카테고리에 속한 항목별 데이터의 개수를 출력한다.
- 예를들어 각 시도 별 데이터 개수를 출력 할 수 있다. (경기도 - 100, 서울 - 1000, .....)
#opnet 에서 저장한 액셀 데이터를 기반으로 설명
변수명1 = pd.read_excel("액셀 파일명")
변수명1["지역"].value_counts()
#결과
경기도 2873
경상북도 1376
충청남도 1141
경상남도 1041
전라북도 989
충청북도 917
전라남도 848
강원도 637
서울특별시 442
부산광역시 373
대구광역시 330
인천광역시 316
광주광역시 252
울산광역시 229
대전광역시 215
제주특별자치도 194
세종특별자치시 66
Name: 지역, dtype: int64
2. info()
- 데이터에 대한 정보를 얻기 위한 함수
pandas변수명.info()
3. loc (fancy indexing)
pandas변수.loc[row조건문,col 조건문] : 해당 조건에 해당하는 데이터만 출력 (fancy indexing)
- 조건문에는 if 문에서 사용할 법한 조건식이 들어 갈 수 있다 (예 : pandas변수['카테고리명'] == '특정조건')
- col 에는 배열 형태로, column 값 중 출력하고자 하는 column을 줄 수 있다 (예 : ['컬럼1','컬럼2'])
#fancy indexing 예제. 경기도에 속한 데이터 중 원하는 항목만 출력
koil = oil.loc[oil["지역"] == "경기도",['고급휘발유','휘발유','경유','실내등유']]
결과는 다음과 같이 나온다.
3.1. 데이터 치환
- 데이터가 없어 - 로 표시되는 항목들이 있다. 정수값인 0으로 바꿔줄 필요가 있다.
- loc 을 이용해 해당 조건에 맞는 데이터들을 0으로 바꿔준다.
변수명.loc[변수명.['컬럼명'] == '-', '컬럼명'] = 0
4. 데이터 형 변환
- 문자열로 되어 있는 데이터를 정수형 혹은 실수형으로 변경한다.
pandas변수명['컬럼명'] = pandas변수명['컬럼명'].astype(int)
4.1. 날짜 형 변환
- 문자열로 되어 있는 날짜를 date 형으로 변경한다.
pandas변수명['날짜컬럼명'] = pandas변수명.to_datetime(pandas변수명['날짜컬럼명'])
5. 평균값 구하기
- mean() 함수 이용한다. 정수 혹은 실수형으로 되어 있어야지만 된다. 그외 sum 등 다양하게 존재하며
이전글에 명시해 두었다. describe() 를 통해 여러 값들을 계산한 결과를 볼 수 있다.
pandas변수명.mean()
6. 항목별 갯수 세기
- 카테고리가 많은 경우, 항목별로 갯수가 몇개인지 알 고 싶을 수 있다. (예 : 상위 10개의 키워드를 알고 싶을때)
- Counter 라이브러리를 이용하여 각 데이터별 카운트를 셀 수 있다
- 쇼핑몰을 크롤링 했을때 해당 키워드별 count를 할 때 유용하다. (상위 키워드를 알 수 있다)
from collections import Counter
Counter(pandas변수명['컬렴명'])
Counter(oil['지역']) 으로 했을 경우 결과이다.
from collections import Counter
Counter(pandas변수명['컬렴명']).most_common(숫자값)
을 할경우, 숫자값에 입력한 상위 n개를 보여준다. 아래가 그 결과이다.
[('경기도', 2873), ('경상북도', 1376), ('충청남도', 1141), ('경상남도', 1041), ('전라북도', 989)]
7. dataframe 타입으로 변경
- 여러 방법이 있지만, reset_index() 함수를 통해 dataframe 타입으로 변경 가능하다.
- dataframe 형으로 변경했으므로, 원하는 column 명으로 변경 해주면 좋다. 한글의 경우 시각화 시 깨지는 경우가
있으므로 영문으로 해주는게 좋다.
- 내부에 존재하는 문자열 데이터가 한글일 경우 해당 데이터도 영문으로 변경해주면 좋다. 아니면 폰트를 추가해야한다.
변수명1 = pandas변수명.reset_index()
#컬럼명 변경하는 법
변수명1.columns = ['변경할 컬럼명1', '변경할 컬럼명2', ....]
#컬럼별 데이터가 한글일 경우 변경하는 법
변수명1['컬럼명1'] = ['변경할 문자열1', '변경할 문자열2', ....]
이외 피벗테이블을 통해 Raw 데이터에서 필요한 데이터를 추출하여 저장 할 수 도 있다.
'데이터분석(파이썬)' 카테고리의 다른 글
Dash (Plotly) (0) | 2023.04.12 |
---|---|
차트 (Plotly) (0) | 2023.04.11 |
Pandas (0) | 2023.04.10 |
동적 웹크롤링 (Selenium, Cromedriver) (0) | 2023.04.10 |
정적 페이지 크롤링 (beautifulsoap4) (0) | 2023.04.07 |