Pandas DataFrame 열 헤더를 목록으로 가져 오는 방법

Pandas는 파이썬에서 데이터 분석을위한 오픈 소스 패키지입니다. pandas.DataFrame은 기본 Pandas 데이터 구조입니다. 레이블이 지정된 축 (행 및 열)이있는 2 차원 테이블 형식 데이터 구조입니다.

널리 사용되는 사례는 DataFrame 객체에서 열 헤더 목록을 얻는 것입니다.

이 튜토리얼의 다른 모든 코드 예제에서 아래에 정의한 DataFrame 객체를 재사용 할 것이다.

>>> import pandas
>>> cities = {
...   'name': ['New York', 'Los Angeles', 'Chicago'],
...   'population': [8601186, 4057841, 2679044],
...   'state': ['NY', 'CA', 'IL'],
... }
>>> data_frame = pandas.DataFrame(cities)

DataFrame 열 이름을 유지하는 한 가지 방법은 DataFrame 객체 자체를 반복하는 것입니다. DataFrame 반복자는 정의 된 순서로 열 이름을 반환합니다.

>>> for column in data_frame:
...   print(column)
...
name
population
state

iterable 을리스트로 변환 할 필요가있을 때, 파이썬의 내장 list 함수를 호출 할 수 있습니다.

>>> list(data_frame)
['name', 'population', 'state']

그러나이 방법의 성능이 느립니다.

>>> from timeit import timeit
>>> timeit(lambda: list(data_frame))
7.818843764999997

DataFrame 객체로 더 깊이 들어가서 DataFrame.columns 속성에서 열에 액세스 할 수도 있습니다.

>>> list(data_frame.columns)
['name', 'population', 'state']

그렇지 않으면, 우리는 DataFrame.columns.tolist()함수를 사용하여 같은 것을 얻을 수 있습니다.

>>> data_frame.columns.tolist()
['name', 'population', 'state']

이 두 가지 방법의 성능은 그리 나쁘지 않습니다.

>>> timeit(lambda: list(data_frame.columns))
7.143133517000024
>>> timeit(lambda: data_frame.columns.tolist())
6.064925153999866

DataFrame.columns.values 속성으로 훨씬 더 많이 이동하면 상황이 많이 변합니다. 마찬가지로, DataFrame 객체 및 DataFrame.columns 속성과 마찬가지로 DataFrame 열 이름 시퀀스를 얻는 데 사용할 수 있습니다.

>>> list(data_frame.columns.values)
['name', 'population', 'state']

이 방법의 성능은 이전 방법과 비교할 때 5-6 배 더 좋습니다.

>>> timeit(lambda: list(data_frame.columns.values))
1.301724927000123

그러나 내장 된 DataFrame.columns.values.tolist()메서드를 사용하면 최상의 런타임을 얻을 수 있습니다.

>>> data_frame.columns.values.tolist()
['name', 'population', 'state']
>>> timeit(lambda: data_frame.columns.values.tolist())
0.6860591469999235

보다시피,이 접근법의 성능은 우리가 DataFrame 객체를 직접 반복했을 때보 다 10 배 이상 더 좋습니다. 대부분의 엔지니어는 성능 불일치의 원인에 대해 궁금합니다.

정답은 DataFrame.columns.values속성의 데이터 형식에서 숨겨집니다. NumPy 배열입니다. NumPy 는 과학 컴퓨팅을위한 Python 패키지이며 관리자는 성능을 높이기 위해이를 최적화합니다.

Pandas는 NumPy 위에 구축되었으며 편리한 고급 추상화를 제공합니다. 따라서 하위 레벨 NumPy 데이터 구조에서 직접 조작을 수행하면 Pandas 상위 레벨 데이터 구조에서 유사한 조작을 수행하는 것보다 거의 항상 빠릅니다.

관련 문장 - Pandas DataFrame

  • Pandas에서 DataFrame의 행을 반복하는 방법
  • Pandas 에서 DataFrame 열을 Datetime 으로 변환하는 방법
  • 관련 문장 - Pandas DataFrame Column

  • Pandas Dataframe의 색인을 열로 변환하는 방법