A. 금일 학습내용

1. 가상환경 추가 학습

(base) C:\Users\Sungmin Kang>conda env remove -n [ D:\BootCamp\Data preprocessing\bootcamp_basic]
usage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND ...
conda-script.py: error: unrecognized arguments: D:\BootCamp\Data preprocessing\bootcamp_basic]

- terminal에 해당 메세지가 출력되었다.

- conda env remove 명령어를 사용할 때 인자에 문제가 발생한 것으로 보고, 경로를 포함하여 삭제하였다.

conda env remove -p "D:\BootCamp\Data preprocessing\bootcamp_basic"

- 경로에 공백이 있으면 안되기 때문에 꼭 큰 따음표로 묶어주어야 한다.

 

이 시스템에서 스크립트를 실행할 수 없으므로 
C:\Users\Users\OneDrive\문서\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 
파일을 로드할 수 없습니다.

- 그 다음에는 이런 문구가 떴다.

- 찾아보니 PowerShell에서 스크립트를 실행할 수 없다는 오류는 실행 정책 설정 때문에 발생한다고 한다.

- 해결하기 위해서는 다음의 과정을 거쳐야 한다.

 

1) Window PowerShell Prompt 를 관리자 권한으로 실행한다.

 

2) 현재 실행 정책을 확인한다.

Get-ExecutionPolicy

 

3) 실행 정책을 변경한다.

Set-ExecutionPolicy RemoteSigned
# 둘 중 아무거나 하나만 가져다 사용하면 된다.
Set-ExecutionPolicy Unrestricted

- 실행 정책을 변경하는 도중 아래의 메시지가 뜬다.

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 
실행 정책을 변경하면 about_Execution_Policies 도움말 항목(설명된 보안 위험에 노출될 수 있습니다.)
실행 정책을 변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  
[?] 도움말 (기본값은 "N"):

- 아래 옵션을 보고 본인이 결정하면 된다. 나는 보안을 고려하여 현재 세션에서만 적용하는 것으로 하였다.

- 나중에 또 이런일이 있으면 이 글을 참고하고자 한다.

  • Y: 현재 세션에서만 변경 (한 번만 적용)
  • A: 모든 세션에서 변경 (영구적으로 적용)

4) 실행 정책이 제대로 바뀌었는지 확인한다.

Get-ExecutionPolicy

 

5) PowerShell Prompt를 종료하면 된다.

- 스크랩 실행은 되겠지만, 보안에 유의해야하며 신뢰할 수 있는 스크립트만 실행하는 것이 좋다.

 

2. 가상환경 pip install pandas 가 안된다..?

- 가상환경이기 때문에 하나부터 열까지 다 설치를 해야한다.

- 환경변수도 확인해야 한다. Python의 설치 경로가 Path에 반영되어 있는지 확인해야한다. (시스템 환경 변수 편집)

- pip이 설치가 되지 않았을 때는 아래와 같은 과정을 진행한다.

 

1) 아래 링크로 들어가 py 파일을 저장한다. 저장 위치를 기억해야 한다.

https://bootstrap.pypa.io/get-pip.py

 

2) Anaconda Prompt 를 관리자 권한으로 연다

 

3) cd 명령어를 사용하여 get-pip.py 파일이 저장된 디렉토리로 이동한다.

cd D:\program_download  #내 파일경로이다.

 

4) get-pip.py 실행한다.

python get-pip.py

 

5) 설치가 잘 되었는지 확인한다.

pip --version

- 설치가 다되었다.

 

6) 그 외 필요한 패키지들을 다운로드 한다.

 

B. 마무리

... 필요한 패키지들을 모두 설치하여 그래프를 그려냈으니 되었다.

무사히 잘 끝났으니 되었다.

A. 금일 학습내용

1.  피벗테이블(pivot table) 

- 정의: 데이터프레임에서 특정 기준으로 데이터를 집계하고 요약한 테이블

- 구성:

          행 위치에 들어갈 열              index =

          열 위치에 들어갈 열              columns =

          데이터값  위치에 들어갈 열  values = 

          집계함수                               aggfunc =

pd.pivot_table(
    data,           # 피벗 테이블을 만들 데이터프레임
    index=None,     # 행 레벨을 지정하는 열 또는 열의 리스트
    columns=None,   # 열 레벨을 지정하는 열 또는 열의 리스트
    values=None,    # 피벗 테이블에 채울 값을 지정하는 열 또는 열의 리스트
    aggfunc='mean', # 집계 함수를 지정 (기본값은 'mean')
    )

- 예시

#pd.pivot_table() 함수를 사용하여 피벗테이블 생성
data = {
    'category': ['A', 'B', 'A', 'B', 'A'],
    'value': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
df.pivot_table(index='category', values='value', aggfunc='sum')

- df의 모양은 이렇게 생겼다. 이 데이터로 피벗테이블을 만들면 아래와 같은 결과가 나온다.

- 카테고리 A에 해당하는 value 값을 'aggfunc'에서 지정했던 것처럼 모두 더한 값이 들어간다.

- 카테고리 B에 해당하는 value값도 카테고리 A와 같은 방식으로 값이 할당된다.

 

2. 응용버전

- 기초적인 피봇테이블은 쉽다.

- 데이터는 kaggle에서 제공하는 Spotify 사용자 행동 데이터세트 를 사용하고자 한다.

- 그렇다면 좀 더 많은 데이터를 피벗테이블로 불러와 분석해보자.

# 데이터 재조정
data = {
    'spotify_listening_device': [
        'Computer or laptop', 
        'Smartphone', 
        'Smartphone, Computer or laptop', 
        'Smartphone, Smart speakers or voice assistants', 
    ],
    'Afternoon': [31, 9, 2, 27],
    'Morning': [15, 4, 2, 8],
    'Night': [6, 1, 1, 7]
}

- 딕셔러니 자료형 data가 생성되었다.

- 이 모양이면 피벗테이블에 적용도 못할테니 형태를 맞춰주도록 하자.

# DataFrame 생성
df2 = pd.DataFrame(data)

# DataFrame의 인덱스 설정
df2.set_index('spotify_listening_device', inplace=True)

- data에 DataFrame 함수를 적용하여 테이블 형태를 갖추게 하였다.

- 'spotify_listening_device'를 인덱스로 설정하였다.

- 이제 모든 정리가 완료된 것 같으니 피벗테이블을 만들어보자.

# 피벗 테이블 만들기
pivot_table = df2.pivot_table(index=df2.index, 
                              values=['Afternoon', 'Morning', 'Night'], 
                              aggfunc='sum', 
                              fill_value=0)

- 앞에서 보았던 피벗 테이블의 구성을 다시 한번 보면서 어떤 값들이 들어갔는지 확인하면 아래와 같다.

- 구성:

          행 위치에 들어갈 열              index = df2.index

          열 위치에 들어갈 열              columns =  ????????????????

          데이터값 위치에 들어갈 열   values = ['Afternoon','Morning','Night']

          집계함수                               aggfunc = sum

          결측치 발생시 대응방법        fill_value = ??????????????

- 열 인덱스 columns가 안 들어고 fill_value=0 이 추가되었다.

- 우선 fill_value = 0 은 결측값일 때 0으로 채우라는 조건이다.

-  열 인덱스 columns는 필요없다. 

- 이미 value에 칼럼 값을 지정해두었기 때문이다.

 

3. 심화버전

- 그렇다면 3개의 데이터를 하나의 피벗 테이블에 넣는 것은 어떨까.

- 연령대별 시간대별 장르 선호도를 분석할 예정이다.

- 선호하는 음학 장르별 수를 센 결과값이다.

# df는 전체 데이터전처리 과정이 끝난 테이블을 담고 있다.
pivot_table = df.pivot_table(index=['Age','music_time_slot'],
	             	     columns='fav_music_genre',
                             aggfunc='size',
                             fill_value=0)

- 구성:

          행 위치에 들어갈 열          index = ['연령 칼럼명', '음악 청취시간 칼럼명']

          열 위치에 들어갈 열          columns =  '음악장르 칼럼명'

          데이터 위치에 들어갈 열   values = 집계함수를 통해 나타나는 수

          집계함수                            aggfunc = size

          결측치 발생시 대응방법    fill_value = 0

 

4. 시각화

- 시각화를 통해 데이터가 무슨 내용을 전달하는지 더 효과적으로 파악할 수 있다.

pivot_table.plot(kind='barh', stacked=True)
plt.title('age,time and genre')
plt.ylabel('age and time')
plt.xlabel('genre count')
plt.legend(title='genre', bbox_to_anchor=(1, 1))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

◆ 데이터 분석

  1. 시간대별로 선호되는 음악 장르가 다르게 나타난다. 아침에는 팝, 클래식 & 멜로디, 댄스 장르가 많이 선호되고, 밤에는 랩, 올드송, 록 장르가 많이 선호된다.
  2. 젊은층(20-35세)에서는 전자음악/댄스, 힙합, 팝 장르가 상대적으로 더 선호되는 반면, 중장년층(35-60세)에서는 클래식 & 멜로디, 올드송 장르가 더 선호되는 것으로 보인다.
  3. 전반적으로 장르 다양성이 높은 것으로 나타나, 다양한 음악 장르들이 고르게 소비되고 있음을 알 수 있다.
  4. 특정 시간대와 연령층에 따라 선호되는 음악 장르의 차이가 뚜렷하게 나타나므로, 이를 고려한 타깃 마케팅이 필요할 것으로 보인다.

B. 마무리

유의미한 데이터를 파악하고, 데이터를 읽는 것뿐만 아니라 한 발 더 나아가는 것은 생각보다 어려운 일이었다.

이제 처음 배우는 것이라 답답한 마음이 더 크지만 하나씩 배워나가며 성장해 나갈 수 있다는 기회가 있음에 감사하다.

머신러닝, 딥러닝 등의 알고리즘을 공부하고, 통계 공부도 하고, 수학 공부도 하고 병행해야 하는 것들이 많아졌다.

하나에 집중해서 12시간 동안 몰입하는 것이 어렵다면 나는 학교 시간표와 같이 시간을 나눠 일정시간 몰입하는 방법으로 나아가고자 한다.

A. 금일 학습내용

1. 파이썬의 가상환경

- 하나의 독립된 파이썬 실행 환경

- 해당 환경에서 패키지들을 설치하고 사용할 수 있다.

- 다른 프로젝트와 격리되어, 각기 다른 프로젝트가 서로 간섭하지 않도록 한다.

2. 가상환경의 필요성

- 프로젝트 간 의존성 충돌방지

   프로젝트별 필요한 패키지를 독립적으로 관리할 수 있다.

- 프로젝트 관리 용이

  프로젝트와 관련된 패키지 목록을 쉽게 관리하고 공유할 수 있다.

- 시스템 전역 패키지와의 분리

   가상환경을 사용한다면 시스템에 기본으로 설치된 파이썬 패키지를 변경하면 시스템 안정성을 지킬 수 있다.

3. 가상환경 생성

- anaconda를 활용하여 파이썬을 설치한 상황에서 가상환경을 생성하고자 한다.

- andaconda는 아래 주소에서 다운로드 받을 수 있다.

Download Anaconda Distribution | Anaconda

4. 가상환경 생성

1) Anaconda Powershell Prompt를 관리자 권한으로 연다.

-  'base'는 anaconda에서 기본적으로 제공하는 기본 가상환경이다.

- 'base' 기본 가상환경에서 내배캠 기초과정에서 학습한 모든 파일을 'bootcamp_baisc'  이란 가상환경으로 옮기고자 한다.

2) 가상환경 생성 코드를 작성한다.

conda create --name myenv #anaconda를 통해 'myenv'라는 가상환경 생성

- 내 경우 경로 간의 공백이 발생한다는 오류가 발생하여 이와 다른 방식으로 가상환경을 생성하였다.

 conda create --prefix "D:\BootCamp\Data preprocessing\bootcamp_basic"

▶  --name vs  --prefix  에 관하여

공통점: conda에서 가상환경 생성 시 사용하는 옵션

차이점: 

구분 --name --prefix
차이점 가상 환경의 이름 지정
기본적으로 환경을
C:\Users\[사용자 이름]\anaconda3\envs\ 경로에 생성
      
가상 환경을 생성할 경로를 명시적으로 지정
사용자가 원하는 위치에 환경을 생성할 수 있으며, 경로를 완전히 지정해야함.
요약 환경 이름을 지정하고, 기본 경로에 생성. 사용자 지정 경로에 환경을 생성.

- 가상환경이 제대로 생성된다면 (base) 가상환경이 앞서 정의한 가상이름으로 변경된다.

5. 가상환경 활성화

conda activate myenv  #myenv 가상환경 활성화

- 기존 --name 활용하여 가상환경을 생성하였다면 위의 코드가 제대로 작동할 것이다. 

- 그러나 --prefix 활용한 유저는 위와 같은 오류가 발생하기에 아래의 코드를 작성해야한다.

conda activate "D:\BootCamp\Data preprocessing\bootcamp_basic"

- 가상환경 위치 정보를 큰 따움표("")로 감싸고 코드를 실행시켜야 한다.

- 그래야 아래와 같이 오류가 발생하지 않는다.

6. 가상환경 내부 패키지 설치 리스트 확인

conda list

7. 가상환경 비활성화

conda deactivate

- 비활성화 방법은 설치와 활성화 방법보다 훨씬 쉽다.

- 내가 만든 가상환경에서 기본 가상환경 base로 돌아왔음을 알 수 있다.

8. 가상환경 이름 별칭 짓기

- --prefix로 만든 가상환경의 이름은 "(D:\BootCamp\Data preprocessing\bootcamp_basic)" 너무 길다.

- anaconda 내부에서 별칭을 사용할 수 없지만 PowerShell 프로파일을 활용하여 별칭을 만들 수 있다.

8-1. Anaconda Powerhell Prompt관리자 권한으로 열기

notepad $PROFILE

- 파일이 없다면 생성하겠냐는 메세지에 '예'를 선택하여 .txt 파일을 만든다.

- False가 뜬다면 프로파일 파일 생성을 하고 별칭을 추가하는 과정을 다시 거쳐야 한다.

New-Item -Path $PROFILE -ItemType File -Force

8-2 별칭 추가하는 함수 작성

function bc {
    conda activate "D:\BootCamp\Data preprocessing\bootcamp_basic"
}

- bc를 입력하였을 때 base 기본 가상환경에서 내가 만든 새로운 가상공간으로 넘어갔음을 확인할 수 있다. 

B. 마무리

필요에 따라 가상환경을 만들어 작업을 한다면 프로그램 간 충돌이 벌어지지 않을 것이다. 프로젝트별 가상환경을 만드는 것을 꼭 습관화해야겠다. 꼬이고 날아가는 일은... 있으면 안 된다...

 

A. 금일 학습내용

1-1. 이상치 탐색

- IQR (Interquartile Range) : 데이터의 중간 50% 범위인 IQR을 사용하여 이상치를 정의하고 탐지

- 데이터 분포의 중심적 경향과 분산에 영향을 받지 않으며, 데이터 상위 25%와 하위 25%사이의 범위를 계산한다.

- 데이터의 IQR를 계산하고, 이에 1.5배를 사용하여 상위 및 하위 한계를 정의한다.

- 해당 범위를 벗어나는 데이터 포인트를 이상치로 간주한다.

IQR 를 나타낸 Boxplot

- 이상치 탐색 이유

1) 데이터 오류 탐지: 데이터 입력 오류, 시스템 오류, 잘못된 측정 등의 이유로 발생한 이상치를 감지하고 제거함으로써 데이터의 정확성과 신뢰성을 높일 수 있다.

- 예측 모델 정확도 향상: 이상치는 예측 모델에 영향을 미칠 가능성이 있어 이를 제거하거나 대체하여 모델의 성능을 향상시킬 수 있다.

1-2. 이상치 처리

- df.drop(columns), df.drop(인덱스 리스트), df.dropna() : 컬럼삭제, 해당 인덱스 리스트 행삭제, 결측치가 있는 행 삭제

- df.drop_duplicates() : 중복행 삭제

- 해당 컬럼은 int data type으로 이루어지도록 데이터를 처리한다.

- IQR를 구하여 이상치 기준을 세우는 코드는 위와 같다.

2. 시각화

- seaborn 라이브러리, matplotlib.pyplot 라이브러리, misiingno 라이브러리를 사용하여 결측치를 시각화 할 수 있다.

- 위의 코드를 활용하여 시각화를 하면 아래와 같은 결과가 도출된다.

- 이상치가 존재함을 분명히 알 수 있다.

B. 마무리

결측치 및 이상치를 처리하는 방법은 데이터 분석가의 능력이라 한다. pandas를 활용하여 각 컬럼별로 데이터를 분석하고 이를 탐색, 분석하여 데이터에서 좋은 인사이트를 도출할 수 있는 사람이 되고 싶다.

A. 주제

주제: 데이터 기반 의사결정의 장점, 요즘IT의 번역글, 2021.09.27

https://yozm.wishket.com/magazine/detail/1051/

 

데이터 기반 의사결정의 장점 | 요즘IT

데이터 기반 의사결정은 의사결정을 내리기 전, 데이터를 활용해서 이대로 진행해도 무리가 없는지 체크하여 행동 방침을 승인하는 과정을 의미합니다. 데이터 기반의 의사결정은 분명 수많은

yozm.wishket.com

 

B. 요약

데이터 기반을 통한 의사결정은 리스크를 줄이고 효율적인 결정을 할 수 있다는 장점이 있다.

 

C. 주요포인트

1. 데이터 기반 의사결정을 하는 이유

- 발생 가능한 리스크를 파악하고 확신을 가지고 의사결정을 내릴 수 있다.

- 데이터를 근거로 문제점을 파악하고 타인과 효과적인 의사결정이 가능하다.

- 비용 절감 효과가 있다.

 

2. 데이터 기반 업무 처리를 위해서 해야하는 것

- 분석적인 사고를 하기 위해 노력하며 예상치 못한 지점에서 패턴을 찾아야 한다.

- 직관이 아닌 데이터 기반의 결정하여야 한다.

- 데이터 시각화하여 데이터의 특성을 알아보기 쉽게 나타낸다.

 

D.용어 정리

1. 데이터 중심 의사 결정(DDDM, Data-Driven Decision-Making): 기업이 의사결정을 하는 과정에 직감이나 리더의 개인적 판단이 아닌 데이터를 분석해서 체계적으로 판단하는 회사의 운영 체제

 

A. 금일 학습내용

1. EDA (Exploratory Data Analysis, 탐색적 데이터 분석)

- 사전적 정의: 데이터를 분석하고 결과를 내는 과정에 있어서 지속적으로 해당 데이터에 대한 '탐색과 이해'를 기본으로 가져야 한다.

- 벨 연구소의 수학자 '존 튜키'가 개발한 데이터분석 과정에 대한 개념

- 다양한 측면으로 데이터를 탐색하면서 인사이트를 얻는 것이다.

2. 목적

- maximize insight in to a data set

- uncover underlying structure

- extract important variables

- detect outliers and anomaloes

- test underlying assumptions

- develop parsimonious models

- determine optimal factor settings

1.1.1 What is EDA? NIST, https://www.itl.nist.gov/div898/handbook/eda/section1/eda11.htm

가장 적합한 듯하여 인용한다.

3-1. 결측치 탐색

- isna() or isnull() : 결측치의 존재여부 확인

- isna().any(), isnull.any() : 각 컬럼에 하나 이상의 결측치 여부 확인하기

- isna().sum(), isnull.sum()  : 각 컬럼에 있는 결측치 수 계산하기

- 데이터는 서울 상가 5000개 데이터이며, df_shop에 할당해두었다.

- 해당 데이터는 위와 같이 생겼다.

- 먼저 결측치를 확인하면 다음과 같다.

3-2. 결측치 처리

- dropna() : 결측치가 있는 행 또는 열 삭제하기

- fillna() : 결측치를 특정 값으로 대체하기

 

B. 마무리

EDA 및 결측치에 대해 학습하였다. 자주 사용하게 될 것 같으니 확실히 익혀두는 것이 좋을 것 같다.

A. 금일 학습 내용

1. pandas

- Python에서 데이터를 조작하고 쉽게 분석할 수 있게 도와주는 라이브러리

- 주요 특징

  대용량 데이터 처리가 가능

  : 데이터를 메모리에 로드하고, 다양한 연산을 빠른 처리가 가능하며 대용량 데이터를 처리하는데 최적화되어 있다.

  데이터 조작 기능

  : 데이터 정렬, 필터링, 집계, 결측값 처리 등 데이터를 쉽게 가공할 수 있다.

  데이터 시각화 기능 제공

  데이터를 구조화하여 분석 가능

  : DataFrame이라는 자료형을 제공하여 데이터를 표형태로 나타내어 분석이 가능하다.

 

2. pandas 구조

 - DataFrame : 표 형태

   index : 각 아이템을 특정할 수 있는 고유의 값

   columns: 하나의 속성을 가진 데이터 집합

- Series : 하나의 속성을 가진 데이터 집합

3. 사용방법

pip install pandas # pandas 설치
import pandas as pd #pandas 불러오기

- 해당 가상공간에 pandas 라이브러리를 설치하고, import pandas 를 이용하여 불러온다.

- as 는 Alias(별칭)로 pandas의 경우 pd 라고 지칭하는 것이 일반적인 관례이다. 

df=pd.read_csv("tips_data.csv") #데이터 불러오기

- 해당 방식처럼 기존 데이터를 불러올 수 있다.

# 사용자가 직접 인덱스를 설정한 데이터프레임 생성
df = pd.DataFrame(
    {   'A': [1, 2, 3], 
        'B': ['a', 'b', 'c']
        }, 
        index=['idx1', 'idx2', 'idx3'])

- 혹은 사용자가 직접 DataFrame을 만들어 생성할 수도 있다.

- 이 외의 내용은 아래 pandas 안내 홈페이지를 살펴보면 된다. 정의가 잘 되어 있어 처음 함수를 사용할 때 사용하면 100% 함수활용이 가능할 것이다.

pandas documentation — pandas 2.2.2 documentation (pydata.org)

 

pandas documentation — pandas 2.2.2 documentation

API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

pandas.pydata.org

 

B. 마무리

처음 pandas을 접했을 때 새로운 언어인 줄 알았다. 하지만 하나의 라이브러리였고, 결국에는 파이썬이라는 것을 알게 되었다. pandas는 pandas만의 문법이 있을 뿐이다. 그러니 너무 어렵게만 생각하지 말자.

 

 

A. 금일 학습 내용

- 컴프리핸선 (Comprehension) 

      사전적 정의: 명사_ 이해력

        * Comprehensive : 형용사_ 포괄적인, 종합적인

- 자료형에 사용되며, 조건문 혹은 반복문 등을 이용하여 작성한다

- 자료형: List, Set, Dict

- 한 줄 코드를 작성할 때 많이 사용하는 것으로 보인다.

[실행문 for i in range(1,n) 조건문]

- 대략 위와 같은 형태로, 어떤 값을 출력할 것인가에 대해 내부 함수가 변한다.

 

B. 리스트 컴프리핸선 작성

# 기존 방식
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for number in numbers:
    squared_numbers.append(number ** 2)

print(squared_numbers)  # [1, 4, 9, 16, 25]

- for 문을 활용하여 squared_numbers 리스트에 numbers 값에 제곱한 값을 넣는 코드이다.

 

◆ 파이썬 컴프리핸선 사용

# 리스트 컴프리핸션 사용
numbers = [1, 2, 3, 4, 5]
squared_numbers = [number ** 2 for number in numbers]

print(squared_numbers)  # [1, 4, 9, 16, 25]

- number의 제곱을 구하고자 한다.

- for문을 사용하여 새로운 squared_numbers에 할당하고자 한다.

 

◇ 리스트 컴프리핸선 이해하기

- 리스트의 경우, [ ] (대괄호) 를 이용한다.

- 코드를 그대로 해석하자면 아래와 같다.

squared_numbers 리스트에 number^2 한 값을 넣어. for number in numbers 로 number 변수 할당해.

 

C. 딕셔너리 컴프리핸선 사용

- 리스트와 같은 결과를 내고자 한다.

# 기존 방식
numbers = [1, 2, 3, 4, 5]
squared_dict = {}
for number in numbers:
    squared_dict[number] = number ** 2

print(squared_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

 

◆ 파이썬 컴프리핸선 사용

# 딕셔너리 컴프리핸션 사용
numbers = [1, 2, 3, 4, 5]
squared_dict = {number: number ** 2 for number in numbers}

print(squared_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

 

◇ 리스트 컴프리핸선 이해하기

- 딕셔너리의 경우 { } (중괄호)를 사용한다.

- key 값과 value값을 지정하여야 한다.

 

D. for 조건문 외 사용

# 기존 방식
numbers = [1, 2, 3, 4, 5]
even_list = [ ]
for number in numbers:
    if number%2 ==0:
        even_list.append(number)

print(even_list)  # [2,4]

- numbers 리스트에서 짝수를 구해야 한다.

 

◆ 파이썬 컴프리핸선 사용

numbers = [1, 2, 3, 4, 5]
even_list = [number for number in numbers if number%2==0]
print(even_list)  # [2,4]

- 위에서 다룬 것과 동일하게 해석하면 된다.

- 다른 점은 for문 뒤에 if 문이 붙었다는 것이다.

- 해석하면 아래와 같다.

even_list 리스트에 number을 넣어.
for number in numbers 로 할당 받은 number가 2로 나누었을 때 나머지가 0일 때만 말야.

 

E. 컴프리핸선 사용 시 장단점

- 장점: 코드가 간결고 자료형을 만드는 과정이 한 눈에 들어온다, 실행속도가 더 빨라질 수 있다.

- 단점: 코드의 가독성이 낮아질 수 있다.

 

→ 적절히 사용하면 좋을 것 같다

A. 주제

데이터 분석가가 되어보니 중요한 것, freak analyst,2023.01.13

데이터 분석가가 되어보니 중요한 것들 | 요즘IT (wishket.com)

 

B. 요약

데이터 분석가는 조직이 하는 일과 결과에 대하여 구성원들이 파악하여 지표를 기반으로 성공확률이 높은 의사결정을 할 수 있도록 비즈니스에 필요한 주제의 분석하는 사람이다.

 

C. 주요포인트

데이터 분석가: 데이터를 기반으로 성공확률이 높은 의사결정을 하도록 돕는 사람

 

1. 데이터 기반

- 데이터를 쉽게 확인할 수 있고, 주요 지표의 진행 상황을 알 수 있도록 기반이 만들어져야 한다.

- BI 툴 도입: 대시보드를 만들어 지표들의 정보를 읽기 수월해져야한다.

- SQL 교육을 함으로써 비데이터 직군이 데이터를 이해하고 깊이 있는 분석이 가능하다.

- 데이터마트를 만들어 목적에 따라 가공한 데이터들을 쉽게 찾을 수 있도록 해야한다.

- 모든 구성원이 현재 상황을 파악하고 공유 가능하다는 장점이 있다.

 

2. 성공할 확률이 높은 의사결정

- 상황을 정확하게 해석하기 위하여 회사의 정보를 축적하고, 합리적인 형태로 구조화가 필요하다.

- 목표 설정을 통해 구성원들의 몰입을 이끌어내었다.

- 성과측정을 통해 조직에서 의도적으로 만든 변화로 인해 결과가 어떻게 바뀌었는가 실험이 가능하였다.

 

3. 지속성

- 비즈니스 사이클에 맞게 분석해야한다.

- 분석 주제가 현재 회사가 집중하는 것과 같아야한다.

- 분석 주제의 결과물이 비즈니스 사이클에서 필요한 적절한 것이어야 한다.

 

결론: 데이터분석가가 본 데이터 분석가는 조직의 의사결정의 퀄리티를 높이는 사람이다.

 

D. 용어 정리

1. 데이터 마트: 조직의 사업부와 관련된 정보를 포함하는 데이터 스토리지 시스템

2. 데이터 스토리지

- 세부 데이터와 디지털 정보를 실제로 수집하고 보관하는 장소

- 빅데이터와 데이터 관리의 핵심 구성 요소

- 종류: 소프트웨어 정의 스토리지, 클라우드 스토리지, 네트워크 연결 스토리지, 오브젝트 스토리지 등

3. 도메인 지식: 회사가 속한 산업, 상품 혹은 서비스에 대한 지식

A. 어떤 문제가 있었는지

- 자연수를 받아 역순으로 출력하는 것이 어려웠다.

B. 내가 시도해본 것

- 입력받은 자연수를 각각 문자열로 바꾸고 해당 값을 재배열하여 숫자형으로 출력하고자한다.


C. 어떻게 해결했는지

Q1. 자연수 n을 뒤집어 각 자리 숫자를 원소를 가지는 배열 형태로 리턴하라

def solution(n):
    answer = [int(i) for i in (str(n))][::-1]
    return answer

- 코드 설명

1. 자연수 n 을 str( ) 함수를 사용해 문자열로 데이터 타입을 변환한다.

2. for 문을 통해 해당 문자열을 하나씩 출력한다.

3. int(i) 실행문에 의해 문자열i 가 정수 i 로 변환되어 리스트에 저장된다.

4. 리스트 인덱싱을 사용하여 answer 리스트를 역순으로 배열한다.

 

Q2. 정수 n을 매개변수로 입력받아  n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴하라

def solution(n):
    number = []
    for i in str(n):
        number.append(int(i))
        number.sort(reverse = True)
    answer = ''
    for j in number:
        answer += str(j)
    return int(answer)

- 코드 설명

1. 자연수 n 을 str( ) 함수를 사용해 문자열로 데이터 타입을 변환한다.

2. for 문을 통해 해당 문자열을 하나씩 출력한다.

3. number 리스트에 정수형 i 로 반환하여 하나씩 저장한다.

4. 반복문이 종료되면 number 리스트를 역순으로 재배열한다.

5. answer 빈 문자열을 생성한다.

6. number 리스트에 있는 숫자형 데이터를 반복해서 answer에  문자열 타입으로 저장한다.

7. 문자열의 경우, + 사용하면 문자를 연결한다.

8. 완성된 문자열을 int () 함수를 사용하여 정수로 변환하여 출력한다.


D. 무엇을 새롭게 알았는지

[실행문 for i in range(1,n) 조건문]

- List 내 for문 사용하는 하는 방법을 알았다.

- 문자열과 숫자형 간의 변환 방식에 대하여 생각해볼 수 있었다.

+ Recent posts