import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

%matplotlib inline
df = pd.read_csv('../data/pokemon.csv')

기본적인 라이브러리를 import하고 csv파일을 pd.read_csv()로 읽어와 df라는 변수에 저장했다.

데이터 정보

generation_id column에 관한 차트를 그리기 위해 categorical data인지 확인해본다.

categorical data

807행 중 7개의 카테고리로 나눠져있다.

base_color = sb.color_palette()[2]
my_order = df['generation_id'].value_counts().index

countplot

sb.color_palette()를 통해 색을 지정하고 value_counts().index로 내림차순 인덱스를 얻어서 x에 원하는 column을 대입했다.

plot

 

데이터 합치기

데이터 분석을 하기 위해 여러 곳에서 데이터를 수집해 합쳐야 한다.

데이터 예시

pd.concat()함수는 데이터프레임을 말그대로 물리적으로 이어 붙여주는 함수다.

concat

pd.merge()함수는 두 데이터프레임을 각 데이터에 존재하는 고유값(key)을 기준으로 병합할때 사용한다.
pd.merge(df_left, df_right, how='inner', on=None)이 default이다.

'Employee ID' 를 연결고리로 합친다.

merge

pd.join() 함수를이용한 데이터프레임 합치기다. pd.join()은 인덱스를 기준으로 왼쪽으로 순차적으로 연결되는 방식이다. 어떤 인덱스를 기준으로 하느냐에 따라 배열이 달라진다.

join

 

특정 column을 기준으로 내림차순,오름차순으로 정렬해주는 함수인 sort_values()에 대해 알아보겠다

다음은 예제에 쓰일 데이터이다.

data

첫 번째 parameter에는 기준을 써주고 ascending이 True면 오름차순 False면 내림차순이다.

sort

여러개의 정렬 기준을 정하고 싶으면 배열을 쓰면 된다.

sort

데이터 분석하다보면 내가 정의한 함수에 따라 특정 column의 값들이 일괄적으로 변경되도록 원할 때가 있다.

예제에 쓸 데이터는 다음과 같다.

data

만약 Employee Name column의 글자수가 궁금하다면 다음과 같이 apply와 len 함수를 사용할 수 있다.

len

시급이 30이상이면 A그룹 그렇지 않으면 B그룹으로 구분한 group column을 만들고 싶다.

apply

apply(적용할 함수이름)을 통해 적용할 수 있다.

데이터 분석을 할때 유일한 값을 찾아보자. 예제로 사용할 데이터는 다음과 같다.

nunique() : 유일한 값의 개수를 반환

unique() : 유일한 값을 반환

value_counts() : 유일한 값과 개수를 반환

 

Loading Data into a Pandas DataFrame

csv 파일 불러오기

pd.read_csv(경로명) 으로 불러오면 된다. 

 

데이터 확인

head 와 tail 메서드를 통해 데이터를 확인한다.

head(self, n=5) , tail(self, n=5) : DataFrame 내의 처음과 마지막 n줄의 데이터를 출력한다.

shape,sum

df.shape는 행과 열의 개수를 튜플로 반환하고, df.isna()는 nan값이 있는지를 반환한다.

df.isna().sum()은 각 열에 비어있는 데이터 개수를 반환한다.

describe,info

descibe()와 info()는 DataFrame의 기본적인 정보를 보여준다.

isna() 는 boolean값을 반환하고 sum()을 통해 True 개수를 알 수 있다.

nan을 다루는 전략의 첫번째는 dropna()를 통해 행을 삭제하는 것이고,

두번째는 fillna()를 이용해 특정 값으로 채우는 것이다

fillna

Accessing Elements in Pandas DataFrames

loc,iloc

pandas에서 Series, DataFrame, Panel 등의 자료구조를 만든 후, 다양한 방법을 통해 데이터를 엑세스할 수 있다.
가장 간단한 방식으로 pandas 자료구조에 대해 인덱싱 혹은 속성(Attribute)을 사용하는 것인데,

예를 들어 위에서 생성한 DataFrame인 df 에 대해 bikes 행을 가져오기 위해 df["bikes"] 를 사용할 수 있다. 

 

loc는 location의 약어로, df.loc[행 인덱싱 값, 열 인덱싱 값] 로 사용한다

​iloc의 integer location의 약어로, df.iloc[행 인덱스, 열 인덱스] 로 사용한다

Pandas 의 장점

  • Allows the use of labels for rows and columns
  • 기본적인 통계데이터 제공
  • NaN values 를 알아서 처리함.
  • 숫자 문자열을 알아서 로드함.
  • 데이터셋들을 merge 할 수 있음.
  • It integrates with NumPy and Matplotlib

Series 

import numpy as np
import pandas as pd 

index = ['eggs', 'apples', 'milk', 'bread']
data = [30, 6, 'Yes', 'No']
groceries = pd.Series(data = data, index = index)
groceries

# eggs       30
# apples      6
# milk      Yes
# bread      No
# dtype: object

 

Accessing - 레이블과 인덱스

groceries[0]
# 30

groceries[['eggs','bread']]
# eggs     30
# bread    No
# dtype: object

groceries['apples':'milk']
# apples      6
# milk      Yes
# dtype: object

groceries[1:3]
# apples      6
# milk      Yes
# dtype: object

Arithmetic Operations on Pandas Series

index = ['apples', 'oranges', 'bananas']
data = [10, 6, 3,]
fruits = pd.Series(data = data, index = index)

fruits
# apples     10
# oranges     6
# bananas     3
# dtype: int64

fruits = fruits + 5
# fruits
# apples     15
# oranges    11
# bananas     8
# dtype: int64

+ Recent posts