[판다스 인 액션] 1장 판다스 소개


🚩 [1장 판다스 소개] 부분 중 중요하다고 생각한 부분만 정리한 포스팅입니다.

핵심 요약

  • 판다스 : 파이썬 프로그래밍 언어를 기반으로 구축된 데이터 분석용 라이브러리
    • 정렬, 필터링, 정리, 중복 제거, 집계, 피벗 등의 데이터 조작 작업을 위한 도구 모음
  • DataFrame : 판다스의 기본 자료구조로 여러 열이 있는 테이블
  • Series : 레이블이 있는 1차원 배열 -> 단일 데이터 열로 생각하면 됨
  • 정렬 / 하위 집합 추출 / 결과 그룹에 대한 집계 작업 수행

  • 공부한 노트북 링크 : 1장 판다스 소개


1. 데이터셋 불러오기

  • read_csv()
    • csv 파일의 내용을 DataFrame 객체로 가져옴
    • 객체 : 데이터를 저장하는 컨테이너
      pd.read_csv("/content/movies.csv")
      
  • 인덱스
    • 인덱스 레이블은 데이터 행의 식별자 역할
    • 인덱스에 적합한 열이란? 각 행에 대한 기본 식별자 또는 참조 지점으로 사용할 수 있는 값
      movies = pd.read_csv('/content/movies.csv', index_col="Title")
      

      image


2. DataFrame 조작

  • 처음 또는 마지막 행 조회
    movies.head(5)
    
    moveis.tail(5)
    
  • 행과 열 개수 확인
    # 782개 행 & 4개 변수
    movies.shape
    
  • 총 셀 갯수
    movies.size
    
  • 데이터 유형
    # int64 : 정수열 / object : 텍스트열
    movies.dtypes
    

    image

  • 레이블 접근
    • Series의 인덱스 레이블은 4개의 변수임 -> 기존의 행값을 열로 변경하여 표시함
# 인덱스 위치 사용
movies.iloc[499]

# 인덱스 레이블 사용
movies.loc["Forrest Gump"]

image

  • sort_values()
    • 목표 : 영화 제작사와 개봉일을 알파벳 순서대로 나열한 영화
    • by : 정렬할 변수 리스트 기입하기
      movies.sort_values(by = ["Studio", "Year"])
      
  • sort_index()
    • 목표 : 영화 제목을 알파벳 순서대로 보고 싶음
      movies.sort_index().head()
      


3. Series의 값 계산

  • value_counts()
    • 목표 : 가장 많은 수익을 올린 영화가 가장 많은 영화 제작사 찾기
      movies["Studio"].value_counts()
      

      image


4. 하나 이상의 기준으로 열 필터링

  • 한가지 조건 필터링
    • 목표 : 유니버셜 스튜디오에서 제작한 영화만 찾고 싶음
      released_by_universal = (movies["Studio"] == "Universal")
      movies[released_by_universal]
      
    • 목표 : 1975년 이전에 개봉한 영화
      before_1975 = movies["Year"] < 1975
      movies[before_1975]
      
  • 두가지 조건 필터링
    • 목표 : # Universal에서 제작 or 2015에 개봉
      released_by_universal = (movies["Studio"]=="Universal")
      released_in_2015 = (movies["Year"]==2015)
      movies[released_by_universal | released_in_2015] 
      
    • 목표 : 1983년에서 1986년 사이에 개봉한영화
      mid_80s = movies["Year"].between(1983, 1986)
      movies[mid_80s]
      
  • 문자열 필터링
    • 목표 : 영화 제목을 소문자로 바꾸고 제목에 ‘dark’라는 단어가 있는 영화
    • lower() : 소문자로 바꿈
    • contains() : 특정 문자열 추출
      has_dark_in_title = movies.index.str.lower().str.contains("dark")
      movies[has_dark_in_title]
      


5. 데이터 그룹화

  • Gross 열의 값이 숫자가 아닌 텍스트로 저장됨 -> $와 ,를 제거하는 과정이 필요함
    • $와 ,를 모두 빈텍스트로 바꾸기 & 부동 소수점 숫자로 변환
    • replace(현재문자, 바꿀문자) : 텍스트 바꾸기
    • astype(float) : 부동 소수점 숫자로 변환
      movies['Gross'] = (movies['Gross'].str.replace("$", "", regex=False).str.replace(",", "", regex=False).astype(float))
      
  • 목적 : 제작사 당 영화 수
    • count() : group별 갯수 계산
      # movies.groupby("Studio")["Gross"].count().sort_values(ascending=False)
      studios = movies.groupby("Studio")
      studios["Gross"].count().sort_values(ascending=False)
      
  • 목적 : 제작사 당 총 수익
    • sum() : group별 합계 계산
      studios = movies.groupby("Studio")
      studios["Gross"].sum().sort_values(ascending=False)
      
  • 목적 : 제작사 당 평균 수익
    • mean() : group별 평균 계산
      studios["Gross"].mean().sort_values(ascending=False)
      





© 2020.02. by ysjang0926

Powered by theorydb