Как переименовать столбцы в Pandas (с примерами)
Вы можете использовать один из следующих трех методов для переименования столбцов в датафрейме данных pandas:
Способ 1: переименовать определенные столбцы
df.rename(columns = , inplace = True )
Способ 2: переименовать все столбцы
df.columns = ['new_col1', 'new_col2', 'new_col3', 'new_col4']
Способ 3: заменить определенные символы в столбцах
df.columns = df.columns.str.replace('old_char', 'new_char')
В следующих примерах показано, как использовать каждый из этих методов на практике.
Способ 1: переименовать определенные столбцы
В следующем коде показано, как переименовать определенные столбцы в датафрейме данных pandas:
import pandas as pd #определите DataFrame df = pd.DataFrame() #список названия столбцов list(df) ['team', 'points', 'assists', 'rebounds'] #переименуйте названия колонок df.rename(columns = , inplace = True ) #посмотреть обновленный список названий колонок list(df) ['team_name', 'points_scored', 'assists', 'rebounds']
Обратите внимание, что столбцы «команда» и «очки» были переименованы, а имена всех остальных столбцов остались прежними.
Способ 2: переименовать все столбцы
В следующем коде показано, как переименовать все столбцы в датафрейме pandas:
import pandas as pd #define DataFrame df = pd.DataFrame() #list column names list(df) ['team', 'points', 'assists', 'rebounds'] #rename all column names df.columns = ['_team', '_points', '_assists', '_rebounds'] #view updated list of column names list(df) ['_team', '_points', '_assists', '_rebounds']
Обратите внимание, что этот метод быстрее использовать, если вы хотите переименовать большинство или все имена столбцов в DataFrame.
Способ 3: заменить определенные символы в столбцах
В следующем коде показано, как заменить определенный символ в имени каждого столбца:
import pandas as pd #определение DataFrame df = pd.DataFrame() #list column names list(df) ['team', 'points', 'assists', 'rebounds'] #rename $ with blank in every column name df.columns = df.columns.str.replace('$', '') #view updated list of column names list(df) ['team', 'points', 'assists', 'rebounds']
Обратите внимание, что этот метод позволил нам быстро удалить «$» из имени каждого столбца.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas как добавить название столбцов в первую строку дата фрейма, без промежуточного сохранения в файл
Нужно добавить название столбцов как первую строку в дата фрейм, без сохранения в файл. Данные не для выгрузки в exel. Вот фрейм:
| name | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| serg | 6 | 5 | 87 | df |
| ivan | 3 | ef | d | 4 |
import pandas as pd df = df def data(df): f = [] g = [] x = 2 #Уровень столбца с названиями for i in range(0,len(df.columns)): g.append(df.columns[i][x]) for i in range(0,len(df.iloc[1])): h = [] h.append(g[i]) d = list(df.iloc[:, i]) for j in d: h.append(j) f.append(h) data = pd.DataFrame(f) data = data.T return data
Добавить в первую строку в dataframe название столбцов. Ничего лучше этого не придумал, может есть какой-то другой способ быстрее и лучше.
7 основных способов для управления столбцами в Pandas
Когда дело доходит до анализа данных, Pandas является наиболее используемой библиотекой Python для обработки и подготовки данных для дальнейшего анализа и машинного обучения.
Реальность такова, что Pandas — действительно гибкая библиотека, и её можно использовать даже для преобразования форматов файлов.
Однако, даже если мы используем некоторые функции Pandas едва ли не каждый день, мы тратим много времени на интернет-сёрфинг (поиск ответов на то, как что-то сделать в Pandas?).
Но давайте будем честными: некоторые функции трудно запомнить потому, что мы можем достичь одной и той же цели разными способами. Так что нечего стыдиться, если мы каждый день гуглим одни и те же вещи.
Тем не менее, экономия времени — это всегда хорошая идея. По этой причине в этой статье мы рассмотрим 7 основных способов для управления столбцами в Pandas. Таким образом, вам больше не нужно будет их гуглить: вам просто нужно сохранить эту статью (возможно, в закладках) и возвращаться к ней всякий раз, когда она вам понадобится.
Вот что вы найдете здесь:
Как создать новый столбец в Pandas
Как переименовать столбец в Pandas
Как добавить новый столбец во фрейм данных Pandas
Как удалить столбец в Pandas
Как найти уникальные значения в столбце Pandas
Как преобразовать столбец Pandas в список
Как отсортировать фрейм данных Pandas по столбцам
Как создать новый столбец в Pandas
Прежде всего, давайте вспомним, что столбец Pandas также называется Pandas Series. Это означает, что фрейм данных Pandas представляет собой упорядоченный набор рядов.
Есть несколько способов создать новый столбец Pandas. Давайте посмотрим их все!
Создайте столбец Pandas как Pandas Series
Правильный метод создания столбца Pandas, который, как считается, «живёт» сам по себе, — это метод Series, который мы рассматриваем ниже:
# Create a Pandas series series = pd.Series([6, 12, 18, 24]) # Print Pandas series print(series) >>> 0 6 1 12 2 18 3 24 dtype: int64
Я сказал «правильный метод», потому что, как мы уже говорили, столбец Pandas — это то же самое что Pandas Series. Итак, если нам нужен только один столбец, мы должны использовать этот метод, если нам хочется быть «формально правильными».
Создайте столбец Pandas как фрейм данных Pandas
Однако реальность такова, что столбец сам по себе нам понадобится нечасто.
Итак, ещё один способ создать столбец в Pandas — создать новый фрейм данных только с одним столбцом: таким образом, мы могли бы мгновенно обогатить его другими столбцами.
Мы можем сделать это так:
import pandas as pd # Create a Pandas column as a Pandas data frame df = pd.DataFrame(<'A': [1, 2, 3, 4]>) # Print Pandas data frame print(df) >>> A 0 1 1 2 2 3 3 4'A':>
Отличие от предыдущего примера в том, что в этом случае столбец Pandas также имеет имя. В данном случае мы назвали его «А».
ПРИМЕЧАНИЕ: Если мы более внимательно посмотрим на то, что мы здесь сделали, увидим, что мы можем создать фрейм данных Pandas как словарь. Фактически, «A» — это ключ, и он разделён списком значений через двоеточие. Затем и ключи, и значения находятся внутри фигурных скобок.
Создайте столбец Pandas как фрейм данных Pandas, начиная с массива NumPy
Одной из сверхспособностей Pandas является то, что он может «принимать» массивы NumPy в качестве входных значений. Другими словами, мы можем создать фрейм данных, начиная с массива NumPy.
В случае одного столбца мы можем создать одномерный массив и преобразовать его во фрейм данных: в результате получится фрейм данных с одним столбцом.
Мы можем сделать это так:
import numpy as np import pandas as pd # Create a NumPy array values = np.array([5, 10, 15, 20]) # Transform array into Pandas data frame df = pd.DataFrame(values) # Print data frame print(df) >>> 0 0 5 1 10 2 15 3 20
Как добавить новый столбец во фрейм данных Pandas
Возможность добавить новый столбец во фрейм данных Pandas каким-то образом связана с созданием нового столбца.
Я имею в виду, что сначала нам нужно создать фрейм данных Pandas, затем один столбец Pandas, затем нам нужно добавить столбец в фрейм данных.
В этом случае у нас также есть несколько возможностей сделать это. Давайте посмотрим их все.
Добавление нового столбца во фрейм данных Pandas: стандартный метод
Стандартный метод добавления нового столбца во фрейм данных Pandas — создать фрейм данных, далее создать отдельный столбец, а затем добавить его во фрейм данных.
Мы будем использовать этот метод во всех следующих примерах. Итак, вот как мы можем это сделать:
import pandas as pd # Create a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 4]>) # Add a new column by using a list of values df[‘B’] = [20, 30, 40, 50] # Print data frame print(df) >>> A B 0 1 20 1 2 30 2 3 40 3 4 50'A':>
Давайте пошагово разберем, что мы сделали:
- Мы создали фрейм данных Pandas с помощью метода pd.DataFrame().
- Мы создали новый столбец df[‘B’], который назвали «B».
- Мы присвоили значения вновь созданному столбцу со списком чисел.
Добавление нового столбца во фрейм данных Pandas: применение функций
Возможности стандартного метода добавления нового столбца в существующий фрейм данных дают нам возможность создать новый столбец и добавить его в существующий фрейм данных одной строкой кода.
Например, предположим, что мы хотим создать два новых столбца как комбинацию существующего столбца. Мы можем сделать это, применяя функции к существующим столбцам следующим образом:
import pandas as pd # Create a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 4]>) # Create a column doubling the values of column A df[‘B’] = df[‘A’] * 2 # Apply lambda function to column A to create column C df[‘C’] = df[‘A’].apply(lambda x: x ** 2) # Print data frame print(df) >>> A B C 0 1 2 1 1 2 4 4 2 3 6 9 3 4 8 16'A':>
Итак, вот что мы сделали:
- Мы создали столбец Pandas («A») в качестве фрейма данных.
- Мы создали столбец «B», удвоив значения столбца «A».
- Мы создали столбец «C», применив лямбда-функцию к столбцу «A». В частности, в данном случае мы возводим в квадрат значения столбца «А».
Все эти столбцы хранятся вместе в уникальном фрейме данных.
Добавление нового столбца во фрейм данных Pandas: использование Pandas Series или отдельных столбцов Pandas
Конечно, мы можем добавлять столбцы во фрейм данных Pandas, даже если столбцы представляют собой Series или фрейм данных.
Вот как мы можем это сделать:
import pandas as pd # Create a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 4]>) # Create a new column using pd.Series() values = pd.Series([5, 10, 15, 20]) # Create series df[‘B’] = values # Add series to data frame as a column # Print data frame print(df) >>> A B 0 1 5 1 2 10 2 3 15 3 4 20'A':>
Итак, в приведённом выше случае мы создали Pandas Series, затем добавили её в существующий фрейм данных, дав ей имя.
В случае столбца Pandas, созданного как фрейм данных, мы имеем следующее:
import pandas as pd # Create a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]>) # Create a Pandas column as a data frame df[‘C’] = pd.DataFrame() # Print data frame print(df) >>> A B C 0 1 5 9 1 2 6 10 2 3 7 11 3 4 8 12'A':>
Как переименовать столбец в Pandas
Переименование столбца Pandas (или нескольких) — ещё одна типичная ежедневная задача, которую нам нужно выполнять, но способ выполнения которой мы часто не можем вспомнить.
Для её реализации существуют различные методы. Давайте посмотрим их все!
Как переименовать столбец Pandas: метод rename()
Мы можем переименовать столбец Pandas с помощью метода rename():
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6]>) # Renaming a single column df = df.rename(columns=<'A': 'NewA'>) # Print data frame print(df) >>> NewA B 0 1 4 1 2 5 2 3 6'A':>
Итак, мы как будто пользуемся словарём. Внутри метода rename() нам нужно передать аргумент columns и указать фактическое имя и новое имя внутри фигурных скобок, разделив их двоеточием. Так же, как мы делаем в словарях.
Конечно, мы можем использовать этот метод для переименования нескольких столбцов одновременно следующим образом:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6]>) # Rename multiple columns df = df.rename(columns=<'A': 'NewA', 'B': 'NewB'>) # Print data frame print(df) >>> NewA NewB 0 1 4 1 2 5 2 3 6'A':>
Как переименовать столбец Pandas: атрибут columns
Чтобы переименовать один столбец в Pandas (или несколько), мы можем использовать атрибут columns следующим образом:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6]>) # Renaming all columns df.columns = [‘NewA’, ‘NewB’] # Print data frame print(df) >>> NewA NewB 0 1 4 1 2 5 2 3 6'A':>
В этом случае атрибут columns даёт нам возможность использовать список строк для переименования столбцов.
Как переименовать столбец Pandas: метод set_axis()
Чтобы переименовать один (или несколько) столбцов в Pandas, мы можем использовать метод set_axis():
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6]>) # Renaming all columns df.set_axis([‘NewA’, ‘NewB’], axis=1, inplace=True) # Print data frame print(df) >>> NewA NewB 0 1 4 1 2 5 2 3 6'A':>
Итак, даже в этом случае мы используем список строк для переименования столбцов, но здесь нам также нужно передать параметры axis=1 и inplace=True, поскольку метод set_axis() устанавливает оси с нуля. Это позволяет этому методу переименовывать столбцы.
Как переименовать столбец Pandas: использование лямбда-функций
Когда нам приходится иметь дело со строками, как в случае имён столбцов Pandas, мы можем использовать лямбда-функции для изменения символов текста.
Например, нам может понадобиться переименовать столбцы, просто переведя буквы в нижний регистр. Мы можем сделать это так:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'COLUMN_1': [1, 2, 3], 'COLUMN_2': [4, 5, 6]>) # Renaming columns using a lambda function df = df.rename(columns=lambda x: x.lower()) # Lowercase column names # Print data frame print(df) >>> column_1 column_2 0 1 4 1 2 5 2 3 6'COLUMN_1':>
Как удалить столбец в Pandas
Удаление столбца Pandas (или нескольких) — ещё одна задача, которую нам нужно выполнять очень часто. Например потому, что значения какого-то из столбцов могут оказаться несущественны или иметь значения NULL.
Для выполнения этой задачи у нас есть два метода. Давайте посмотрим на них!
Как удалить столбец в Pandas: метод drop()
Типичный способ удалить столбец в Pandas— использовать метод drop().
Здесь единственное, что нужно иметь в виду, так это решить, хотим ли мы удалить некоторые столбцы и создать новый фрейм данных, или мы хотим удалить их и заменить текущий фрейм данных.
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]>) # Drop one column and substitute the current data frame df = df.drop(‘A’, axis=1) # Print updated data frame print(df) >>> B C 0 4 7 1 5 8 2 6 9'A':>
Итак, мы удалили столбец «А», используя метод drop(), указывающий имя столбца, который мы хотели удалить, и ось ( axis=1 в Pandas указывает вертикальное направление).
В данном случае мы решили заменить фрейм данных df. Итак, в конце процесса фрейм данных df больше не имеет столбца «А».
Если же мы хотим создать другой фрейм данных, допустим, мы вызываем id df_2, мы должны сделать это так:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'D': [10, 11, 12]>) # Drop one column and substitute the current data frame df_2 = df.drop([‘A’, ‘D’], axis=1) # Print new data frame print(df_2) >>> B C 0 4 7 1 5 8 2 6 9'A':>
Итак, в этом случае мы удалили два столбца и создали новый фрейм данных со столбцами «B» и «C».
Это может быть полезно, если мы думаем, что нам может понадобиться исходный фрейм данных df в будущем для дальнейших анализов.
Как удалить столбец в Pandas: используйте индекс столбца
В Pandas столбцы можно выделить с помощью индексов. Это означает, что мы можем удалить их, используя индексы:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'D': [10, 11, 12]>) # Drop one column and append to a new data frame df_2 = df.drop(df.columns[[0, 1]], axis=1) # Print new data frame print(df_2) >>> C D 0 7 10 1 8 11 2 9 12'A':>
Итак, в этом случае мы создали новый фрейм данных только со столбцами «C» и «D» и удалили столбцы «A» и «B», используя их индексы.
Помня, что в Python мы начинаем индексацию с 0 (первый столбец имеет индекс 0 и является столбцом «A»), мы должны сказать, что этот метод может быть не оптимальным, если у нас есть десятки столбцов по простой причине: мы должны найти тот (или те), которые мы хотим отбросить, путём их подсчёта, что может привести к ошибкам.
Как найти уникальные значения в столбце Pandas
Поиск уникальных значений в столбце Pandas — это ещё одна задача, которую нам, возможно, придется выполнять ежедневно, потому что повторяющиеся значения должны обрабатываться особым образом.
В этом случае у нас есть несколько способов реализовать это. Давайте посмотрим на них.
Как найти уникальные значения в столбце Pandas: используйте метод value_counts() для поиска дубликатов
Если мы хотим увидеть, есть ли в столбце Pandas повторяющиеся значения, и мы также хотим узнать, сколько их, мы можем использовать метод value_counts():
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 1, 3], 'B': [4, 5, 6, 7, 8,], 'C': [7, 8, 9, 10, 11]>) # Find unique values in a Pandas column unique_values = df[‘A’].value_counts() # Print unique values print(unique_values) >>> 1 2 3 2 2 1 Name: A, dtype: int64'A':>
Итак, результат здесь говорит о том, что:
- Имя столбца — «A», а все типы — «int64».
- У нас есть две единицы.
- У нас есть две тройки.
- У нас одна двойка.
Данный метод показывает нам значения и сообщает, сколько из них присутствует в интересующем нас столбце.
Как найти уникальные значения в столбце Pandas: используйте метод drop_duplicates() для удаления дубликатов
Если мы хотим удалить повторяющиеся значения в столбце Pandas (потому что мы знаем, что в нём есть дубликаты), мы можем использовать метод drop_duplicates():
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 1, 3], 'B': [4, 5, 6, 7, 8,], 'C': [7, 8, 9, 10, 11]>) # Drop the duplicate values in a Pandas column unique_values = df[‘A’].drop_duplicates() # Print unique values print(unique_values) >>> 0 1 1 2 2 3'A':>
Итак, мы удалили дубликаты из столбца «A», создав новый столбец Pandas с именем unique_values.
Как найти уникальные значения в столбце Pandas: изучение фрейма данных
В этот момент вы можете спросить: « Хорошо, если у меня есть большой фрейм данных с десятками столбцов, как я могу знать, что некоторые столбцы имеют дубликаты?»
Хороший вопрос! Что мы можем сделать, так это сначала изучить весь фрейм данных.
Например, мы можем захотеть увидеть, есть ли дубликаты каких-либо столбцов. Мы можем сделать это так:
import pandas as pd # Creating a DataFrame with duplicates df = pd.DataFrame(<'A': [1, 2, 2, 3, 4, 4], 'B': [5, 6, 6, 7, 8, 8]>) # Check if there are duplicates in the DataFrame has_duplicates = df.duplicated().any() # Print the result print(has_duplicates) >>> True'A':>
Итак, этот код возвращает «True», если есть столбцы с дубликатами, и «False», если их нет.
А как насчет того, чтобы узнать имена столбцов, которые на самом деле имеют дубликаты? Мы можем сделать это так:
import pandas as pd # Creating a DataFrame with duplicates df = pd.DataFrame(<'A': [1, 2, 2, 3, 4, 4], 'B': [5, 6, 6, 7, 8, 8]>) # Find duplicate rows duplicate_rows = df.duplicated() # Print the duplicate rows print(df[duplicate_rows]) >>> A B 2 2 6 5 4 8'A':>
Приведённый выше код показывает:
- Столбцы с дубликатами.
- Значения дубликатов.
Теперь мы можем продолжить расследование с помощью метода value_counts() или удалить их с помощью метода drop_duplicates().
Как преобразовать столбец Pandas в список
Преобразование столбца Pandas в список — полезная функция, которая может дать нам возможность «изолировать» все значения из столбца Pandas, чтобы поместить их в список. Затем мы можем делать всё, что нам может понадобиться со списком, которым легко управлять.
У нас есть две возможности сделать это преобразование.
Как преобразовать столбец Pandas в список: метод list()
Метод list() — это встроенная в Python функция, которая преобразует итерируемый объект в список. Мы можем сделать это так:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 1, 3], 'B': [4, 5, 6, 7, 8,], 'C': [7, 8, 9, 10, 11]>) # Transform Pandas column into a list column_list = list(df[‘B’]) # Print list print(column_list) >>> [4, 5, 6, 7, 8]'A':>
Итак, мы легко извлекли наши значения и поместили их в список.
Как преобразовать столбец Pandas в список: метод to_list()
Для достижения того же результата мы можем использовать метод to_list() от Pandas. Но будьте осторожны: он доступен в Pandas версии 1.2.0 или выше .
Мы можем сделать это так:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [1, 2, 3, 1, 3], 'B': [4, 5, 6, 7, 8,], 'C': [7, 8, 9, 10, 11]>) # Transform Pandas column into a list column_list = df[‘B’].to_list() # Print list print(column_list) >>> [4, 5, 6, 7, 8]'A':>
И, конечно же, мы получили тот же результат, что и раньше.
Как отсортировать фрейм данных Pandas по столбцам
Есть много ситуаций, в которых нам нужно отсортировать наши столбцы. Под сортировкой мы подразумеваем упорядочивание, поэтому мы можем упорядочить данные по возрастанию или по убыванию.
Мы можем достичь этой цели следующими методами:
Как отсортировать фрейм данных Pandas по столбцам: метод sort_values()
Чтобы отсортировать фрейм данных Pandas по столбцам, мы можем использовать метод sort_values():
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [10, 2, 7, 1, 15], 'B': [4, 2, 6, 28, 8,], 'C': [7, 1, 9, 10, 19]>) # Sort df for A in ascending order df.sort_values(‘A’, ascending=True, inplace=True) # Print sorted data frame print(df) >>> A B C 3 1 28 10 1 2 2 1 2 7 6 9 0 10 4 7 4 15 8 19'A':>
Итак, как мы видим, фрейм данных отсортирован по столбцу «А» в порядке возрастания. На самом деле, если мы проверим:
- Во фрейме исходных данных в столбце «А» цифра 1 стоит на 4-й позиции. В столбце «В» число 28 стоит на четвертой позиции.
- В отсортированном фрейме данных в столбце «А» число 1 стоит на первой позиции. В столбце «В» число 28 стоит на первой позиции.
Итак, мы сортируем фрейм данных, но не теряем связи между значениями столбцов.
Очень полезной особенностью этого метода является то, что он может сортировать столбец, помещая NaNs как первые значения. Мы можем сделать это так:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [10, 0, 0, 1, 15], 'B': [4, 2, 6, 28, 8,], 'C': [7, 1, 15, 10, 19]>) # Sort NaNs in the beginning df.sort_values(‘A’, ascending=True, inplace=True) # Print sorted data frame print(df) >>> A B C 1 0 2 1 2 0 6 15 3 1 28 10 0 10 4 7 4 15 8 19'A':>
Как отсортировать фрейм данных Pandas по столбцам: метод sort_index()
Мы также можем отсортировать фрейм данных по значению индекса следующим образом:
import pandas as pd # Creating a DataFrame df = pd.DataFrame(<'A': [10, 2, 7, 1, 15], 'B': [4, 2, 6, 28, 8,], 'C': [7, 1, 9, 10, 19]>) # Sort data frame for index df.sort_index(inplace=True) # Print sorted data frame print(df) >>> A B C 0 10 4 7 1 2 2 1 2 7 6 9 3 1 28 10 4 15 8 19'A':>
И, как мы видим, индексы упорядочены (по возрастанию).
Заключение
В этой статье мы рассмотрели 7 основных операций со столбцами Pandas, которые мы выполняем едва ли не каждый день.
Это руководство поможет вам сэкономить много времени, если вы его сохраните, потому что мы выполняли одни и те же задачи по-разному, так что вам больше не придётся искать их в Google.
Топ-10 вопросов о Pandas на StackOverflow
Объем структурированных табличных данных увеличивается с каждым днем. Именно поэтому дата-сайентисту так важно уметь анализировать табличные данные с помощью Pandas. Хотя самообучение — отличный способ повысить квалификацию, иногда может пригодиться и опыт коллег, которые быстрее нашли ответы на актуальные вопросы. Хотите продвинуться в этом направлении и “прокачать” навыки работы в Pandas? Сделать это вам помогут решения, которые отвечают на десять вопросов из категории Pandas на StackOverflow, собравших наибольшее количество голосов. Код для этой статьи можно найти здесь. Примечание: Приведенные здесь решения созданы автором Avi Chawla. Весь пользовательский контент на StackOverflow лицензирован для коммерческого применения (CC BY 4.0) и доступен для свободного использования.
1. Как выполнить итерации по строкам в Pandas DataFrame?
Итерация (также известная как цикл) — посещение каждой строки в DataFrame по отдельности с выполнением определенной операции.
Рассмотрим приведенный ниже DataFrame:
df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) col1 col2 0 1 A 1 2 B 2 3 C
В Pandas можно выполнять итерацию тремя способами, используя range(len(df)) , iterrows() и itertuples() .
print("Method 1:", end = " ") for index in range(len(df)): print(df["col1"][index], end = " ") print("\nMethod 2:", end = " ") for index, row in df.iterrows(): print(row["col1"], end = " ") print("\nMethod 3:", end = " ") for row in df.itertuples(): print(row.col1, end = " ") Method 1: 1 2 3 Method 2: 1 2 3 Method 3: 1 2 3
2. Как выбрать строки из DataFrame на основе значений столбцов?
Этот вопрос касается проблемы фильтрации DataFrame на основе условия. Чтобы ознакомиться с популярными методами фильтрации, рассмотрите приведенный ниже DataFrame:
df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) col1 col2 0 1 A 1 2 B 2 3 C
Некоторые методы фильтрации DataFrame реализованы ниже:
## Method 1: Filter on one column print(df[df.col1>2]) ## Method 2: Filter on multiple columns print(df[df.col1>1][df.col2 == "B"]) ## Method 3: Filter from list print(df[df.col2.isin(["A", "B"])]) ## Method 4: using df.query() print(df.query('col1 > 2')) col1 col2 2 3 C col1 col2 1 2 B col1 col2 0 1 A 1 2 B col1 col2 2 3 C
- Метод 1: фильтрация по одному столбцу.
- Метод 2: фильтрация по нескольким столбцам.
- Метод 3: фильтрация из списка.
- Метод 4: использование df.query() .
Метод isin() , использованный выше, принимает список значений фильтрации. С другой стороны, метод query() оценивает строковое выражение для фильтрации строк из DataFrame.
3. Как переименовать столбцы в Pandas?
В данном случае задача состоит в том, чтобы изменить имена заголовков столбцов. Рассмотрим тот же DataFrame, что и выше.
df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) col1 col2 0 1 A 1 2 B 2 3 C
Можно изменить имя col1 на col3 с помощью метода rename() следующим образом:
print(df.rename(columns = )) col3 col2 0 1 A 1 2 B 2 3 C
В этом случае исходный DataFrame остается неизменным. Если не нужно создавать новый DataFrame, используйте inplace=True , как показано ниже:
df.rename(columns = , inplace = True) print(df) col3 col2 0 1 A 1 2 B 2 3 C
При использовании метода rename() нужно создать мэппинг от old-column-name к new-column-name в виде словаря. Если имя столбца должно быть оставлено без изменений, его не нужно указывать в словаре.
4. Как удалить столбец из Pandas DataFrame?
Чтобы удалить один или несколько столбцов из DataFrame, можно использовать метод drop() и передать в виде списка столбцы, которые нужно удалить. Это показано в Method 1 и Method 2 ниже. В качестве альтернативы, как показано в Method 3 , можно выбрать подмножество столбцов, которые нужно сохранить в конечном DataFrame.
df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) col1 col2 0 1 A 1 2 B 2 3 C
## Method 1: Create a new DataFrame print(df.drop(columns = ["col1"]), end = "\n\n") ## Method 2: Drop columns from the original DataFrame df.drop(columns = ["col1"], inplace = True) print(df, end = "\n\n") ## Method 3: Select the required columns df = df[["col2"]] print(df) col2 0 A 1 B 2 C col2 0 A 1 B 2 C col2 0 A 1 B 2 C
- Метод 1: создайте новый DataFrame.
- Метод 2: удалите столбцы из исходного DataFrame.
- Метод 3: выберите необходимые столбцы.
Синтаксис метода drop() аналогичен синтаксису метода rename() , с той лишь разницей, что аргумент columns принимает список столбцов, которые нужно удалить.
5. Как получить количество строк в Pandas DataFrame?
Этот вопрос ориентирован на знание формы Pandas DataFrame. Чтобы ответить на него, рассмотрим следующий DataFrame с тремя строками и двумя столбцами:
df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) col1 col2 0 1 A 1 2 B 2 3 C
Чтобы найти форму, используйте атрибут shape для DataFrame следующим образом:
print("Shape of the DataFrame:", df.shape) print("Number of rows:", df.shape[0]) print("Number of columns:", df.shape[1]) Shape of the DataFrame: (3, 2) Number of rows: 3 Number of columns: 2
Атрибут shape возвращает кортеж python . Первый элемент соответствует количеству строк, а второй обозначает количество столбцов.
6. Как выбрать несколько столбцов в Pandas DataFrame?
Суть данной задачи заключается в том, чтобы выбрать более одного столбца из DataFrame для дальнейшей обработки. Например, если исходный DataFrame состоит из трех столбцов, а именно col1 , col2 и col3 , как выбрать только col1 и col3 ?
df = pd.DataFrame([[1, "A", 1.1], [2, "B", 1.4], [3, "C", 1.9]], columns = ["col1", "col2", "col3"]) print(df) col1 col2 col3 0 1 A 1.1 1 2 B 1.4 2 3 C 1.9
Это можно сделать двумя способами:
## Method 1: select the required columns df_filtered = df[["col1", "col3"]] print(df_filtered) ## Method 2: Using column indexes in iloc[] df_filtered = df.iloc[:, [0,2]] print(df_filtered) col1 col3 0 1 1.1 1 2 1.4 2 3 1.9 col1 col3 0 1 1.1 1 2 1.4 2 3 1.9
- Метод 1: выберите требуемые столбцы.
- Метод 2: используйте индексы столбцов в iloc[] .
Список [0,2] в iloc интерпретируется как столбцы, расположенные под 0-м ( col1 ) и 2-м ( col3 ) индексами.
7. Как изменить порядок столбцов DataFrame?
Изменение порядка столбцов в DataFrame означает перестановку столбцов без изменения их количества (или формы DataFrame).
Рассмотрим приведенный ниже DataFrame. Задача состоит в том, чтобы расположить столбцы в порядке col1 — col2 — col3 .
df = pd.DataFrame([[1, "A", 1.1], [2, "B", 1.4], [3, "C", 1.9]], columns = ["col2", "col3", "col1"]) print(df) col2 col3 col1 0 1 A 1.1 1 2 B 1.4 2 3 C 1.9
Это можно сделать двумя способами:
## Method 1: select all the columns in order df_new = df[["col1", "col2", "col3"]] print(df_new) ## Method 2: Using all column indexes in iloc[] df_new = df.iloc[:, [2,0,1]] print(df_new) col1 col2 col3 0 1.1 1 A 1 1.4 2 B 2 1.9 3 C col1 col2 col3 0 1.1 1 A 1 1.4 2 B 2 1.9 3 C
- Метод 1: выберите все столбцы по порядку.
- Метод 2: используйте все индексы столбцов в iloc[] .
Список [2,0,1] в iloc интерпретируется как столбцы, расположенные под 2-м ( col1 ), 0-м ( col2 ) и 1-м ( col3 ) индексами.
8. Как изменить тип столбца в Pandas?
Цель этого вопроса — узнать, как изменить тип данных столбца. Рассмотрим приведенный ниже DataFrame, в котором col1 содержит целочисленные значения в виде строк.
df = pd.DataFrame([["1", "A"], ["2", "B"], [3, "C"]], columns = ["col1", "col2"]) print(df) print("Data Type of col1:", df.col1.dtype) col1 col2 0 1 A 1 2 B 2 3 C Data Type of col1: object
Текущий тип данных col1 — это object (то же самое, что и string ). Задача состоит в том, чтобы изменить тип данных col1 со string на integer . Изменить тип данных можно следующим образом:
df["new_col1"] = df["col1"].astype(int) print(df) print("Data Type of new_col1:", df.new_col1.dtype) col1 col2 new_col1 0 1 A 1 1 2 B 2 2 3 C 3 Data Type of new_col1: int64
Чтобы не создавать столбец, можно хранить новые значения в том же столбце:
df["col1"] = df["col1"].astype(int) print(df) print("Data Type of col1:", df.col1.dtype) col1 col2 new_col1 0 1 A 1 1 2 B 2 2 3 C 3 Data Type of col1: int64
При использовании метода astype() необходимо убедиться в том, что преобразование исходного типа данных в целевой выполнимо. Например, нельзя преобразовать столбец string алфавитов в тип данных integer (целочисленный) или float (плавающий).
9. Как получить список из заголовков столбцов Pandas DataFrame?
Задача состоит в том, чтобы получить названия всех столбцов в DataFrame в виде списка. Рассмотрим приведенный ниже DataFrame:
df = pd.DataFrame([[1, "A", 1.1], [2, "B", 1.4], [3, "C", 1.9]], columns = ["col1", "col2", "col3"]) print(df) col1 col2 col3 0 1 A 1.1 1 2 B 1.4 2 3 C 1.9
Чтобы получить список столбцов, используйте атрибут columns , как показано ниже:
print(«All column names:», df.columns) print(«Type of df.columns: «, type(df.columns)) All column names: Index([‘col1’, ‘col2’, ‘col3′], dtype=’object’) Type of df.columns:
Вышеуказанное возвращает столбец как объект Index . Чтобы получить его в виде списка, приведите полученные результаты к списку:
list(df.columns) ['col1', 'col2', 'col3']
10. Как создать Pandas Dataframe путем добавления одной строки за раз?
В этом вопросе задача заключается в том, чтобы добавлять одну строку за раз к изначально пустому DataFrame. Предположим, что у нас есть приведенный ниже пустой DataFrame и список списков data , где каждый отдельный подсписок будет добавлен в DataFrame в виде строки.
df = pd.DataFrame(columns = ["col1", "col2", "col3"]) print(df) data = [[1, "A", 1.1], [2, "B", 1.4], [3, "C", 1.9]] Empty DataFrame Columns: [col1, col2, col3] Index: []
Чтобы добавлять по одной строке за раз, нужно выполнить итерацию по списку data и добавить новую строку следующим образом:
for i in data: df.loc[df.shape[0]] = i print(df) col1 col2 col3 0 1 A 1.1 1 2 B 1.4 2 3 C 1.9
Как обсуждалось выше в вопросе 5, первый элемент кортежа, возвращаемого атрибутом shape , обозначает количество строк в DataFrame. Поэтому каждая новая строка, добавленная в DataFrame, обеспечивает создание нового индекса для следующей строки.
- Как превратить Google Таблицы в базу данных с помощью Python
- Эффективное итерирование по строкам в Pandas DataFrame
- Руководство по созданию интерактивных визуализаций на Python
Читайте нас в Telegram и Дзен
