달력

11
728x90
반응형

[파이썬을 활용한 데이터 전처리 Level UP- 3 회차 미션 시작]

* 복습

 - dictionary 데이터 구조는 어찌보면 데이터 처리를 하기 위한 기본적으로 알아야 하는 도구이다.

 - iteration 하는 for 문 itertools 에 대해서도 새롭게 배울 수 있었다. itertools 에 대한 것은 좀 더 많이 사용해서 활용의 빈도를 높여 봐야 할 것 같다.

 - comprehension 은 처리 속도 등은 참 좋은데.... 막상 잘 사용하는 것이 아직까지는 낯설다...

 - numpy. 는 pandas와는 뗄레야 뗄 수 없는 관계라고 생각한다. 자주 자주 사용하는 것만이... 최대한 익숙해지는 것 만이 방법이겠지..

 

Chapter 02. 데이터를 어떻게 표현할 것인가 - 파이썬 주요 데이터 구조 - 05. Pandas의 데이터 구조

* 자료형 1. Series

 - Series는 1차원 배열 자료형으로 인덱스와 값의 쌍으로 구성되어 있다.

 - 키를 인덱스로, value를 데이터로 .. 사전을 이용한 정의

 - 리스트를 이용한 정의를 할 수 있다.

 => 데이터 자체가 ndarray 형태로 이뤄져 있다.

 - Series는 ndarray에 인덱스가 부여된 형태의 데이터

 - Series에도 유니버설 함수와 브로드캐스팅 등이 적용됨

 

* 실습

 

import pandas as pd

 - pandas 로 import 해야 한다. pd는 약속된 정의이다.

 - 만약 인덱스를 설정하지 않으면 index는 0, 1, 2, 3... 등으로 자동으로 정의 된다.

 - series는 values라는 attributerk 이걸로 각각의 데이터가 값을 알 수가 있다.

 - series의 index 를 통해서 인덱스를 확인 할 수가 있다.

 - 유니버셜 함수와 브로드캐스팅이 적용되어 있다.

 

// 실습에서는 간략한 내용들에 대해서 알아봤고, 구글링을 통해서 아래와 같이 Data Cheat Sheet 를 얻을 수 있었다.

pandas.pydata.org/Pandas_Cheat_Sheet.pdf

=> pandas 의 전반적인 기능에 대해서 간략하게 설명해주는 좋은 sheet 이다.

// pandas의 series에 대한 documentation

pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html

=> 여기에 보면 굉장히 많은 series class 에 대한 내용들이 나와있다.

One-dimensional ndarray with axis labels (including time series). => 딱보면 강사님이 말한데로 ndarray 를 기본 바탕으로 하고 있다고 보면 된다. 

class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
더보기

Parameters

dataarray-like, Iterable, dict, or scalar value

Contains data stored in Series.

Changed in version 0.23.0: If data is a dict, argument order is maintained for Python 3.6 and later.

 

indexarray-like or Index (1d)

Values must be hashable and have the same length as data. Non-unique index values are allowed. Will default to RangeIndex (0, 1, 2, …, n) if not provided. If both a dict and index sequence are used, the index will override the keys found in the dict.

dtypestr, numpy.dtype, or ExtensionDtype, optional

Data type for the output Series. If not specified, this will be inferred from data. See the user guide for more usages.

namestr, optional

The name to give to the Series.

copybool, default False

Copy input data.

=> 링크에 들어가서 살펴보면 상당히 많은 Attributes 들이 있는 것을 볼수 있다. 그중에서 자수 사용하는 것들은 몇 가지 정도가 아닐까 본다. 나도 아직 초보지만..ㅠ.ㅠ

T

Return the transpose, which is by definition self.

shape

Return a tuple of the shape of the underlying data.

size

Return the number of elements in the underlying data.

values

Return Series as ndarray or ndarray-like depending on the dtype.

 

* 자료형 2. DataFrame

 - DataFrame은 2차원 배열 자료형으로 값, 행 인덱스, 열 인덱스로 구성

 - series와 마찬가지로 사전을 이용한 정의 할 수 있고.

 - 데이터, 컬럼, 인덱스 따로 정의 할 수가 있다.

 - 각 행 단위로 정의 할수도 있다.

 

 - ndarrayd의 row index 와 columns index가 함께 부여된 형태라고 봐도 된다.

 - DataFrame은 ndarray에 행과 열 인덱스가 부여된 형태의 데이터

 - DataFrame은 하나 이상의 Series의 집합이라도 볼 수 있다.

 - series 의 집합이라고 보는 것이 일반적인 해석이다.

 

* 실습

 - pd.DataFrame 으로 만든다.

 - series와 마찬가지로, index 는 생략이 가능하다.

 - values도 따로 찍어 볼수가 있고, array 형태로 output 값을 낼 수가 있다.

 - index 는 행 인덱스를 출려해준다.

 - columns 는 Dataframe에 포함된 columns 을 보여준다.

 - 보통은 인덱스보다는 columns을 출력을 많이 한다.

 - dataframe의 type ( ) 을 확인해 보면 series의 자료형으로 볼수 있다.

 

// DataFrame에 대한 Documentation

pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html

class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
더보기

Two-dimensional, size-mutable, potentially heterogeneous tabular data.

Data structure also contains labeled axes (rows and columns). Arithmetic operations align on both row and column labels. Can be thought of as a dict-like container for Series objects. The primary pandas data structure.

 

Parameters

datandarray (structured or homogeneous), Iterable, dict, or DataFrame

Dict can contain Series, arrays, constants, or list-like objects.

Changed in version 0.23.0: If data is a dict, column order follows insertion-order for Python 3.6 and later.

Changed in version 0.25.0: If data is a list of dicts, column order follows insertion-order for Python 3.6 and later.

indexIndex or array-like

Index to use for resulting frame. Will default to RangeIndex if no indexing information part of input data and no index provided.

columnsIndex or array-like

Column labels to use for resulting frame. Will default to RangeIndex (0, 1, 2, …, n) if no column labels are provided.

dtypedtype, default None

Data type to force. Only a single dtype is allowed. If None, infer.

copybool, default False

Copy data from inputs. Only affects DataFrame / 2d ndarray input.

// 솔직히 pandas에서 dataframe을 빼면 속빈 강정아닌가? 어마무시하게 많이 쓰이는 데이터분석에서는 빠질수가 없다.

// attributes 및 method는 너무 많다... 패스

 

* 인덱싱과 슬라이싱

 - 판다스의 객체는 암묵적인 인덱스(위치 인덱스)와 명시적인 인덱스라는 두 종류의 인덱스가 있어, 명시적인 인덱스를 참조하는 loc 인덱서와 암묵적인 인덱스를 참조하는 iloc 인덱서가 존재한다는 것이다.

 - 암묵적인 인덱스는 자동으로 입혀진 인덱스라는 것이다.

 - loc를 이용해서 슬라이싱에서는 맨 뒤 값을 포함한다..  하지만, iloc의 경우에는 슬라이싱에서는 맨 뒤 값을 포함하지 않는 다는 것이다.

 - 데이터 프레임의 컬럼 선택은 array 를 선택하는 것과 같다는 의미이다.

df[col_name] or df[col_name_list]

- 위치를 알고 싶을 때는 iloc indexer를 많이 쓴다.

 

* 실습

 - loc => 사전에서 key를 가지고 value를 찾는 것과 완벽히 동일하다고 보면된다.

 - loc 슬라이싱은 앞위 모두 포함..명시적인 값

 - iloc 는 index number를 입력해준다. 맨뒤는 제외

 - column name으로만 접근하면 => series로만 알려준다. df['a']

 - column name list 로 접그하면 => dataFrame으로 알려준다. df[['a']]

 

* pandas의 값을 조회하기 (1/2)

 - 쥬피터 환경에서는 데이터 프레임 혹은 시리즈 자료를 갖는 변수를 출력할 수 있다.

 - Tip 1. pd.set_option('display.max_rows', None)을 사용하여, 모든 행을 보이게 할수 이 있음.

 (None 자리에 숫자가 들어가면, 출력되는 행의 개수가 설정된다.)

 - Tip 2. pd.set_option('display.max_columns', None) -> 모든 컬럼을 보이게 할 수 있음.

 

// 아래에는 이 옵션에 관한 documentation

pandas.pydata.org/pandas-docs/stable/reference/api/pandas.set_option.html

// 위 코드도 데이터분석할때 데이터를 더 넓게 보기 위해서 사용은 해봤는데. 주피터 노트북에서 잘 안 먹힐때도 많았다.

# Row, None 대신 숫자 가능
pd.set_option('display.max_rows', None)
# columns, None 대신 숫자 가능
pd.set_option('display.max_columns', None)

 

* 실습

 - 모든 정보를 보는 것은 memory의 낭비가 심하기 때문에 잘 사용하지 않는다. 비효율적이다... 절대로 이렇게 보는 것은 비추천방법이다.

 

* 값 조회하기 (2/2)

 - 데이터 크기 때문에, 아래 함수를 사용하여 데이터 일부만 확인하거나 요약 정보를 확인하는 것이 바람직하다.

 - DataFrame.head( n ) -> DataFrame 의 맨 앞 n개 행을 보여줌 (default: 5)

 - DataFrame.tail( n ) -> DataFrame 의 맨 뒤 n개 행을 보여줌 (default: 5)

// 위의 head( ) , tail( ) 은 엄청나게 자주 사용한다.

 

* 실습

 - df.head(10) 을 쓰면 10개의 행을 볼 수 있다.

 - columns

  . 기본적으로 보는 정보중 하나이다. DataFrame을 구성하는 컬럼명 집합을 보여준다.

 - dtypes

  . 어떤 자료형인지를 판단할 때 자주 쓴다.

 - 그룹별 통계, 시각화 등을 통해서도 값 등을 조회할 수가 있다.

// 난 dtypes 들 보다는 describe( ) , info( ) 등을 더 많이 사용하는 것 같기도 하다.

 

* 값 변경하기

 - 인덱서를 사용하여 조회한 값을 직접 변경할 수 있다.

 

* 실습

 - object 라는 값은 string으로 이해하면된다.

 - 보통 series 는 ndarrary의 특성을 그대로 가져 간다.

 

 

Chapter 03. 재료 준비하기 - 데이터 불러오기 - 01. 개요

 

* 경로 확인하기 및 설정하기

 - 파이썬에서 데이터를 불러오려면 반드시 경로와 확장자까지 포함시켜서 불러와야 함.

 - os module을 통해서 설정할 수 있다.

 - 경로를 설정함으로써 파일을 불러올 때마다 경로를 포함시키는 번거로움을 해결함

 - os module에 속한 함수를 사용하면 경로를 확인하고 설정할 수 있다.

  . os.getcwd( ) -> 현재 경로를 반환한다.

  . os.chdir(path) -> 현재 경로를 path로 설정할 수 있다.

 

* 경로 설정 Tip

 - 데이터 속성 - 위치 혹은 주소창에 있는 경로를 복사해서 붙여 넣어 손쉽게 경로를 설정할 수 있다.

 - \n 줄바꿈, \t tab

 - 이걸 인식이 안되게 하기 위해서는 아래와 같이 입력해야 한다.

 

* 실습

import os

 

 - os.getcwd( ) 현재 경로를 확인하는 코딩

 - 일반적으로는 주소창을 복사하는 것이 일반적이다.

 - 만약, 바탕화면. 처럼 이상하게 나오면 오른쪽 우클릭으로 위치를 찾아서 작성해줘야 한다.

 - r 을 포함해서 string으로 인식해줘야 한다.

 - getcwd( ) 으로 확인해보면 역 슬러쉬가 두개로 입력이 되어 있다.

// 아래는 참고 사이트

python101.pythonlibrary.org/chapter16_os.html

 

 

Chapter 03. 재료 준비하기 - 데이터 불러오기 - 02. open을 사용한 데이터 불러오기 및 내보내기

* open 함수를 이용한 파일 불러오기

 - 파이썬의 내장 함수인 open 함수를 사용하면 파일을 손쉽게 불러올 수 있다.

 - 정제되지 않는 형태의 데이터를 불러오는 경우에 주로 사용한다.

 - 보통 잘 정제되지 않은 경우이고, 잘 정제된 경우에는 csv 로 정리가 되어 있다.

 - 모드에서 크게 r (default), w, a가 있음

  . r: 읽기 (기존 파일을 읽어옴)

  . w: 쓰기 (새로운 파일을 

 - 파일 객체는 사용 후에 close 함수를 사용하여 닫아 줘야 한다.

 - 만약에 close를 사용하지 않으면 with를 사용한다.

 

* read / readline을 이용하여 데이터 불러오기

 - f.read( ) : 파일 f에 있는 모든 내용을 불러온다.

  . f 는 반드시 'r' 이나 'rb'로 불러와야 한다.

 // b 는 binary 의 약자이다.

 - 특정 문자로 기준으로 split을 할 수 있다.

 - str 을 모두 int로 바꾸거나 한꺼번에 바꿀때 많이 쓰인다.

 

* 실습

 - 불러온다음에는 반드시 닫아줘야 한다.

 - 파일이 정제되지 않고 읽혀져서 온다.

 - list comprehension 을 이용해서 데이터르 정제해야 한다.

 - 숫자로 바꿀 수 있는 것은 바꾸기 위한 함수이다. 첫줄에는 문자이다.

 - readline을 이용해서 데이터 불러오기

  . 한번 읽고 나면 그 line은 불러 올 수가 없다. 새로운 line은 새롭게 다시 불러와야 한다.

 - line 이 빈 문자열이 될 때는 None, False 등의 값으로 되돌아오게 된다.

 - 첫번째 라인 \n이 있는데, 다른 라인에 없는 내용은 float으로 map을 실행했기 때문에 없다.

 

* Write 함수를 사용하여 내용 쓰기

 - f.write(string) : string을 파일 f에 씀 (f는 반드시 'w'이나 'a'로 불러와야 함)

 - 리스트 등을 string으로 변환하는 join 함수를 활용하면 효율적으로 파일을 쓸 수 있음

  . sep.join 등으로 합 칠 수 있다.

 

* 실습

- as 뒤에 f 는 그 with 구문까지만 f 를 사용하는 것이고, 그 블록이 끝나게 되면 f 는 존재하지 않는다.

- with 함수는 사실상 

- f = open('wrtten_data.cvs', 'w')

- f.colose()

와 동일 한데 한줄로 작성 할 수 있다는 것이다. 단 한줄로 with 함수를 써서 사용할 수 있다는 것이다.

 

 

[파이썬을 활용한 데이터 전처리 Level UP-Comment]
솔직히 pandas는 따로 강의를 해도 될 만큼 방대한 양이긴 하지만 오늘은 정말 간략하게 설명을 하고 추후에 데이터 분석 실습을 통해서 좀 더 알아 본다고 하였다. 다음에 이어질 강의도 기대를 해본다.

오늘 공부 끝!^^!

 

https://bit.ly/3m7bW22

 

파이썬을 활용한 데이터 전처리 Level UP 올인원 패키지 Online. | 패스트캠퍼스

데이터 분석에 필요한 기초 전처리부터, 데이터의 품질 및 머신러닝 성능 향상을 위한 고급 스킬까지 완전 정복하는 데이터 전처리 트레이닝 온라인 강의입니다.

www.fastcampus.co.kr

 

728x90
반응형
:
Posted by 패치#노트