본문 바로가기
파이썬 독학

[파이썬 독학] 판다스 데이터 프레임 기초 - 데이터 로드, 조건부 필터링, merge, 클리닝, 플랏 그리기

by 데싸루나 2023. 2. 1.

파이썬 판다스 데이터프레임은 데이터 분석에서 쓰이는 가장 기본적인 데이터 구조이다. 2차원 구조로 되어있고 데이터를 저장하고 조작할 수 있다. 이 포스팅에서는 데이터 프레임 사용을 위한 기초를 다양한 예제와 함께 다뤄볼 예정이다.

python pandas data frame
data frame

이터 로드하기

데이터를 코드에서 직접 만들어서 데이터프레임에 넣어주는 방법과 엑셀이나 csv 같이 외부 파일을 로드하여 데이터프레임에 넣는 방법이 있다. 먼저 외부 데이터를 로드하는 방법은 다음 코드와 같은 방법으로 가능하다. 

import pandas as pd

df = pd.read_csv('data.csv')

 

데이터를 코드에서 직접 만들어 데이터 프레임에 로드하는 방식은 다음 코드를 참고하면 된다.

import pandas as pd

data = {'Name': ['John', 'Jane', 'Jim', 'Joan'],
        'Age': [32, 28, 41, 35],
        'City': ['New York', 'London', 'Paris', 'Berlin']}

df = pd.DataFrame(data)

 

 

데이터프레임 구조 이해하기

데이터프레임의 구조와 데이터프레임의 모양 그리고 널값(missing values)을 어떻게 처리하는지에 대해 알아보자. 데이터 프레임의 차원과 모양을 살펴보려면 다음과 같이 shape을 써서 출력해 볼 수 있다. 

print(df.shape)

 이 코드는 몇 개의 row와 column이 있는지 출력해 준다. 

 

데이터프레임에 들어있는 데이터를 출력해보기 위해서는 head()나 tail() 함수를 사용할 수 있다. head()는 첫 번째 row부터 몇 개의 행을 보여주고 tail()은 끝에서부터 샘플로 보여준다. 

print(df.head())
print(df.tail())

 

데이터프레임의 데이터타입과 빈칸 또는 널값 (missing values)이 있는지를 확인하려면 다음의 코드를 사용하면 된다.

print(df.dtypes)
print(df.isna().sum())

 

 

조건부 필터 걸기

엑셀에서 특정 컬럼에 필터를 걸어 조건별로 보듯이 데이터프레임에서도 조건을 걸어 데이터를 필터링할 수 있다. 

print(df[df['Age'] > 30])

그루핑 하기(group by) 

groupby 함수를 사용하여 엑셀에서 피벗 테이블을 사용하듯이 데이터를 뽑아볼 수 있다.

grouped = df.groupby('City')
print(grouped['Age'].mean())

Merge 하기 (두개의 데이터프레임 하나로 합치기)

merge 함수를 사용하여 두 개의 데이터프레임을 하나의 데이터 프레임으로 합칠 수 있다. 

df1 = pd.DataFrame({'Name': ['John', 'Jane', 'Jim', 'Joan'],
                    'Age': [32, 28, 41, 35]})

df2 = pd.DataFrame({'Name': ['John', 'Jane', 'Jim', 'Joan'],
                    'City': ['New York', 'London', 'Paris', 'Berlin']})

df_merged = pd.merge(df1, df2, on='Name')

 

데이터 클리닝 (Data Cleaning)

데이터를 다루다 보면 빈 항목 (널값, missing value) 처리를 해야 할 때가 많다. 이때 다음과 같이 null값을 평균값으로 채워줄 수 있다. 

df['Age'].fillna(df['Age'].mean(), inplace=True)

 

또한 중복된 값들은 다음과 같이 삭제(드롭)할 수 있다. 

df.drop_duplicates(inplace=True)

 

 

플랏(plot) 그리기

데이터프레임에서 기본적으로 제공하는 함수로 히스토그램을 만들 수 있다.

df['Age'].plot.hist()

 

별도의 패키지(matplotlib이나 seaborn)를 활용하여 플랏을 그릴 수도 있다.

import seaborn as sns

sns.boxplot(x='City', y='Age', data=df)

 

데이터프레임의 기초, 구조, 조건부 필터 걸기, 그룹 바이 하기, 머지(merge)하기, null값 처리하기, 중복값 처리하기 그리고 플랏(plot)그리는 방법에 대해 알아봤다. (참고 : 파이썬 코딩 생산성을 높여주는 구글코랩 관련 포스팅

댓글