Pandas DataFrame 행 단위로 빌드

Salman Mehmood 2023년6월21일
  1. Pandas DataFrame에서 행 만들기
  2. loc() 함수를 사용하여 Pandas DataFrame에서 행 만들기
  3. pandas.concat() 함수를 사용하여 Pandas DataFrame에서 행 생성
Pandas DataFrame 행 단위로 빌드

이 문서에서는 Pandas에서 관례적으로 따르는 열 방식 대신 데이터 프레임을 행 방식으로 빌드하는 방법을 보여줍니다.

Pandas DataFrame에서 행 만들기

Pandas DataFrame은 두 개의 차원과 해당 차원에 해당하는 레이블로 데이터를 저장하는 구조입니다. DataFrames는 Excel 및 Calc와 같은 응용 프로그램에서 조작할 수 있는 SQL 테이블 및 스프레드시트와 비슷합니다.

DataFrame은 Python 및 NumPy 생태계의 필수 구성 요소이기 때문에 속도, 유용성 및 성능 면에서 테이블 및 스프레드시트보다 뛰어난 경우가 많습니다. 이것은 많은 응용 프로그램의 경우입니다.

데이터 저장 구조로서 특정 조건에 따라 열 단위가 아닌 행 단위로 데이터를 입력해야 하는 경우가 있습니다.

다음 코드를 고려하십시오.

import pandas

df = pandas.DataFrame(
    columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}

print("Attempt 1")
# df['y'] = y
# print(df)

print("Attempt 2")
# df.join(y)

각 시도의 다음 출력은 별도로 작성됩니다.

출력(시도 1):

Attempt 1
     a    b    c    d    e   y
v  NaN  NaN  NaN  NaN  NaN NaN
w  NaN  NaN  NaN  NaN  NaN NaN
x  NaN  NaN  NaN  NaN  NaN NaN
y  NaN  NaN  NaN  NaN  NaN NaN
z  NaN  NaN  NaN  NaN  NaN NaN

출력(시도 2):

Traceback (most recent call last):
  File "d:\Test\test.py", line 13, in <module>
    df.join(y)
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 9969, in join
    return self._join_compat(
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in _join_compat
    can_concat = all(df.index.is_unique for df in frames)
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in <genexpr>
    can_concat = all(df.index.is_unique for df in frames)

AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'

위의 코드에서 먼저 DataFrame 인스턴스가 초기화되며, 열 ['a','b','c','d', 'e'] 및 색인 ['v', 'w','x','y','z']. 주요 목표는 행 방향으로 요소를 추가하는 것입니다. 이 경우 코드에서 알 수 있듯이 y입니다.

입력에 입력할 데이터는 {'a':1, 'b':5, 'c':2, 'd':3, 'e'로 주어진 각 열에 해당하는 값으로 초기화됩니다. 7}.

첫 번째 시도에서 생성된 데이터는 df[y]를 사용하여 인덱스 y로 설정하여 DataFrame에 할당됩니다. 그러나 출력에서 볼 수 있듯이 다른 모든 요소와 마찬가지로 모든 구성원이 NaN인 새 열이 생성됩니다.

두 번째 시도에서는 join() 메서드를 사용하여 선언된 데이터를 DataFrame 자체에 조인하려고 시도하며 "builtin_function_or_method' 객체에 'is_unique' 속성이 없습니다"라는 오류도 발생합니다. 이 문제는 아래에 언급된 다음과 같은 기술로 접근할 수 있습니다.

  • loc() 함수 사용.
  • pandas.concat() 기능 사용.

loc() 함수를 사용하여 Pandas DataFrame에서 행 만들기

다음 코드를 고려하십시오.

import pandas

df = pandas.DataFrame(
    columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
print("Current Shape:\n" + str(df))

y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}
df.loc["y"] = pandas.Series(y)

print("DataFrame:\n" + str(df))

출력:

Current Shape:

     a    b    c    d    e
v  NaN  NaN  NaN  NaN  NaN
w  NaN  NaN  NaN  NaN  NaN
x  NaN  NaN  NaN  NaN  NaN
y  NaN  NaN  NaN  NaN  NaN
z  NaN  NaN  NaN  NaN  NaN

DataFrame:

     a    b    c    d    e
v  NaN  NaN  NaN  NaN  NaN
w  NaN  NaN  NaN  NaN  NaN
x  NaN  NaN  NaN  NaN  NaN
y    1    5    2    3    7
z  NaN  NaN  NaN  NaN  NaN

DataFrame 클래스의 loc 속성은 DataFrame의 행 또는 열에 액세스하는 데 사용됩니다. loc 속성을 사용하면 행과 열 및 부울 배열의 단일 또는 그룹에 액세스할 수 있습니다.

우리 코드에서는 속성이 레이블 기반이기 때문에 loc 속성을 사용했습니다. 따라서 우리는 원하는 레이블(또는 인덱스)인 y를 전달했습니다.

panda.Series()는 모든 요소를 지정할 필요가 없는 경우 입력을 정렬하는 것입니다.

pandas.concat() 함수를 사용하여 Pandas DataFrame에서 행 생성

다음 코드를 고려하십시오.

import pandas

df = pandas.DataFrame(columns=["a", "b", "c", "d", "e"], index=[])
print("Current Shape:\n" + str(df))

entry = pandas.DataFrame.from_dict(
    {
        "a": [1, 6, 11, 16],
        "b": [2, 7, 12, 17],
        "c": [3, 8, 13, 18],
        "d": [4, 9, 14, 19],
        "e": [5, 10, 15, 20],
    }
)

df = pandas.concat([df, entry])
print("DataFrame:\n" + str(df))

출력:

Current Shape:
Empty DataFrame
Columns: [a, b, c, d, e]
Index: []
DataFrame:
    a   b   c   d   e
0   1   2   3   4   5
1   6   7   8   9  10
2  11  12  13  14  15
3  16  17  18  19  20

열 이름과 해당 값을 포함하는 사전을 포함하는 from_dict() 메서드가 선언되어 새 DataFrame이 생성됩니다. 이 새로 생성된 DataFrame 인스턴스는 원래 DataFrame에 추가하려는 새 요소에 해당하는 entry라는 변수에 저장됩니다.

DataFrame이 생성되고 DataFrame에 데이터가 할당되면 이제 두 DataFrame 인스턴스를 조인하는 방법을 찾아야 합니다. pandas.concat() 메서드를 사용하여 두 개의 DataFrame 인스턴스를 연결할 수 있으며 결과 DataFrame은 첫 번째 인스턴스에 저장됩니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Pandas DataFrame