본문 바로가기
Big Data/DataAnalysis & Manipulate

DataFrame Function 1

by Wikinist 2023. 8. 11.

pandas는 파이썬 프로그래밍 언어를 위한 데이터 분석 및 조작 라이브러리로 매우 유용하게 사용됩니다. 여러 가지 기능을 수행하는 함수들 중에 'info', 'set_index', 'reset_index', 'query', 'merge' 함수에 대해 설명해드리겠습니다.

info()

DataFrame의 기본 정보를 제공하는 함수입니다. DataFrame의 열 수, 각 열의 데이터 타입, 비어있지 않은 값의 개수 등을 보여줍니다. 주로 데이터의 전체적인 구조를 파악할 때 유용하게 사용됩니다.

시그니처

DataFrame.info(verbose=None, buf=None, max_cols=None, memory_usage=None, null_counts=None)

verbose: 출력 정보의 상세도를 제어하는 매개변수입니다. True로 설정하면 더 많은 정보가 표시됩니다.
buf: 출력을 저장할 버퍼를 지정하는 매개변수입니다. 기본적으로는 None으로 설정되어 표준 출력에 정보가 표시됩니다.
max_cols: 출력에 표시되는 최대 열 수를 지정하는 매개변수입니다.
memory_usage: 메모리 사용량 정보를 표시할지 여부를 결정하는 매개변수입니다.
null_counts: 각 열의 비어있지 않은 값의 개수를 표시할지 여부를 결정하는 매개변수입니다.

예제

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22],
        'City': ['New York', 'Los Angeles', 'Chicago']}

df = pd.DataFrame(data)

df.info()

set_index()

DataFrame의 특정 열을 인덱스로 설정하는 함수입니다. 인덱스는 행을 고유하게 식별하는 데 사용되며, 특정 열을 인덱스로 설정하면 해당 열의 데이터가 행 인덱스로 사용됩니다.

시그니처

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

keys: 새로운 인덱스로 설정할 열(또는 열의 리스트)을 지정합니다.
drop: 기존의 인덱스 열을 DataFrame에서 삭제할지 여부를 결정하는 매개변수입니다.
append: 기존 인덱스를 유지한 채로 새로운 인덱스를 추가할지 여부를 결정하는 매개변수입니다.
inplace: 원본 DataFrame을 수정할지 여부를 결정하는 매개변수입니다.
verify_integrity: 새로운 인덱스가 고유한지 확인할지 여부를 결정하는 매개변수입니다.\

예제

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22],
        'City': ['New York', 'Los Angeles', 'Chicago']}

df = pd.DataFrame(data)

df.set_index('Name', inplace=True)

print(df)

reset_index()

set_index() 함수로 설정한 인덱스를 다시 기본 정수 인덱스로 재설정하는 함수입니다. 이를 통해 인덱스를 열로 되돌릴 수 있습니다.

시그니처

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

level: 재설정할 인덱스 레벨을 지정하는 매개변수입니다. 기본값은 모든 인덱스 레벨을 재설정합니다.
drop: 재설정된 인덱스 열을 DataFrame에서 삭제할지 여부를 결정하는 매개변수입니다.
inplace: 원본 DataFrame을 수정할지 여부를 결정하는 매개변수입니다.
col_level: 열 인덱스 레벨을 지정하는 매개변수입니다.
col_fill: 열 인덱스 레벨을 지정한 경우, 누락된 값을 채울 값입니다.

예제

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22],
        'City': ['New York', 'Los Angeles', 'Chicago']}

df = pd.DataFrame(data)

df.set_index('Name', inplace=True)
df.reset_index(inplace=True)

print(df)

query()

DataFrame에서 특정 조건을 충족하는 행을 선택하기 위해 사용되는 함수입니다. SQL의 WHERE 절과 비슷한 역할을 합니다. 간단한 조건을 통해 데이터를 필터링할 수 있습니다.

시그니처

DataFrame.query(expr, inplace=False, **kwargs)

expr: 필터링을 위한 문자열 표현식을 지정합니다. 해당 표현식에 맞는 행만 선택됩니다.
inplace: 원본 DataFrame을 수정할지 여부를 결정하는 매개변수입니다.

기능

query() 함수는 파이썬 표현식을 사용하여 DataFrame을 쿼리하는 강력한 방법을 제공합니다. 이 함수를 사용하면 데이터를 필터링하거나 조작하는데 다양한 작업을 수행할 수 있습니다. 여기에 몇 가지 query() 함수의 사용 가능한 기능을 나열해보겠습니다:

비교 연산자: <, >, <=, >=, ==, !=와 같은 비교 연산자를 사용하여 열의 값을 비교하고 필터링할 수 있습니다.

논리 연산자: and, or, not을 사용하여 복잡한 조건을 만들어 데이터를 필터링할 수 있습니다.

문자열 메소드: 문자열에 대한 메소드를 사용하여 문자열을 검색하거나 조작할 수 있습니다. 예를 들어, 'column_name.str.contains("pattern")'를 사용하여 특정 패턴을 가진 행을 선택할 수 있습니다.

산술 연산: 사칙연산 (+, -, *, /) 등을 사용하여 열 간의 계산을 수행하거나 새로운 계산 열을 생성할 수 있습니다.

함수 호출: 내장 함수나 사용자 정의 함수를 호출하여 데이터를 조작하거나 계산할 수 있습니다.

변수 사용: @ 기호를 사용하여 변수를 쿼리에 삽입할 수 있습니다. 이를 통해 동적인 쿼리 생성이 가능합니다.

Indexing: .at, .iat, .loc, .iloc와 같은 인덱싱 기능을 사용하여 특정 행 또는 열을 선택할 수 있습니다.

다른 DataFrame의 열 사용: 다른 DataFrame의 열을 사용하여 데이터를 필터링하거나 조작할 수 있습니다.

데이터 타입 변환: astype() 메소드를 사용하여 열의 데이터 타입을 변경하거나 비교를 위해 데이터 타입을 변환할 수 있습니다.

조건문 사용: if-else와 유사한 조건문을 쿼리에 사용하여 조건에 따라 다른 작업을 수행할 수 있습니다.

예제

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22],
        'City': ['New York', 'Los Angeles', 'Chicago']}

df = pd.DataFrame(data)

# 나이가 25 이상인 행 선택
result = df.query('Age >= 25')
print(result)
print()

# 도시가 'New York'이거나 'Chicago'인 행 선택
result = df.query('City == "New York" or City == "Chicago"')
print(result)
print()

# 이름에 'li'가 포함된 행 선택
result = df.query('Name.str.contains("li")', engine='python')

print(result)

merge()

두 개 이상의 DataFrame을 특정 열(또는 인덱스)을 기준으로 합치는 함수입니다. 이를 통해 데이터베이스의 JOIN 연산과 유사하게 데이터를 조합할 수 있습니다. 다양한 조인 방식을 지원하며, 왼쪽 조인, 오른쪽 조인, 내부 조인, 외부 조인 등이 있습니다.

시그니처

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
    left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'),
    copy=True, indicator=False, validate=None)

left: 왼쪽 DataFrame을 지정합니다.
right: 오른쪽 DataFrame을 지정합니다.
how: 조인 방식을 지정합니다. 'inner', 'outer', 'left', 'right' 등이 가능합니다.
on: 조인할 열 또는 열의 리스트를 지정합니다.
left_on, right_on: 각각 왼쪽과 오른쪽 DataFrame에서 조인할 열을 지정합니다.
left_index, right_index: 각각 왼쪽과 오른쪽 DataFrame의 인덱스를 조인 열로 사용할지 여부를 결정합니다.
sort: 조인 후 결과를 정렬할지 여부를 결정합니다.
suffixes: 열 이름 충돌 시 사용할 접미사를 지정합니다.
copy: 데이터 복사 여부를 결정하는 매개변수입니다.
indicator: 조인 결과에 조인 유형을 나타내는 열을 추가할지 여부를 결정합니다.
validate: 조인 전 데이터 유효성 검사를 수행할지 여부를 결정합니다.

예제

import pandas as pd

data1 = {'ID': [1, 2, 3],
         'Name': ['Alice', 'Bob', 'Charlie']}

data2 = {'ID': [2, 3, 4],
         'Age': [30, 22, 28]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

merged_df = pd.merge(df1, df2, on='ID', how='inner')

print(merged_df)

이 함수들을 활용하여 데이터를 로드하고, 필요한 작업을 수행하며, 데이터를 조작하고 분석하는 데 유용하게 활용할 수 있습니다. 자세한 내용은 pandas 공식 문서를 참조하시면 더 많은 정보를 얻을 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글

DataFrame groupby()  (0) 2023.08.11
DataFrame 통계 함수  (0) 2023.08.11
pandas DataFrame 인덱스  (0) 2023.08.10
ANOVA 예제  (0) 2023.08.10
정규분포 표현과 통계적 계산  (0) 2023.08.09