>  기사  >  백엔드 개발  >  문자열로 변환한 후에도 문자열이 포함된 Pandas DataFrame 열에 \"dtype object\"가 표시되는 이유는 무엇입니까?

문자열로 변환한 후에도 문자열이 포함된 Pandas DataFrame 열에 \"dtype object\"가 표시되는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-26 07:24:02550검색

Why does a Pandas DataFrame column with strings show

DataFrame에 문자열이 있지만 dtype은 객체입니다

일부 사용자는 특정 열에 "dtype 객체"가 표시되는 Pandas DataFrame을 경험했습니다. 명시적으로 문자열로 변환한 후에도 해당 열 내의 모든 항목이 문자열인 경우에도 마찬가지입니다. 이 동작을 이해하려면 Pandas와 NumPy의 데이터 유형 특성을 자세히 조사할 필요가 있습니다.

Pandas의 기본 라이브러리인 NumPy는 데이터 유형을 int64, float64 및 object로 특성화합니다. "객체" dtype은 NumPy 배열의 요소가 정수 또는 부동 소수점의 경우처럼 바이트 단위로 균일하고 고정된 크기가 아님을 나타냅니다.

문자열의 경우 길이가 다양하므로 다음을 직접 저장합니다. 배열의 문자열 바이트는 실용적이지 않습니다. 대신 Pandas는 문자열 객체에 대한 포인터를 저장하는 "객체 배열"을 활용합니다. 이 접근 방식은 dtype이 문자열을 포함하는 열의 객체인 이유를 설명합니다.

다음 예를 고려하세요.

import numpy as np
import pandas as pd

# Create a NumPy array of integers
int_array = np.array([1, 2, 3, 4], dtype=np.int64)

# Create a NumPy array of strings
object_array = np.array(['a', 'b', 'c', 'd'], dtype=np.object)

# Convert the object array to pandas DataFrame
df = pd.DataFrame({'INTS': int_array, 'STRINGS': object_array})

# Check the data types
print(df.dtypes)

# Print the lengths of the first item in each column
print(len(df['INTS'].iat[0]))
print(len(df['STRINGS'].iat[0]))

출력은 다음과 같습니다.

INTS         int64
STRINGS      object
dtype: object
1
1

가능한 대로 "INTS" 열의 dtype은 int64입니다. 모든 요소가 8바이트 정수이기 때문입니다. "STRINGS" 열의 요소는 문자열 개체에 대한 포인터이므로 dtype이 object입니다. 출력에서 알 수 있듯이 각 문자열의 길이는 다릅니다.

위 내용은 문자열로 변환한 후에도 문자열이 포함된 Pandas DataFrame 열에 \"dtype object\"가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.