[Python] 예제로 익히는 Python 01

Data_Student·2024년 10월 23일
0

Python

목록 보기
1/7

[Python] 예제로 익히는 Python 01

예제로 익히는 파이썬 - 1회차 복습 내용 정리


01. Python 언어적 특성 이해

  • SQL은 통으로 실행
  • Python은 하나씩 실행
  1. 차이점
    1) SQL - 절차지향 언어
    • 장점 : select, from 등의 구문 등 하나의 구문으로 처리되므로, 실제 컴퓨터가 질의를 어떻게 처리하는지 이해할 필요가 없음
    • 단점 : 테이블 생성, 삭제, 복제, 치환은 가능하나 시각화 등 Library 미지원으로 데이터 핸들링 시 한계점 존재 + 트러블슈팅이 오래 걸릴 수 있음
      2) Python - 객체지향 언어
    • 장점 : 한 줄(셀) 단위로 실행되어, 트러블 슈팅이 용이
      다양한 Library가 지원되어 데이터 핸들링을 자유롭게 가능
    • 단점 : 같은 Query 구문을 수행한다고 했을 때, SQL 보다 느리게 출력될 수도 있음
  • 이번 세션에서는 Python을 다양한 Library를 통해 데이터 분석부터 시각화까지 진행 예정

02. Python 에서 Library란?

  1. 알고리즘의 늪
    알고리즘을 회피할 수 있는 방법 중 하나가 Library로,
    라이브러리란 "우리가 자주 쓰는 함수들을 모아놓은 묶음"

  2. Library 호출하기

       # import pandas as pd
       # 해석 : pandas라는 라이브러리(모듈)을 호출하고 그 이름을 pd로 줄여서 부르겠다.
       `
       # from matplotlib.pyplot as plt
       # 해석 : matplotlib의 pyplot 함수만 가져오고 이름은 plt로 줄여서 부르겠다.

03. Pandas 란?

  1. Pandas는 왜 사용해야 할까요?
  • Numpy를 기반으로 개발된 라이브러리로 서로 다른 여러 유형의 데이터를 시리즈와 데이터 프레임이라는 공통의 포맷으로 정리하여 쉽고 빠른 연산 및 분석을 위한 함수를 제공
  1. 데이터 프레임이란?
    통계와 머신러닝 모델에서 가장 기본이 되는 테이블 형태의 데이터 구조
    기본적으로 행과 열로 구성된 이차원 행렬
    Python 및 R에서 사용하는 특정 데이터 포맷

  2. 그 외 주요 Library 소개

    • Pandas - 데이터 분석용
    • Numpy - 데이터 분석용
    • matplotlib - 시각화용
    • Seaborn - 시각화용
    • Scikit-learn - 머신러닝용
    • PyGWalker - 시각화용
    • Selenium - 웹 브라우저를 컨트롤 하는 프레임워크
    • SciPy - 과학, 공학적 수학용

04. Data EDA 하러 출발!

  1. 핵심 코드 요약
      # pandas 라이브러리를 활용한 csv 파일 읽기 
      df = pd.read_csv("xxxx.csv")
    `
      # 테이블 확인하기 
      display(df, df2, df3)
    `
      # 처음 5 줄만 출력하기 
      df2.head()
    `
      # 마지막 5 줄만 출력하기 
      df2.tail()
    `
      # 각 테이블의 행(가로) 길이 파악하기
      len(df)
    `
      # shape: 테이블의 행과 열의 갯수를 반환 
      df.shape
    `
      # dtypes: 테이블 내 컬럼타입(문자형, 숫자형, 배열 등) 확인
      df.dtypes
    `
      # columns: 테이블 내 컬럼 확인
      df.columns
    `
      # values: 테이블 내 각 행들을 배열 형태로 확인
      df.values
    `
      # 테이블 기본 구조 한눈에 확인하기
      df.info()
    `
      # 전체 행 갯수, 평균, 표준편차, 최솟값, 사분위수, 최댓값 확인 
      df2.describe()
    `
      #컬럼별로 결측치(데이터가 없는) 확인하기 
      df.isnull().sum()
    `
      # 특정 컬럼 1개 가져오기
      #방법1: 속성. 사용
      df.Category
    `
      #방법2: [] 연산자 사용
      df['Category']
    `	
      #방법3: iloc 사용
      # : 은 모든 행을 가져오겠다는 의미이며 dataframe 의 인덱스 번호 4번(카테고리)컬럼을 가져오겠다는 희미
      df.iloc[:,4]
    `
      # 특정 컬럼 여러개 가져오기 
      #방법1: [[]] 연산자 사용
      # []를 하나 사용하면 결과값이 series 형태로 반환되어 key error 가발생되며, [[]] 는 dataframe 으로 반환되어 에러가 나지 않습니다. 
      df[['Category','Selling Price']]
    `	
      #방법2: iloc 사용
      # : 은 모든 행을 가져오겠다는 의미이며 dataframe 의 인덱스 번호 4번,7번 컬럼을 가져오겠다는 희미
      df.iloc[:,[4,7]]
    `	
      # 특정 컬럼 버리기
      # axis=0 은 인덱스 기준, 1은 컬럼 기준 삭제를 의미 
      # inplace=True 는 원본을 변경하겠다는 의미, False 의 경우 원본테이블은 변경되지 않음
      df3.drop('Interaction type', axis=1, inplace=True)
    `
      # 조건에 부합하는 데이터 가져오기1
      # 조건에 만족하는 행은 정상출력 ,아닌 행은 NaN 으로 반환 
      df2.where(df2['Age']>50)
    `
      # 조건에 부합하는 데이터 가져오기2
      # true, false의 개념이 아닌 조건에 부합하는 데이터만 슬라이싱하여 가져오고 싶을 때 
      # mask 메서드로 불립니다. 이름은 반드시 mask 일 필요가 없습니다. 
      mask = ((df2['Age']>50) & (df2['Gender']=='Male'))
      df2[mask]
    `
      # 데이터 그루핑- 기준 1개
      df2.groupby('Gender')['Customer ID'].count()
    `
      # 데이터 그루핑- 기준 여러개
      df2.groupby(['Gender','Location'])['Customer ID'].count()
    `
      # 데이터 count 와 nunique(distinct, 중복제거) 차이 
      df2.groupby('Location')['Age'].count()
      df2.groupby('Location')['Age'].nunique()

0개의 댓글