Как получить заголовки столбцов Pandas DataFrame в виде списка

Pandas - это пакет с открытым исходным кодом для анализа данных на Python. pandas.DataFrame - это основная структура данных Pandas. Это двумерная табличная структура данных с обозначенными осями (строками и столбцами).

Широко распространенным случаем использования является получение списка заголовков столбцов из объекта 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

Когда возникает необходимость конвертировать итератор в список, можно вызвать на нём встроенную в Python функцию 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

Как видим, производительность этого подхода более чем в 10 раз лучше, чем если бы мы выполняли итерацию непосредственно над объектом DataFrame. Большинству инженеров будет интересно узнать причины такого несоответствия в производительности.

Ответ скрывается в типе данных свойства DataFrame.columns.values. Это массив NumPy. NumPy - это пакет Python для научных вычислений, и мейнтейнеры высоко оптимизируют его для производительности.

Pandas построен на вершине NumPy и предоставляет удобные высокоуровневые абстракции. Таким образом, выполнение прямых операций с низкоуровневыми структурами данных NumPy почти всегда будет быстрее, чем выполнение аналогичных операций с высокоуровневыми структурами данных Pandas.

Сопутствующая статья - Pandas DataFrame

  • Как удалить колонку Pandas DataFrame
  • Как преобразовать столбец DataFrame в дату в Pandas
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • Сопутствующая статья - Pandas DataFrame Column

  • Как удалить колонку Pandas DataFrame
  • Как преобразовать столбец DataFrame в дату в Pandas
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать столбец DataFrame в дату в Pandas
  • Как изменить порядок столбцов DataFrame
  • comments powered by Disqus