alpyrithm_알파이리즘
DAY1. Data Analysis Basic & Pandas Basic 본문
Summary
- Data Analysis의 이해
- Data Analysis 기본 구조
- Pandas 주요 데이터 구조
Main
1. Data Analysis의 이해
- 반복적인 프로세스
- 기업/사회에서 발생하는 실제 문제를 분석하고 최적화된 솔루션을 도출하여 새로운 가치를 창출하는 것
- Data Collection(데이터 수집), Data Wrangling(데이터 준비), EDA(탐색적 데이터 분석) 및 Drawing Conclusion(결론 도출)의 과정으로 이루어짐
- 유용한 정보를 발굴하고 결론 내용을 알리며 의사결정을 지원하는 것을 목표로 데이터를 정리, 변환, 모델링하는 과정
참고 자료 : Hands-On Data Analysis with Pandas
2. Data Analysis 기본 구조
- Data Collection(데이터 수집)
- 모든 데이터 분석을 위한 첫 번째 단계
- 분석에 필요한 데이터의 종류, 형태, 발생 주기, 수집 기간 및 방법 등 데이터의 특성을 명확히 파악하고 정의하는 것
- 조사하거나 분석할 대상을 결정할 때 분석에 유용한 어떤 종류의 데이터를 수집해야 하는지에 대해 고려
- 결론을 내리는 데 도움이 되는 데이터를 수집하고 있는지 확인하는 것이 중요
- 예를 들어, 온도가 낮을 때 핫초콜릿 판매가 더 높은지 확인하려는 경우 매일 핫초콜릿 판매량과 온도에 대한 데이터 수집 필요
- 사람들이 핫초콜릿을 얻기 위해 얼마나 멀리 여행했는지 보는 것이 흥미로울 수 있지만 분석과 관련이 없음
- Data Wrangling(데이터 준비)
- 데이터를 준비하고 분석에 사용할 수 있는 형식으로 가져오는 프로세스
- 데이터의 현실은 데이터가 더러워서 사용하기 전에 청소(준비)가 필요
- 데이터에서 발생할 수 있는 몇 가지 문제들
- 인적 오류
- 1000 대신 100을 입력하거나 오타를 입력하는 등 데이터가 잘못 기록된 경우.
- 서울시, 서울과 같이 기록된 동일한 항목의 여러 버전이 있는 경우
- 컴퓨터 오류
- 한동안 항목을 기록하지 않은 경우(데이터 누락)
- 예상치 못한 값
- 데이터를 기록한 사람이 사용하기로 결정하지 못했던 값들
- 불완전한 정보
- 선택적인 질문이 있는 설문 조사의 경우 모든 사람이 대답하지는 않기 때문에 데이터가 누락된 경우
- 필드의 관련성
- 종종 데이터가 분석을 위한 일부 프로세스의 결과물로 수집되거나 생성된 경우, 사용 가능한 상태가 되려면 정리가 필요
- 데이터 형식
- 데이터가 분석에 도움이 되지 않는 형식으로 기록될 수 있으므로 데이터를 재구성해야 함
- 데이터 기록 프로세스의 구성 오류
- 새로운 데이터 포인트를 수집해야 하나?
- 잘못 구성된 추적기 및 웹훅, 웹 크롤러와 같은 소스에서 가져온 데이터에 필드가 누락되었거나 잘못된 순서로 전달되는 케이스 발생
- 인적 오류
- 데이터 확인을 통하여 발견된 결측치나 이상치에 대한 적절한 처리를 통해 데이터 품질을 보강하는 작업
- 분석 결과의 신뢰성 향상을 위한 사전 작업으로 중요
- Exploratory Data Analysis(EDA)
- EDA 과정 동안 시각화 및 요약 통계를 사용하여 데이터를 더 잘 이해할 수 있음
- 데이터에 따라, 시간에 따라 관심 변수가 어떻게 진화했는지, 각 범주에 속하는 관측치 수를 비교하고, 이상 값을 찾고, 연속 및 이산 변수의 분포를 살펴볼 수 있음
- 다양한 시각화, 통계 분석을 이용하여 데이터의 패턴, 특성 및 변수 간의 관계 파악 등 데이터를 종합적으로 이해하는 과정
- 그래프와 정보를 통합한 인포그래픽스(info-graphics)
- 데이터의 전체적인 분포 모습 이해
- 데이터 간의 상호 연관성 확인
- Drawing Conclusion(결론 도출)
- 분석을 위해 데이터를 수집하고 정리한 후 철저한 EDA를 수행한 후 결론을 도출하는 단계
- 이 단계에서 EDA의 결과를 요약하고 다음의 질문들을 통해 단계로의 진행을 결정
- 데이터를 시각화할 때 패턴이나 관계가 발견되었나?
- 데이터는 어떻게 배포되는가?
- 데이터는 우리가 가진 질문에 답하거나 조사 중인 문제에 대한 통찰력을 제공하는 데 도움이 되는가?
- 새로운 또는 추가 데이터를 수집해야 하나?
3. Pandas 주요 데이터 구조
- Python에는 튜플, 목록 및 사전과 같은 여러 데이터 구조가 이미 있음
- Pandas는 데이터 작업을 용이하게 하기 위해 Series와 DafaFrame의 두 가지 주요 구조 제공
- Series 및 DataFrame 데이터 구조에는 각각 다른 Pandas 데이터 구조가 포함되어 있지만, Pandas 데이터 구조를 이해하려면 Pandas가 빌드하는 n차원 Array를 제공하는 NumPy도 살펴볼 필요가 있음
- 클래스 자체를 참조하지 않는 한 DataFrame 객체를 데이터 프레임으로, Series 객체를 Series로, Index 객체를 Index로 각각 참조
- Data Structure은 Python 클래스로 작성.
- 실제로 하나를 만들 때 이를 객체 혹은 인스턴스라고 하며, 일부 작업은 객체 자체 메서드를 사용하여 수행할 수 있는 반면, 다른 작업에서는 객체를 일부 함수에 대한 인수로 전달
- Pandas 함수를 사용하여 CSV 파일을 DataFrame 클래스의 개체로 읽지만 열을 삭제하거나 요약 통계 계산과 같은 작업을 수행하기 위해서는 DataFrame 개체의 메서드를 사용
- Pandas를 사용하면 객체의 속성에 액세스 가능
- 이때, 메서드나 함수처럼 액션을 생성하지는 않지만, 대신 차원, 열 이름, 데이터 형식 및 비어 있는지 여부와 같은 Pandas 개체에 대한 정보가 제공됨
- Numpy 사용법 익히기
- np.genfromtxt
- Load data from a text file, with missing values handled as specified
- 텍스트 파일 읽는 함수
- parameter
- delimiter : str, int, or sequence, optional
- 배열의 요소를 나누어 입력하기 위한 구분문자를 입력받는 파라미터
- 기본값은 None으로 탭과 스페이스 같은 빈 공간을 나눈다.
- autostrip : bool, optional
- 스페이스와 같은 공간을 자동으로 없애버리는 기능을 가진 파라미터
- 기본값은 False(거짓)
- 문자열 등의 자료형을 넣을 경우 유용
- comments : str, optional
- 텍스트 파일에 주석이 포함되어 있는 경우, 주석을 제거하는 기능을 가진 파라미터
- 기본값은 None
- 주석에 해당하는 문자(열)(ex - #)을 입력하면 된다.
- skip_header & skip footer : int, optional
- 파일 전후단에 필요 없는 데이터가 있을 경우 필터링하는 파라미터
- 해당 변수들은 정수 입력으로 해당되는 라인까지 제거
- usecols : sequence, optional
- 사용하고자 하는 열을 선택하는 파라미터
- 정수 혹은 시퀀스 입력
- names : {None, True, str, sequence}, optional
- 열의 인덱스에 이름을 부여할 수 있는 파라미터
- True인 경우 텍스트의 첫 번째 줄에서 names를 가져오는 파라미터
- defaultfmt : str, optional
- 열 이름을 입력하고자 하고, 열 이름을 정해진 형식에 맞춰 입력하고자 할 때 사용하는 파라미터
- 문자열 형태로 입력
- 기본값은 'f%i'
- %i 대신 %02i로 입력할 경우 2자리 수로 입력
- converters : variable, optional
- 특별한 양식의 데이터 형식(예 : 날짜[yyyy/mm/dd], 퍼센트[xx%] 등)에서 데이터를 추출할 때 사용하는 파라미터
- missing_values : variable, optional
- 기본적으로 빈 문자열은 누락된 것으로 여겨 누락되거나 유효하지 않은 데이터를 표현하기 위해 특수한 문자열(예 : N/A, ??? 등)과 같은 복잡한 문자열을 고려하는 파라미터
- filling_values : variable, optional
- 데이터가 누락되었다는 것을 표시하는 파라미터
- 누락된 데이터 위치에 채우는 기본값은 자료형에 따라 다름
- usemask : bool, optional
- usemask 변수를 True로 설정하면 불린마스크(boolean mask)를 구성하여 누락된 데이터의 발생을 추적하는 파라미터
- usemask를 True로 설정하면 MaskedArray가 출력으로 나오며 누락됐으면 True 아니면 False를 출력
- delimiter : str, int, or sequence, optional
- data.shape : array 차원
- tuple 형태 - (int, (int))
- data.dtype : array 포함된 데이터 유형
- type, size, byte order of the data
- type
- int
- bool
- float
- complex
- bytes
- str
- byte order
- > : big-endian
- < : little-endian
- array-protocol type
- ? : boolena
- b : (signed) byte
- B : unsigned byte
- i : (signed) integer
- u : unsigned integer
- f : floating-point
- c : complex-floating point
- m : timedelta
- M : datetime
- O : (Python) objects
- S, a : zero-terminated bytes (not recommended)
- U : Unicode string
- V : raw data (void)
- 예시
- np.dtype('i4') : 32-bit signed integer
- np.dtype('f8') : 64-bit floating-point number
- np.dtype('c16') : 128-bit complex floating-point number
- np.dtype('a25') : 25-length zero-terminated bytes
- np.dtype('U25') : 25-character string
- data.dtype.names
- ordered list of field names
- None if there are no fileds
- 예시
- np.dtype([('name', np.str_, 16), ('grades', np.float64_, (2, ))])
- dt.names # ('name', 'grades')
- argmax(a, axis=None, out=None) : 차원에 따라 가장 큰 값의 인덱스 반환
- returns the indices of the maximum values along an axis
- parameters
- a : array_like
- axis : int, optional
- out : array, optional
- 예시
- a = array([[10, 11, 12], [13, 14, 15]])
- np.argmax(a) # 5
- np.argmax(a, axis=0) # array([1, 1, 1])
- np.argmax(a, axis=1) # array([2, 2])
- np.genfromtxt
728x90
반응형
'SM공부 > Data Mining & Machine Learning' 카테고리의 다른 글
DAY6. Supervised Learning III (0) | 2020.07.27 |
---|---|
DAY5. Supervised Learning II (0) | 2020.07.26 |
DAY4. Supervised Learning I (0) | 2020.07.25 |
DAY3. Dimension Reduction - PCA (0) | 2020.07.24 |
DAY2. Data Analysis Basic & Pandas Basic (0) | 2020.07.23 |
Comments