Python
Легко изменять названия столбцов в Pandas: руководство для начинающих

Легко изменять названия столбцов в Pandas: руководство для начинающих

MoeNagy Dev

Изменение названий столбцов в Pandas

Обзор Pandas DataFrame

Pandas DataFrame - это двумерная табличная структура данных с рядами и столбцами. Каждый столбец в DataFrame может иметь разный тип данных, и столбцы можно индивидуально получать доступ и манипулировать ими.

Понимание структуры Pandas DataFrame

import pandas as pd
 
# Создание примерного DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
 
df = pd.DataFrame(data)
print(df)

Вывод:

       Name  Age       City
0    Alice   25  New York
1      Bob   30    London
2  Charlie   35     Paris

Доступ и манипулирование данными столбцов

Вы можете получить доступ к отдельным столбцам DataFrame, используя название столбца как атрибут или как ключ в квадратных скобках:

print(df['Name'])
print(df.Age)

Вывод:

0    Alice
1      Bob
2  Charlie
Name: Name, dtype: object
0    25
1    30
2    35
Name: Age, dtype: int64

Вы также можете присваивать новые значения столбцу:

df['Country'] = ['USA', 'UK', 'France']
print(df)

Вывод:

       Name  Age       City Country
0    Alice   25  New York     USA
1      Bob   30    London      UK
2  Charlie   35     Paris   France

Переименование столбцов

Переименование столбцов в Pandas DataFrame - это распространенная задача при работе с данными. Существует несколько способов это сделать.

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

Метод rename() позволяет переименовать один или несколько столбцов. Вы можете передать словарь или функцию в параметр `.Вот перевод на русский язык с сохранением оригинального кода:

# Переименование одного столбца с использованием словаря
df = df.rename(columns={'Name': 'Full Name'})
print(df)

Вывод:

       Full Name  Age       City Country
0        Alice   25  New York     USA
1          Bob   30    London      UK
2      Charlie   35     Paris   France

Передача словаря в rename()

Вы можете передать словарь в параметр columns, где ключи - это старые названия столбцов, а значения - новые названия столбцов.

# Переименование нескольких столбцов с использованием словаря
df = df.rename(columns={'Full Name': 'Participant', 'Age': 'Years Old'})
print(df)

Вывод:

       Participant  Years Old       City Country
0        Alice     25  New York     USA
1          Bob     30    London      UK
2      Charlie     35     Paris   France

Передача функции в rename()

Вы также можете передать функцию в параметр columns, которая будет применена к каждому названию столбца.

# Переименование столбцов с использованием функции
df = df.rename(columns=lambda x: x.lower().replace(' ', '_'))
print(df)

Вывод:

       participant  years_old       city country
0        alice     25  New York     USA
1          bob     30    London      UK
2      charlie     35     Paris   France

Переименование нескольких столбцов одновременно

Вы можете переименовать несколько столбцов, передав словарь или список кортежей в параметр columns.

# Переименование нескольких столбцов одновременно
df = df.rename(columns={'participant': 'name', 'years_old': 'age'})
print(df)

Вывод:

       name  age       city country
0    alice   25  New York     USA
1      bob   30    London      UK
2  charlie   35     Paris   France

Непосредственное изменение названий столбцов

Вы также можете напрямую изменять названия столбцов, обращаясь к атрибуту columns DataFrame.

Доступ и обновление названий столбцов

# Доступ и обновление названий столбцов
df.columns = ['Name', 'Age', 'Location', 'Nationality']
print(df)

Вывод: `.Вот перевод на русский язык:

Имя Возраст Местоположение Национальность 0 alice 25 Нью-Йорк США 1 bob 30 Лондон Великобритания 2 charlie 35 Париж Франция

Использование списочного включения для переименования столбцов

Вы можете использовать списочное включение для применения преобразования к именам столбцов.

# Переименование столбцов с использованием списочного включения
df.columns = [col.upper() for col in df.columns]
print(df)

Вывод:

       ИМЯ  ВОЗРАСТ    МЕСТОПОЛОЖЕНИЕ НАЦИОНАЛЬНОСТЬ
0    alice   25  Нью-Йорк         США
1      bob   30    Лондон           Великобритания
2  charlie   35     Париж        Франция

Обработка отсутствующих или дублирующихся имен столбцов

Важно обрабатывать случаи, когда имена столбцов отсутствуют или дублируются.

Определение и устранение отсутствующих имен столбцов

# Создание DataFrame с отсутствующим именем столбца
data = {'Имя': ['Алиса', 'Боб', 'Чарли'], 'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

Вывод:

       Имя  Возраст
0    Алиса       25
1      Боб       30
2    Чарли       35

Чтобы устранить отсутствующее имя столбца, вы можете использовать метод rename() или присвоить новое имя непосредственно атрибуту columns.

# Переименование отсутствующего столбца
df = df.rename(columns={None: 'Новый столбец'})
print(df)

Вывод:

       Имя  Возраст Новый столбец
0    Алиса       25           NaN
1      Боб       30           NaN
2    Чарли       35           NaN

Разрешение дублирующихся имен столбцов

# Создание DataFrame с дублирующимися именами столбцов
data = {'Имя': ['Алиса', 'Боб', 'Чарли'], 'Возраст': [25, 30, 35], 'Имя': [1, 2, 3]}
df = pd.DataFrame(data)
print(df)

Вывод:

       Имя  Возраст  Имя
0    Алиса       25    1
1      Боб       30    2
2    Чарли       35    3

Чтобы разрешить дублирующиеся имена столбцов, вы можете использовать метод rename() или метод set_axis().

# Разрешение дублирующихся имен столбцов
df = df.rename(columns={'Имя_x': 'Имя', 'Имя_y': 'Имя_2'})
print(df)

Вывод:

       Имя  Возраст  Имя_2
0    Алиса       25      1
1      Боб       30      2
2    Чарли       35      3
```Пожалуйста, вот перевод на русский язык:

Боб   30       2
2  Чарли   35       3

## Расширенные техники переименования столбцов

Pandas предоставляет дополнительные техники для более сложных сценариев переименования столбцов.

### Переименование столбцов на основе определенного шаблона

```python
# Переименование столбцов на основе шаблона
data = {'feature_1': [1, 2, 3], 'feature_2': [4, 5, 6], 'target': [10, 20, 30]}
df = pd.DataFrame(data)
df = df.rename(columns=lambda x: x.replace('feature_', 'col_'))
print(df)

Вывод:

   col_1  col_2  target
0      1      4      10
1      2      5      20
2      3      6      30

Переименование столбцов с использованием регулярных выражений

# Переименование столбцов с использованием регулярных выражений
data = {'feature1_a': [1, 2, 3], 'feature1_b': [4, 5, 6], 'feature2_a': [7, 8, 9]}
df = pd.DataFrame(data)
df = df.rename(columns=lambda x: re.sub(r'feature(\d+)_(\w+)', r'col_\1_\2', x))
print(df)

Вывод:

   col_1_a  col_1_b  col_2_a
0        1        4        7
1        2        5        8
2        3        6        9

Переименование столбцов в многоуровневом индексе столбцов

# Переименование столбцов в многоуровневом индексе столбцов
data = {('group1', 'A'): [1, 2, 3], ('group1', 'B'): [4, 5, 6], ('group2', 'C'): [7, 8, 9]}
df = pd.DataFrame(data)
df.columns = pd.MultiIndex.from_tuples([('Group 1', 'Feature A'), ('Group 1', 'Feature B'), ('Group 2', 'Feature C')])
df = df.rename(columns=lambda x: (x[0].replace('Group', 'G'), x[1]))
print(df)

Вывод:

   (G 1, Feature A)  (G 1, Feature B)  (G 2, Feature C)
0                 1                 4                 7
1                 2                 5                 8
2                 3                 6                 9

Переименование столбцов при создании DataFrame

Вы также можете переименовать столбцы при создании Pandas DataFrame.

Передача имен столбцов при инициализации DataFrame

# Переименование столбцов при инициализации DataFrame
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
pri.Вот перевод на русский язык:
 

A B C 0 1 2 3 1 4 5 6 2 7 8 9


### Переименование столбцов при чтении данных из файлов

```python
# Переименование столбцов при чтении данных из файла
df = pd.read_csv('data.csv', names=['Имя', 'Возраст', 'Город'])
print(df)

Сохранение порядка столбцов после переименования

При переименовании столбцов важно учитывать порядок столбцов.

Сохранение исходного порядка столбцов

# Сохранение исходного порядка столбцов
df = df[['Имя', 'Возраст', 'Город']]
print(df)

Вывод:

       Имя  Возраст       Город
0    Alice       25  New York
1      Bob       30    London
2  Charlie       35     Paris

Изменение порядка столбцов после переименования

# Изменение порядка столбцов после переименования
df = df[['Город', 'Имя', 'Возраст']]
print(df)

Вывод:

       Город       Имя  Возраст
0  New York    Alice       25
1    London      Bob       30
2     Paris  Charlie       35

Применение переименования к нескольким DataFrame

При работе с несколькими связанными DataFrame часто необходимо обеспечить согласованность соглашений об именовании столбцов.

Переименование столбцов в связанных DataFrame

# Переименование столбцов в связанных DataFrame
df1 = pd.DataFrame({'Имя': ['Alice', 'Bob'], 'Возраст': [25, 30]})
df2 = pd.DataFrame({'Имя': ['Charlie', 'David'], 'Город': ['New York', 'London']})
 
df1 = df1.rename(columns={'Имя': 'Участник', 'Возраст': 'Лет'})
df2 = df2.rename(columns={'Имя': 'Участник', 'Город': 'Местоположение'})
 
print(df1)
print(df2)

Вывод:

   Участник  Лет
0    Alice   25
1      Bob   30

   Участник Местоположение
0   Charlie   New York
1     David     London

Обеспечение согласованности соглашений об именовании столбцов

# Обеспечение согласованности соглашений об именовании столбцов
df1 = df1.rename(columns={'Участник': 'имя', 'Лет': 'возраст'})
df2 = df2.rename(columns={'Участник': 'имя', 'Местоположение': 'город'})
 
print(df1)
print(df2)

Вывод:

      имя  возраст
0   Alice       25
1     Bob       30

      имя     город
0 .
```Чарли  Нью-Йорк
1    Дэвид   Лондон

Автоматизация рабочих процессов переименования столбцов

Чтобы сделать переименование столбцов более эффективным, вы можете разработать многоразовые функции и интегрировать их в ваши конвейеры обработки данных.

Циклы и условные операторы

Циклы и условные операторы являются важными в Python для управления потоком вашей программы и автоматизации повторяющихся задач. Давайте исследуем некоторые распространенные структуры циклов и условные операторы.

Циклы for

Циклы for используются для итерации по последовательности (такой как список, кортеж или строка) или другим итерируемым объектам. Вот пример цикла for, который итерирует по списку чисел и печатает каждое:

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)

Вывод:

1
2
3
4
5

Вы также можете использовать функцию range() для создания последовательности чисел для итерации:

for i in range(1, 6):
    print(i)

Вывод:

1
2
3
4
5

Циклы while

Циклы while используются для выполнения блока кода, пока определенное условие остается истинным. Вот пример цикла while, который считает от 5 до 1:

count = 5
while count > 0:
    print(count)
    count -= 1
print("Blast off!")

Вывод:

5
4
3
2
1
Blast off!

Условные операторы

Условные операторы, такие как if-elif-else, позволяют принимать решения на основе определенных условий. Вот пример простого оператора if-else:

age = 18
if age >= 18:
    print("You are an adult.")
else:
    print("You are a minor.")

Вывод:

You are an adult.

Вы также можете использовать elif для проверки нескольких условий:

score = 85
if score >= 90:
    print("You got an A!")
elif score >= 80:
    print("You got a B.")
elif score >= 70:
    print("You got a C.")
else:
    print("You need to improve.")

Вывод:

You got a B.

Вложенные циклы и условные операторы

Вы также можете вкладывать циклы и условные операторы друг в друга, чтобы создавать более сложную логику. Вот пример.Вот перевод на русский язык с сохранением оригинального кода:

Пример вложенного цикла for, который проверяет, является ли число простым:

for num in range(2, 21):
    # Предполагаем, что число является простым
    is_prime = True
    for i in range(2, int(num ** 0.5) + 1):
        # Если число делится на i без остатка, оно не является простым
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(f"{num} является простым числом.")
    else:
        print(f"{num} не является простым числом.")

Вывод:

2 является простым числом.
3 является простым числом.
4 не является простым числом.
5 является простым числом.
6 не является простым числом.
7 является простым числом.
8 не является простым числом.
9 не является простым числом.
10 не является простым числом.
11 является простым числом.
12 не является простым числом.
13 является простым числом.
14 не является простым числом.
15 не является простым числом.
16 не является простым числом.
17 является простым числом.
18 не является простым числом.
19 является простым числом.
20 не является простым числом.

Функции

Функции являются фундаментальным строительным блоком Python. Они позволяют группировать связанный код вместе, делая ваши программы более организованными, модульными и многоразовыми.

Определение функций

Чтобы определить функцию в Python, вы используете ключевое слово def за которым следует имя функции, набор скобок и двоеточие. Код, составляющий тело функции, должен быть отступлен.

Вот пример простой функции, которая приветствует пользователя:

def greet(name):
    print(f"Привет, {name}!")
 
greet("Алиса")

Вывод:

Привет, Алиса!

Вы также можете определять функции, которые принимают несколько аргументов:

def add_numbers(a, b):
    return a + b
 
result = add_numbers(5, 3)
print(result)

Вывод:

8

Аргументы по умолчанию и именованные аргументы

Функции могут иметь аргументы по умолчанию, которые используются, когда параметр не предоставляется при вызове функции. Вот пример:

def greet(name, message="Привет"):
    print(f"{message}, {name}!")
 
greet("Алиса")
greet("Боб", "Здравствуй")

Вывод:

Привет, Алиса!
Здравствуй, Боб!

Вы также можете использовать именованные аргументы при вызове функций, что может сделать код более читаемым:

def calculat.Вот перевод на русский язык:
 
e_area(длина, ширина):
    возвращает длина * ширина
 
# Использование именованных аргументов
площадь = calculate_area(длина=5, ширина=3)
print(площадь)
 

Вывод:

15

Область видимости и время жизни переменных

Область видимости переменной определяет, где она может быть доступна в вашем коде. Python имеет локальную и глобальную область видимости. Переменные, определенные внутри функции, имеют локальную область видимости, в то время как переменные, определенные вне функций, имеют глобальную область видимости.

Вот пример, демонстрирующий разницу:

global_variable = "Я глобальная!"
 
def my_function():
    local_variable = "Я локальная."
    print(global_variable)
    print(local_variable)
 
my_function()
print(global_variable)
# print(local_variable)  # Это вызовет ошибку

Вывод:

Я глобальная!
Я локальная.
Я глобальная!

Обратите внимание, что local_variable не может быть доступна за пределами my_function(), потому что она имеет локальную область видимости.

Рекурсивные функции

Рекурсивные функции - это функции, которые вызывают сами себя для решения задачи. Вот пример рекурсивной функции, вычисляющей факториал числа:

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)
 
print(factorial(5))

Вывод:

120

В этом примере функция factorial() вызывает сама себя с меньшим значением n до тех пор, пока не достигнет базового случая (когда n равно 0 или 1), в этот момент она возвращает 1.

Модули и пакеты

В Python модули и пакеты используются для организации и повторного использования кода. Модули - это отдельные файлы Python, а пакеты - это коллекции связанных модулей.

Импорт модулей

Чтобы использовать код из модуля, вам нужно его импортировать. Вот пример импорта встроенного модуля math:

import math
 
print(math.pi)
print(math.sqrt(16))

Вывод:

3.141592653589793
4.0

Вы также можете импортировать конкретные функции или переменные из модуля:

from math import pi, sqrt
 
print(pi)
print(sqrt(16))

Вывод:

3.141592653589793
4.0
```Вот перевод на русский язык:

Чтобы создать свой собственный модуль, просто сохраните ваш Python-код в файле с расширением `.py`. Например, давайте создадим модуль под названием `my_module.py` с функцией под названием `greet()`:

```python
# my_module.py
def greet(name):
    print(f"Привет, {name}!")

Затем вы можете импортировать и использовать функцию greet() в другом Python-файле:

# main.py
import my_module
 
my_module.greet("Алиса")

Вывод:

Привет, Алиса!

Пакеты

Пакеты используются для организации связанных модулей в иерархическую структуру. Чтобы создать пакет, вам нужно создать каталог с файлом __init__.py. Вот пример:

my_package/
    __init__.py
    math_utils.py
    string_utils.py

Файл __init__.py может быть пустым, но он необходим, чтобы Python распознал каталог как пакет.

Затем вы можете импортировать функции из модулей внутри пакета:

# main.py
from my_package.math_utils import add
from my_package.string_utils import reverse
 
print(add(5, 3))
print(reverse("привет"))

Вывод:

8
тевирп

Заключение

В этом руководстве вы узнали об основных концепциях Python, таких как циклы, условные операторы, функции, модули и пакеты. Эти инструменты являются фундаментальными для построения надежных и динамичных программ на Python.

Помните, что лучший способ улучшить ваши навыки Python - это практиковаться, экспериментировать и продолжать учиться. Исследуйте обширную экосистему библиотек и модулей Python и не стесняйтесь обращаться к официальной документации Python для более подробной информации.

Счастливого кодирования!

MoeNagy Dev.