파이썬 마스터하기 : Pandas

서쿠·2023년 5월 8일
10

python-viz

목록 보기
3/6
post-thumbnail

판다스(Pandas)란?

판다스(Pandas)는 파이썬 데이터 분석 라이브러리 중 하나로, 데이터 조작, 정제, 분석, 시각화 등을 위한 다양한 기능을 제공합니다. 판다스는 시리즈(Series)와 데이터프레임(DataFrame)이라는 자료형을 이용하여 데이터를 처리합니다.

판다스 설치

판다스를 사용하려면 먼저 설치가 필요합니다. 판다스는 pip를 이용하여 설치할 수 있습니다. 터미널에서 다음 명령어를 입력하여 판다스를 설치합니다.

$ pip install pandas

판다스 데이터 객체

DataFrame 객체

DataFrame 객체는 행과 열로 이루어진 2차원 데이터를 다루기 위한 객체입니다. 열은 각각의 변수를 나타내고, 행은 각각의 관측치를 나타냅니다. DataFrame 객체는 여러 가지 방법으로 생성할 수 있습니다.

생성하기

# 리스트를 사용하여 DataFrame 객체 생성하기
import pandas as pd

data = [['A', 1], ['B', 2], ['C', 3]]
df = pd.DataFrame(data, columns=['col1', 'col2'])
print(df)
# 출력 결과
#   col1  col2
# 0    A     1
# 1    B     2
# 2    C     3

# 딕셔너리를 사용하여 DataFrame 객체 생성하기
data = {'col1': ['A', 'B', 'C'], 'col2': [1, 2, 3]}
df = pd.DataFrame(data)
print(df)
# 출력 결과
#   col1  col2
# 0    A     1
# 1    B     2
# 2    C     3

# CSV 파일을 사용하여 DataFrame 객체 생성하기
df = pd.read_csv('data.csv')
print(df)

선택하기

DataFrame 객체에서는 열이나 행을 선택하여 데이터를 조회할 수 있습니다.

# 열 선택하기
df['col1']
df[['col1', 'col2']]

# 행 선택하기
df.loc[0]
df.loc[[0, 1, 2]]

조작하기

DataFrame 객체에서는 데이터를 추가, 삭제, 수정하는 등 다양한 조작을 수행할 수 있습니다.

# 열 추가하기
df['col3'] = [4, 5, 6]

# 열 삭제하기
df.drop('col3', axis=1, inplace=True)

# 행 추가하기
df.loc[3] = ['D', 4, 5]

# 행 삭제하기
df.drop(3, inplace=True)

# 열 이름 변경하기
df.rename(columns={'col1': 'new_col1'}, inplace=True)

Series 객체

Series 객체는 인덱스와 값으로 이루어진 1차원 데이터를 다루기 위한 객체입니다. Series 객체는 DataFrame 객체에서 열을 선택하여 추출할 수 있습니다.

생성하기

# 리스트를 사용하여 Series 객체 생성하기
import pandas as pd

data = [1, 2, 3]
s = pd.Series(data, index=['a', 'b', 'c'])
print(s)
# 출력 결과
# a    1
# b    2
# c    3
# dtype: int64

# 딕셔너리를 사용하여 Series 객체 생성하기
data = {'a': 1, 'b': 2, 'c': 3}
s = pd.Series(data)
print(s)
# 출력 결과
# a    1
# b    2
# c    3
# dtype: int64

선택하기

Series 객체에서는 인덱스나 위치를 이용하여 데이터를 선택할 수 있습니다

판다스 기본 사용법

데이터 불러오기

판다스에서는 다양한 형태의 데이터를 불러올 수 있습니다. 대표적인 데이터 형식으로는 CSV, Excel, SQL 등이 있습니다.

CSV 파일 불러오기

CSV(Comma-Separated Values) 파일은 쉼표로 구분된 데이터를 저장하는 파일 형식입니다. 판다스에서는 read_csv() 함수를 이용하여 CSV 파일을 불러올 수 있습니다.

import pandas as pd

# CSV 파일 불러오기
df = pd.read_csv('data.csv')

Excel 파일 불러오기

Excel 파일은 스프레드시트 프로그램에서 생성한 데이터를 저장하는 파일 형식입니다. 판다스에서는 read_excel() 함수를 이용하여 Excel 파일을 불러올 수 있습니다.

import pandas as pd

# Excel 파일 불러오기
df = pd.read_excel('data.xlsx')

데이터 살펴보기

데이터를 불러온 후에는 데이터의 구조와 내용을 살펴볼 필요가 있습니다. 판다스에서는 다음과 같은 함수를 이용하여 데이터를 살펴볼 수 있습니다.

데이터프레임 정보 확인하기

info() 함수는 데이터프레임의 정보를 출력합니다. 데이터프레임의 크기, 데이터 타입, 결측치 등의 정보를 확인할 수 있습니다.

# 데이터프레임 정보 확인하기
df.info()

데이터프레임 일부 데이터 보기

head() 함수는 데이터프레임의 첫 n행을 출력합니다. n은 인자로 전달될 수 있습니다. 기본값은 5입니다.

# 데이터프레임 일부 데이터 보기
df.head()

데이터프레임 요약 통계량 보기

describe() 함수는 데이터프레임의 요약 통계량을 출력합니다. 각 열의 개수, 평균, 표준편차, 최소값, 25% 백분위수, 중앙값, 75% 백분위수, 최대값 등의 정보를 확인할 수 있습니다.

# 데이터프레임 요약 통계량 보기
df.describe()

데이터 선택하기

데이터프레임에서는 특정한 열이나 행을 선택하여 데이터를 조회할 수 있습니다.

열 선택하기

특정한 열을 선택할 때는 데이터프레임의 열 이름을 사용합니다.

# 열 선택하기
df['열 이름']

여러 개의 열을 선택할 때는 리스트 형태로 열 이름을 전달합니다.

# 여러 개의 열 선택하기
df[['열 이름 1', '열 이름 2', ...]]

행 선택하기

특정한 행을 선택할 때는 loc[] 함수를 사용합니다. loc[] 함수는 행의 이름 또는 인덱스를 사용하여 행을 선택합니다.

# 행 선택하기
df.loc[행 이름 또는 인덱스]

여러 개의 행을 선택할 때는 리스트 형태로 행 이름 또는 인덱스를 전달합니다.

# 여러 개의 행 선택하기
df.loc[[행 이름 또는 인덱스 1, 행 이름 또는 인덱스 2, ...]]

데이터 필터링하기

데이터프레임에서는 특정한 조건을 만족하는 데이터만 선택하여 조회할 수 있습니다.

조건 필터링하기

조건 필터링은 [] 연산자와 조건식을 이용하여 수행합니다.

# 조건 필터링하기
df[조건식]

예를 들어, 2010년 이후의 데이터만 선택하고 싶을 때는 다음과 같이 작성할 수 있습니다.

# 2010년 이후의 데이터만 선택하기
df[df['Year'] >= 2010]

논리 연산자 이용하기

&(and)와 |(or) 연산자를 이용하여 논리 연산을 수행할 수 있습니다.

# 논리 연산자 이용하기
df[(조건식 1) & (조건식 2)]
df[(조건식 1) | (조건식 2)]

예를 들어, 2010년 이후이면서 금메달 이상을 획득한 데이터만 선택하고 싶을 때는 다음과 같이 작성할 수 있습니다.

# 2010년 이후이면서 금메달 이상을 획득한 데이터만 선택하기
df[(df['Year'] >= 2010) & (df['Medal'] == 'Gold')]

isin() 함수 이용하기

isin() 함수를 이용하여 특정한 값이 포함된 데이터만 선택할 수 있습니다.

# isin() 함수 이용하기
df[df['열 이름'].isin([1,2, ...])]

예를 들어, 'KOR', 'USA', 'JPN' 국가의 데이터만 선택하고 싶을 때는 다음과 같이 작성할 수 있습니다.

# 'KOR', 'USA', 'JPN' 국가의 데이터만 선택하기
df[df['NOC'].isin(['KOR', 'USA', 'JPN'])]

데이터 그룹화하기

데이터프레임에서는 특정한 기준에 따라 데이터를 그룹화하여 처리할 수 있습니다.

groupby() 함수 이용하기

groupby() 함수를 이용하여 특정한 열을 기준으로 데이터를 그룹화할 수 있습니다.

# groupby() 함수 이용하기
df.groupby('열 이름')

groupby() 함수로 그룹화한 데이터는 각 그룹에 대한 정보를 담고 있는 객체입니다. 이를 바탕으로 다양한 처리를 수행할 수 있습니다.

집계 함수 이용하기

그룹화된 데이터에 대해 집계 함수를 이용하여 다양한 처리를 수행할 수 있습니다.

# 집계 함수 이용하기
그룹화된 데이터.집계함수()

그룹화된 데이터에 대해 적용할 수 있는 집계 함수는 다양합니다. 일반적으로 사용되는 집계 함수는 다음과 같습니다.

  • count() : 데이터의 개수를 세는 함수
  • sum() : 데이터의 합을 구하는 함수
  • mean() : 데이터의 평균을 구하는 함수
  • median() : 데이터의 중앙값을 구하는 함수
  • min() : 데이터의 최소값을 구하는 함수
  • max() : 데이터의 최대값을 구하는 함수
  • std() : 데이터의 표준편차를 구하는 함수
  • var() : 데이터의 분산을 구하는 함수
# 집계 함수 이용하기
그룹화된 데이터.count()
그룹화된 데이터.sum()
그룹화된 데이터.mean()
그룹화된 데이터.median()
그룹화된 데이터.min()
그룹화된 데이터.max()
그룹화된 데이터.std()
그룹화된 데이터.var()

예를 들어, 국가별 금메달 수의 합계를 구하고 싶을 때는 다음과 같이 작성할 수 있습니다.

# 국가별 금메달 수의 합계 구하기
df[df['Medal'] == 'Gold'].groupby('NOC')['Medal'].count()

데이터 정렬하기

데이터프레임에서는 특정한 열을 기준으로 데이터를 정렬할 수 있습니다. 기본적으로 오름차순으로 정렬되며, 내림차순으로 정렬하려면 ascending=False 옵션을 추가합니다.

# 오름차순으로 정렬하기
df.sort_values('열 이름')

# 내림차순으로 정렬하기
df.sort_values('열 이름', ascending=False)

예를 들어, 아래와 같은 데이터프레임이 있다고 가정해 봅시다.

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'city': ['New York', 'Paris', 'London', 'San Francisco']}
df = pd.DataFrame(data)
print(df)
       name  age           city
0     Alice   25       New York
1       Bob   32          Paris
2   Charlie   18         London
3     David   47  San Francisco

이제 나이를 기준으로 데이터를 정렬해 보겠습니다.

df.sort_values('age')
       name  age           city
2   Charlie   18         London
0     Alice   25       New York
1       Bob   32          Paris
3     David   47  San Francisco

Index 초기화하기

데이터프레임에서는 reset_index() 함수를 이용하여 인덱스를 초기화할 수 있습니다. 이때 기존 인덱스는 열로 추가됩니다.

# 인덱스 초기화하기
df.reset_index()

예를 들어, 아래와 같은 데이터프레임이 있다고 가정해 봅시다.

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'city': ['New York', 'Paris', 'London', 'San Francisco']}
df = pd.DataFrame(data)
df.set_index('name', inplace=True)
print(df)
         age           city
name                      
Alice     25       New York
Bob       32          Paris
Charlie   18         London
David     47  San Francisco

이제 인덱스를 초기화해 보겠습니다.

df.reset_index()
      name  age           city
0    Alice   25       New York
1      Bob   32          Paris
2  Charlie   18         London
3    David   47  San Francisco

결론

더 많은 데이터 분석 기능과 기법이 있지만, 기본적인 내용을 다루는 것이기 때문에 이상으로 기본적인 판다스 사용법에 대해 알아보았습니다. 판다스는 매우 다양한 기능을 제공하기 때문에 한 번에 모든 내용을 익히기는 어렵지만, 자주 사용하는 기능을 숙달하고, 필요할 때마다 검색하여 사용하면 판다스를 효과적으로 사용할 수 있습니다.

이외에도 앞으로 살펴볼 데이터 시각화를 위한 matplotlib, seaborn, 그리고 앞에서 살펴본 데이터 전처리를 위한 numpy 등 다양한 라이브러리들이 있으니, 필요한 기능에 맞게 적절한 라이브러리를 사용하여 데이터 분석을 수행해 보시기 바랍니다.

profile
Always be passionate ✨

0개의 댓글