Data/파이썬 데이터 처리

[Doit!] 3. 데이터 분석 기초 - 데이터 파악

안정민 2023. 5. 10. 13:38

1. 데이터 파악하기

-데이터가 주어졌을 때 가장 먼저 하는 일은 데이터의 전반적인 구조를 파악하는 것

-어떤 변수들이 있는지, 몇 행으로 구성되는지 구조를 살펴보면서 데이터의 특징이 어떠한지 감을 잡음

-이 과정에서 분석 방향의 힌트를 얻게 된다

-데이터를 파악할 때에는 기본적으로 다음 다섯 가지 명령어 사용

함수 기능
head() 앞부분 출력
tail() 뒷부분 출력
shape 행 개수, 열 개수 출력
info() 변수 속성 출력
describe() 요약 통계량 출력

- <head(): 데이터 앞 부분 확인하기>

-head는 데이터의 앞에서부터 다섯번 째 행까지 출력하는 기능을 수행

-이를 활용하여 데이터의 앞 부분 일부를 출력하면 데이터의 형태를 쉽게 확인할 수 있음

-head()를 이용하려면 데이터 프레임 이름 뒤에 점을 찍은 다음 head()를 추가하면 된다, 괄호 안에 숫자를 입력하게 된다면 입력한 숫자에 해당하는 행까지 데이터를 출력한다

import pandas as pd

df_exam=pd.read_csv('exam.csv')
print(df_exam.head(10))

-<tail(): 데이터의 뒷부분 확인하기>

-위 함수는 데이터의 뒷부분을 출력하는 기능을 하며 head()와 반대로 뒤에서부터 다섯번 째 행까지 출력, 괄호 안에 숫자를 입력한다면 입력한 숫자에 해당하는 행까지 데이터를 출력한다

import pandas as pd

df_exam=pd.read_csv('exam.csv')
print(df_exam.tail(10))

-<shape: 데이터가 몇 행, 몇 열로 구성되는지 알아보기>

-shape는 데이터 프레임의 크기를 알아볼 때 사용

-데이터 프레임에 점을 찍고 shape 키워드를 추가하면 데이터 프레임의 행, 열 개수를 출력한다

-좌표의 형식으로 출력된 두 개의 숫자 중 앞의 숫자는 행, 뒤의 숫자는 열을 나타낸다

-shape는 함수가 아니라 데이터 프레임이 가지고 있는 속성인 어트리뷰트(attribute)이다, 어트리뷰트를 출력할 때에는 명령어 뒤에 괄호를 입력하지 않으니 주의해야 함

import pandas as pd

df_exam=pd.read_csv('exam.csv')
print(df_exam.shape) //(20,5) 출력, 20개의 행과 5개의 열을 가진 데이터 프레임이라는 의미

 

-<info(): 변수 속성 파악하기>

-info()는 데이터에 들어있는 변수들의 속성을 보여줌, 모든 변수의 속성을 한 눈에 파악하고 싶을 때 info()를 사용한다

import pandas as pd

df_exam=pd.read_csv('exam.csv')
print(df_exam.info())

-① 첫 번째 행의 pandas.core.frame.DataFrame을 보면 df_exam이 pandas로 만든 데이터 프레임이라는 것을 알 수 있다

-② 두 번쨰 행의 20 entries, 0 to 19 를 보면, df_exam이 20행으로 되어있고, 행 번호가 0부터 19까지임을 알 수 있다

-③ 세 번째 행의 total 5 column을 보면 df_exam이 변수 5개로 구성된다는 것을 알 수 있다

-④ 여섯 번째 행부터 데이터 프레임에 들어있는 변수들의 속성이 표시된다. 각 행에 변수 순서(#), 이름, (Column), 변수에 들어있는 값의 개수(Non-Null Count), 속성(Dtype)을 보여준다. 

 

-<describe(): 요약 통계량 구하기>

- describe()는 '평균' 과 같이 변수의 값을 요약한 요약 통계량을 구하는 함수, 요약 통계량을 보면 변수의 특징을 파악하는데에 도움이 된다

import pandas as pd

df_exam=pd.read_csv('exam.csv')
print(df_exam.describe())

출력값 통계량 설명
count 빈도(frequency) 값의 개수
mean 평균 모든 값을 더해 값의 개수로 나눈 값
std 표준편차(standard deviation) 변수의 값들이 평균에서 떨어진 정도를 나타낸 값
min 최소값(minimum) 가장 작은 값
25% 1사분위수(1st quantile) 하위 25% 지점에 위치한 값
50% 중앙값(median) 하위 50% 지점에 위치한 값
75% 3사분위수(3rd quantile) 하위 75% 지점에 위치한 값
max 최대값(maximum) 가장 큰 값

 

2. 함수와 메서드 차이점

-1) 내장함수: 내장함수는 가장 기본적인 함수 형태로, 함수 이름과 괄호를 입력하여 사용한다

-파이썬에 내장이 되어있는 함수이기 때문에 별도로 패키지를 설치하거나 불러오지 않고 사용이 가능하다

sum(var)
max(var)

-2) 패키지 함수: 패키지 함수는 패키지 이름을 먼저 입력한 다음 점을 찍고 (도트 연산자를 이용하여) 함수 이름과 괄호를 입력하여 사용하는 함수이다

-패키지 함수는 패키지를 로드해야 사용이 가능하다

import pandas as pd
pd.read_csv('exam.csv')
pd.DataFrame({'x':[1,2,3]})

-3) 메서드) 메서드는 '변수가 지니고 있는 함수'이다

-변수명을 입력한 다음, 점을 찍고 메서드 이름과 괄호를 입력하여 사용한다

df.head()
df.info()

- 메서드는 모든 변수에서 사용할 수 있는 것이 아니라, 변수의 자료구조에 따라 사용할 수 있는 메서드가 다르다

-예를 들어 head()는 데이터 프레임에 들어있는 메서드, 따라서 데이터 프레임 자료구조를 가진 변수 df에는 사용이 가능하지만 리스트 자료구조 var에 적용하게 된다면 에러가 발생한다.

-변수의 자료구조는 type() 함수를 이용하면 알 수 있음

type(var) //list 출력
typr(df)  //pandas.core.frame.DataFrame 출력

 

3. 어트리뷰트 (Attribute)

- 어트리뷰트는 '변수가 지니고 있는 값'

- 어트리뷰트를 출력하려면 변수명 뒤에 점을 찍고 어트리뷰트 이름을 입력하면 된다.

-어트리뷰트는 메서드와 마찬가지로 변수가 지니고 있으므로 변수명 뒤에 점을 찍고 입력한다

-반면 메서드와 달리 괄호를 입력하지 않음, 따라서 괄호가 있으면 메소드, 없으면 어트리뷰트라고 생각해도 무관

-어트리뷰트도 메소드와 마찬가지로 변수의 자료구조에 따라 적용 범위가 결정된다

 

++메소드는 불 쏘기, 칼 휘두르기 등과 같이 캐릭터의 기술로 변수를 이용해 할 수 있는 여러 명령들임

++어트리뷰트는 체력, 공격력처럼 캐릭터의 능력치와 비슷하게 변수의 특징을 알고자 할 때 출력하는 것

 

 

4. 변수명 바꾸기

-데이터의 전반적인 특성을 파악하고 나면 본격적으로 분석하기 전에 변수명을 수정하는 작업을 해야한다

-변수명을 이해하기 쉬운 단어로 바꾸면 데이터를 수월하게 다룰 수 있기 때문

-변수명은 pandas의 df.rename() 함수로 변경이 가능하다

-데이터를 변형하는 작업을 할 때는 원본을 직접 사용하는 것보다 복사본을 만들어서 사용하는 것이 좋음, 그래야 작업하다가 오류가 발생하더라도 원 상태로 되돌릴 수 있고, 데이터를 비교하면서 변형되는 과정을 검토할 수 있다. 복사본을 만들 때는 df.copy() 함수를 사용한다

import pandas as pd

df_raw=pd.DataFrame({'var1':[1,2,1],
                     'var2':[2,3,2]})

print(df_raw)

df_new=df_raw.copy() #복사본 만들기

-변수명을 바꿀 때는 df_new.rename() 함수에 coulmn 파라미터를 추가한 다음 {'기존 변수명' : '새 변수명'} 을 입력하면 됨, 출력 결과를 df.new에 할당하면 변수명이 바뀐 상태로 저장이 된다.

import pandas as pd

df_raw=pd.DataFrame({'var1':[1,2,1],
                     'var2':[2,3,2]})

print(df_raw)

df_new=df_raw.copy() #복사본 만들기
df_new=df_new.rename(columns={'var2':'v2'})
print(df_new)

 

5. 파생변수 만들기

-데이터에 들어있는 변수만 이용해 분석을 할 수도 있지만, 변수를 조합하거나 함수를 이용해 새 변수를 만들어 분석을 할 수도 있음, 예를 들어 여러 과목의 시험 점수를 조합해 전과목 평균 변수를 만들어 분석 가능

-기존 변수를 변형하여 만든 변수를 파생변수(derived variable)이라고 한다

-데이터 프레임명에 []을 붙여 새로 만들 변수 명을 입력하고 = 연산자로 계산 공식을 할당하는 형태로 코드를 작성하면 된다

-새로 만든 변수는 데이터 프레임의 오른쪽 끝에 나열된다

import pandas as pd

df=pd.DataFrame({'var1':[4,3,8],
                 'var2':[2,6,1]})
print(df)
print()

df['var_sum']=df['var1']+df['var2']
print(df)
print()

df['var_mean']=(df['var1']+df['var2'])/2
print(df)