딥상어동의 딥한 생각

[Pandas] 이것만은 알고가자 - 2.Basic Function

by 딥상어동의 딥한생각

https://gibles-deepmind.tistory.com/36?category=904126 

 

[캐글따라하기] HR 데이터분석 (1) zero-draft

www.kaggle.com/arashnic/hr-analytics-job-change-of-data-scientists HR Analytics: Job Change of Data Scientists Predict who will move to a new job www.kaggle.com 해당 데이터를 참고하였습니다. gibles..

gibles-deepmind.tistory.com

 

1. 데이터 생성

 

데이터를 불러오는 방법은 아래 글을 참조

https://gibles-deepmind.tistory.com/64?category=892466 

 

[Pandas] 이것만은 알고가자 - 0.파일 불러오기

1. 예시 import pandas as pd data = pd.read_csv("C:/Users/blarblar/aug_train.csv") #read_csv #pd.read_csv 2. CSV. 파일에 대한 이해 Comma Seperated Values 이름, 직업, 나이 철수, 개발자, 30 미희, 분석..

gibles-deepmind.tistory.com

 

데이터 생성은 크게 두 가지 방법을 통해서 할 수 있다.

 

#1. 빈데이터프레임에 변수를 하나씩 할당
data1 = pd.DataFrame()
data1['X'] = [1, 2, 3, 4, 5]
data1['Y'] = [2, 3, 4, 5, 6]
data1['Z'] = ['a', 'b', 'c', 'd', 'e']

data1.head()

위와 같이 빈데이터프레임에 변수를 하나씩 할당하는 방법이 있고

 

#2. 딕셔너리형태로 변수 할당
data2 = pd.DataFrame(
    {
        "X" : [1, 2, 3, 4, 5],
        "Y" : [2, 3, 4, 5, 6],
        "Z" : ['a', 'b', 'c', 'd', 'e']
    }
    )

data2.head()

 

위와 같이 딕셔너리 형태로 변수를 할당하는 방법이 있다.

 

둘다, 결과는 같다.

 

2. 데이터 생김새 확인하기

 

1. 데이터의 대략적인 형태 확인하기

data.head(n=5)
data.tail(n=5)

head는 첫 번째 다섯 행, tail은 마지막 다섯 행을 불러온다. n파라미터를 조절하여 출력할 행 수를 늘릴 수 있다.

 

2. 몇행 몇열인지 확인하기

data.shape

shape이라는 메서드를 통해 몇행 몇열인지 확인할 수 있다.

 

3. 컬럼 이름 확인하기

data.columns

 

위와 같이 컬럼 이름들을 출력할 수도 있다. 나의 경우, 반복문에서 요긴하게 사용한다.

 

3. 데이터 요약 정보 확인하기

 

1. 데이터 타입 정보 확인하기

data.dtypes

약간, 응용하여 각 타입별로 몇개의 열이 있는지 집계할 수도 있다.

 

data4 = pd.DataFrame()
data4['colname'] = data.dtypes.index
data4['type'] = data.dtypes.values
data4.groupby('type').count()

 

2. 데이터 요약 정보 확인하기 (feat.분위수)

data.describe()

신기한게, 자동으로 숫자형 자료(int, float)의 컬럼만 선택해 준다. 

 

data.describe(include='object')

그런데, 여기서 object타입만 포함하도록 파라미터를 설정해주면, 범주형 변수들에 대해서 카운트랑 unique 값 개수 가장 많은 값 개수 그리고 빈도를 출력해준다.

 

3. null값 개수 확인

data.isnull().sum()

널값 개수를 확인할 수도 있다. 

 

NULL에는 값이 없다와 / unknown(모른다) 두가지 의미가 있다.

 

이를 종합하면

data.info()

info함수에서 확인할 수 있다.

 

4. 집계 함수 활용하기

print(data['training_hours'].min())
print(data['training_hours'].median())
print(data['training_hours'].mean())
print(data['training_hours'].max())
print(data['training_hours'].sum())
print(data['training_hours'].count())
print(data['training_hours'].nunique())

위와같이 집계 함수를 응용할 수도 있다. 

 

데이터 선택에 관련된 내용은 해당 글 참조

https://gibles-deepmind.tistory.com/65?category=892466 

 

[Pandas] 이것만은 알고가자 - 1.Selecting(iloc, loc)

1. 예시 & 데이터 프레임 https://gibles-deepmind.tistory.com/36?category=904126 [캐글따라하기] HR 데이터분석 (1) zero-draft www.kaggle.com/arashnic/hr-analytics-job-change-of-data-scientists HR Analy..

gibles-deepmind.tistory.com

 

5. 특정 타입의 데이터만 선택

data.select_dtypes(include=['int64', 'float64']).head()

 

위와 같이, select_dtypes를 이용해서 특정 자료형만 선택할 수 있다. 

 

5. 데이터 삭제 함수

 

불필요한 데이터를 삭제하는 경우도 있다.

data_drop = data.copy()
data_drop.drop([0, 1, 2], axis=0).head()

여기서 axis=0는 행을 삭제, axis=1은 열을 삭제한다. 그래서, [0, 1, 2]행이 삭제되고 3부터 출력된 것을 알 수 있다.

 

그런데, 한 가지 헷갈리는 점은 pandas에서는 axis = 1을 했을 때, 행 연산을 한다는 점이다 .다음의 예제를 살펴보자. 

 

data_drop[['training_hours', 'city_development_index']].sum(axis=1).head()

위와 같이 axis=1을 사용하면, 컬럼과 컬럼 즉, 행 합산이 계산된다. 근데, drop에서는 1을 사용했을 때 열이 제거된다.

 

https://blog.naver.com/tjdrud1323/221452985303

 

[파이썬] - apply()와 drop() 함수로 pandas의 axis 개념 이해하기

Axis in Pandas pandas는 데이터 프레임을 다룰 수 있는 라이브러리이고 axis는 데이터를 처리하는 방향(...

blog.naver.com

일단, 필자 같은 경우 열을 한 번에 지우는 것이 아니라, 열 안에 포함되어 있는 모든 행을 지운다는 의미로 이해했다. 자세한 내용은 블로그 참조.

 

data_drop = data.copy()
data_drop.drop(['enrollee_id', 'gender'], axis=1).head()

위와 같이 axis = 1로 지정하여 열을 삭제할 수도 있다. 

 

그런데, 여기서 drop한 값을 따로 데이터 프레임으로 지정하고 싶을 수도 있다.

data_drop.drop(['enrollee_id', 'gender'], axis=1, inplace=True)
data_drop_drop = data_drop.drop(['enrollee_id', 'gender'], axis=1)

위와 같이 두 가지 방법이 있는데, 나의 경우 inplace = True보다는 아래 방법을 선호한다. 왜냐하면, inplace = True를 사용하면 원본 데이터 프레임이 재선언 되기 때문이다. 때때로, 이는 상당한 귀찮음을 초래할 수 있다. 그래서, 나는 되도록이면 원본 데이터 프레임은 남겨 두고 재선언을 하는 편이다.

 

6. 컬럼 이름 변경하기

data_rename = data.rename(columns = {'city' : 'town'})
data_rename.head()

 

위와 같이 컬럼 이름을 변경할 수도 있다.

 

7. 데이터 프레임 저장하기

data.to_csv("경로", index=False)

위와 같은 방식으로 데이터 프레임을 저장할 수 있는데, 나는 보통 index=False는 항상 설정해준다. 왜냐하면, 이렇게 하지 않을 경우 행번호가 그대로 새로운 열로 생성되기 때문이다.

 

이외에, encoding 파라미터를 추가하기도 한다. 

블로그의 정보

딥상어동의 딥한생각

딥상어동의 딥한생각

활동하기