국비교육 빅데이터 분석과정 수업일지

#5 판다스 배우기, 데이터분석 입문_day5😣

km1n 2021. 12. 17. 18:02
🧑‍💻
12/17 슬기로운 코딩생활

나 정도의 생초짜는 거의 없는 거 같네.. 완주를 목표로 하자

 

 

🖊️
공부기록

 

1. Pandas 란?

import pandas as pd import numpy as np

 

2. Pandas 자료구조

2-1. Series

# Series 정의하기 obj = pd.Series([4, 7, -5, 3]) obj
# Series의 값만 확인하기 obj.values
# Series의 인덱스만 확인하기 obj.index
# Series의 자료형 확인하기 obj.dtypes
# python의 dictionary 자료형을 Series data로 만들 수 있다. # dictionary의 key가 Series의 index가 된다 sdata = {'Kim': 35000, 'Beomwoo': 67000, 'Joan': 12000, 'Choi': 4000} obj3 = pd.Series(sdata)
# index 변경 obj3.index = ['A', 'B', 'C', 'D'] obj3

 

2-2. Data Frame

# Data Frame 정의하기 # 이전에 DataFrame에 들어갈 데이터를 정의해주어야 하는데, # 이는 python의 dictionary 또는 numpy의 array로 정의할 수 있다. data = {'name': ['Beomwoo', 'Beomwoo', 'Beomwoo', 'Kim', 'Park'],         'year': [2013, 2014, 2015, 2016, 2015],         'points': [1.5, 1.7, 3.6, 2.4, 2.9]} df = pd.DataFrame(data) df
# 행 방향의 indexdf.index
# 열 방향의 indexdf.columns
# 값 얻기df.values

— 28번까지 정리

 
https://doorbw.tistory.com/172#2-1.-Series

 


판다스 연습 튜토리얼

 
https://www.datamanim.com/dataset/99_pandas/pandasMain.html

  • 데이터를 로드하라. 데이터는 \t을 기준으로 구분되어있다.(*컬럼이 한글이기에 적절한 처리해줘야한다면 예시- euc-kr)df = pd.read_csv(DataUrl,sep='\t')
  • 데이터의 상위 5개 행을 출력하라 → df.head(5)
  • 데이터의 행과 열의 갯수를 파악하라→print(df.shape)
  • 전체 컬럼을 출력하라→df.columns
  • aa 컬럼의 값들을 출력하라→ df['aa']
  • df의 짝수번째 컬럼만을 포함하는 데이터프레임을 출력하라→df.iloc[:,::2]
  • df의 item_name 컬럼 값중 Chips 포함하는 경우의 데이터를 출력하라 → df.loc[df.item_name.str.contains('Chips')
  • q 컬럼 값이 a인 데이터를 추출하여 첫 5행을 출력하라 → df.loc[df['q']==a].head()
  • q컬럼 값이 a인 데이터를 추출하여 index를 0부터 정렬하고 첫 5행을 출력하라 → df.loc[df['q']==a].head().reset_index(drop=True)
  • new_price 컬럼이 5이하의 값을 가지는 데이터프레임을 추출하고, 전체 갯수를 구하여라 → len(df.loc[df.new_price <=5])
  • 수치형 변수를 가진 컬럼을 출력 → df.select_dtypes(exclude=object).columns
  • 범주형 변수를 가진 컬럼을 출력 → df.select_dtypes(include=object).columns
  • quantity , item_price 두개의 컬럼으로 구성된 새로운 데이터 프레임을 정의하라 → df[['quantity','item_price']]
  • df의 new_price 컬럼 값에 따라 내림차순으로 정리 → df.sort_values('new_price',ascending=False)
  • n번째 컬럼의 데이터 타입을 확인하라 → df.iloc[:,n].dtype
  • 데이터셋의 인덱스 구성은 어떤가 → df.index
  • a번째 컬럼의 b번째 값은 무엇인가? → df.iloc[b-1,a-1]

**index를 초기화 → reset_index(drop=True)

  • item_name명이 Chicken Salad Bowl 인 데이터 프레임을 추출하라고 index 값을 초기화 하여라 → df.loc[df.item_name =='Chicken Salad Bowl'].reset_index(drop=True)
  • new_price값이 9 이하이고 item_name 값이 Chicken Salad Bowl 인 데이터 프레임을 추출하라 → df.loc[(df.item_name =='Chicken Salad Bowl') & (df.new_price <= 9)]
  • 컬럼의 결측치 숫자를 파악하라 → df.isnull().sum()
  • 컬럼의 데이터수, 데이터타입을 한번에 확인하라 → df.info()
  • 수치형 변수의 분포(사분위, 평균, 표준편차, 최대 , 최소)를 확인하라 → df.describe()
  • aa컬럼의 유일값 갯수를 출력하라 → df.aa.nunique()
  • aa 유일값을 모두 출력하라 →df.aa.unique()
  • df의 item_name 컬럼 값이 Steak Salad 또는 Bowl 인 데이터를 인덱싱하라 → df.loc[(df.item_name =='Steak Salad') | (df.item_name =='Bowl')]
  • item_name를 기준으로 중복행이 있으면 제거하되 마지막 케이스만 남겨라 → Ans.drop_duplicates('item_name',keep='last')
  • df의 데이터 중 new_price값이 new_price값의 평균값 이상을 가지는 데이터들을 인덱싱하라 → df.loc[df.new_price >= df.new_price.mean()]
  • df의 데이터 중 item_name의 값이 Izze 데이터를 Fizzy Lizzy로 수정하라 → df.loc[df.item_name =='Izze','item_name'] = 'Fizzy Lizzy'
  • df의 데이터 중 choice_description 값이 NaN 인 데이터의 갯수를 구하여라→ df.choice_description.isnull().sum()
  • df의 데이터 중 choice_description 값이 NaN 인 데이터를 NoData 값으로 대체하라(loc 이용) → df.loc[df.choice_description.isnull(),'choice_description'] ='NoData'
  • df의 데이터 중 choice_description 값에 Black이 들어가는 경우를 인덱싱하라→df[df.choice_description.str.contains('Black')]
  • df의 데이터 중 choice_description 값에 Vegetables 들어가지 않는 경우의 갯수를 출력하라 →len(df.loc[~df.choice_description.str.contains('Vegetables')])
  • df의 데이터 중 item_name 값이 N으로 시작하는 데이터를 모두 추출하라 →df[df.item_name.str.startswith('N')]
  • df의 데이터 중 item_name 값의 단어갯수가 15개 이상인 데이터를 인덱싱하라→ df[df.item_name.str.len() >=15]