Как итерироваться по pandas dataframe: руководство по шагам

Как перебрать данные в pandas DataFrame?

import pandas as pd

df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})

# 1. Используйте цикл for для перебора строк
for index, row in df.iterrows():
    print(row['col1'], row['col2'])

# 2. Используйте метод itertuples для более эффективного перебора
for row in df.itertuples(index=False):
    print(row.col1, row.col2)

# 3. Используйте итератор iterrows для получения кортежей с парами (индекс, серия)
for index, series in df.iterrows():
    print(index, series['col1'], series['col2'])

Детальный ответ

Как перебрать данные в pandas dataframe

В этой статье мы рассмотрим, как перебирать или итерировать по данным в pandas dataframe. Pandas - это библиотека Python, которая предоставляет удобные и эффективные инструменты для работы с данными, включая возможность эффективно обрабатывать и анализировать табличные данные.

1. Использование цикла for

Один из способов перебрать данные в pandas dataframe - это использовать цикл for. Мы можем перебирать строки или столбцы dataframe, а также комбинировать различные методы для обработки и анализа данных.

Перебор строк

Чтобы перебрать строки dataframe, мы можем использовать метод iterrows(). Этот метод возвращает кортеж, содержащий индекс строки и серию данных для каждой строки.


import pandas as pd

# Создание примера dataframe
data = {'Name': ['John', 'Emma', 'Ryan'],
        'Age': [25, 28, 32],
        'City': ['New York', 'San Francisco', 'London']}

df = pd.DataFrame(data)

# Перебор строк с использованием iterrows()
for index, row in df.iterrows():
    print('Индекс строки:', index)
    print('Данные строки:', row)
    print()
    

В этом примере мы создали dataframe, содержащий имена, возраст и города. Затем мы использовали метод iterrows() для перебора строк dataframe. Внутри цикла мы выводим индекс строки и данные каждой строки.

Перебор столбцов

Чтобы перебрать столбцы dataframe, мы можем использовать цикл for, обращаясь к каждому столбцу по его имени.


import pandas as pd

# Создание примера dataframe
data = {'Name': ['John', 'Emma', 'Ryan'],
        'Age': [25, 28, 32],
        'City': ['New York', 'San Francisco', 'London']}

df = pd.DataFrame(data)

# Перебор столбцов
for column in df:
    print('Название столбца:', column)
    print('Данные столбца:', df[column])
    print()
    

В этом примере мы использовали цикл for для перебора столбцов dataframe. Мы обратились к каждому столбцу по его имени и вывели название столбца и данные этого столбца.

2. Использование метода apply()

Другой способ перебрать данные в pandas dataframe - это использовать метод apply(). Этот метод позволяет применять функцию к каждому элементу dataframe или к каждой строке или столбцу.

Применение функции к каждому элементу

Чтобы применить функцию к каждому элементу dataframe, мы можем использовать метод applymap(). Этот метод применяет заданную функцию ко всем элементам dataframe.


import pandas as pd

# Создание примера dataframe
data = {'Name': ['John', 'Emma', 'Ryan'],
        'Age': [25, 28, 32],
        'City': ['New York', 'San Francisco', 'London']}

df = pd.DataFrame(data)

# Применение функции к каждому элементу
df_applied = df.applymap(lambda x: x.upper() if isinstance(x, str) else x)
print(df_applied)
    

В этом примере мы использовали метод applymap(), чтобы применить функцию lambda к каждому элементу dataframe. В нашем случае, функция преобразует строки в верхний регистр, если элемент является строкой, и оставляет числовые значения без изменений.

Применение функции к каждой строке или столбцу

Чтобы применить функцию к каждой строке или столбцу dataframe, мы можем использовать метод apply(). Этот метод применяет заданную функцию к каждой строке или столбцу.


import pandas as pd

# Создание примера dataframe
data = {'Name': ['John', 'Emma', 'Ryan'],
        'Age': [25, 28, 32],
        'City': ['New York', 'San Francisco', 'London']}

df = pd.DataFrame(data)

# Применение функции к каждой строке
df_applied_row = df.apply(lambda row: row['Name'].upper() + ', ' + str(row['Age']), axis=1)
print(df_applied_row)

# Применение функции к каждому столбцу
df_applied_column = df.apply(lambda column: column.max(), axis=0)
print(df_applied_column)
    

В этом примере мы использовали метод apply(), чтобы применить функции к каждой строке и столбцу dataframe. В первом случае, мы объединяем значения столбцов "Name" и "Age" для каждой строки. Во втором случае, мы находим максимальное значение для каждого столбца.

3. Использование индексирования по массиву

Еще один способ перебрать данные в pandas dataframe - это использовать индексирование по массиву. Мы можем преобразовать dataframe в массив numpy и перебирать элементы массива.


import pandas as pd

# Создание примера dataframe
data = {'Name': ['John', 'Emma', 'Ryan'],
        'Age': [25, 28, 32],
        'City': ['New York', 'San Francisco', 'London']}

df = pd.DataFrame(data)

# Индексирование по массиву
array = df.values
for row in array:
    print('Данные строки:', row)
    print()
    

В этом примере мы преобразовали dataframe в массив numpy с помощью атрибута values. Затем мы перебираем элементы массива и выводим данные каждой строки.

Заключение

В этой статье мы рассмотрели различные способы перебора данных в pandas dataframe. Мы узнали, как использовать цикл for для перебора строк и столбцов, как применять функции с помощью методов apply() и applymap(), а также как использовать индексирование по массиву для перебора элементов dataframe.

Надеюсь, этот материал будет полезен и поможет вам лучше понять, как эффективно перебирать данные в pandas dataframe.

Видео по теме

Different Ways to Iterate Over Rows in Pandas DataFrame | GeeksforGeeks

Loop / Iterate over pandas DataFrame (2020)

Python 3 Programming Tutorial 11 | Loops | How to iterate over each row of python dataframe

Похожие статьи:

Как итерироваться по pandas dataframe: руководство по шагам