Python
September 26, 2023

10 простых методов обработки данных через Pandas на Python

1. Чтение и запись данных

Для чтения данных из файла можно использовать метод read_csv(). Этот метод принимает в качестве аргумента путь к файлу и возвращает объект DataFrame.

import pandas as pd

# Чтение данных из файла CSV
df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Для записи данных в файл можно использовать метод to_csv(). Этот метод принимает в качестве аргумента путь к файлу и возвращает None.

# Запись данных в файл CSV
df.to_csv('data.csv')

До:

import pandas as pd

# Данные
data = {
    'name': ['John', 'Mary', 'Peter'],
    'age': [21, 22, 23]
}

# Вывод данных
print(data)

Исходник:

{'name': ['John', 'Mary', 'Peter'], 'age': [21, 22, 23]}

После:

import pandas as pd

# Чтение данных из файла CSV
df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Результат:

   name  age
0  John  21
1  Mary  22
2  Peter  23

2. Фильтрация данных

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

# Фильтрация данных по возрасту
df = df[df['age'] > 21]

# Вывод данных
print(df)

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

df = pd.read_csv('data.csv')

# Фильтрация данных по возрасту
df = df[df['age'] > 21]

# Вывод данных
print(df)

Результат:

   name  age
1  Mary  22
2  Peter  23

3. Сортировка данных

Для сортировки данных по определенному столбцу можно использовать метод sort_values().

# Сортировка данных по возрасту
df = df.sort_values('age')

# Вывод данных
print(df)

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

df = pd.read_csv('data.csv')

# Сортировка данных по возрасту
df = df.sort_values('age')

# Вывод данных
print(df)

Результат:

   name  age
2  Peter  23
1  Mary  22
0  John  21

4. Агрегация данных

Для агрегации данных по определенному столбцу можно использовать метод agg().

# Расчет среднего возраста
df['age'].agg('mean')

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

df = pd.read_csv('data.csv')

# Расчет среднего возраста
df['age'].agg('mean')

Результат:

22.0

5. Визуализация данных

Для визуализации данных можно использовать библиотеку matplotlib.

import matplotlib.pyplot as plt

# График распределения возраста
plt.hist(df['age'])
plt.show()

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

import matplotlib.pyplot as plt

df = pd.read_csv('data.csv')

# График распределения возраста
plt.hist(df['age'])
plt.show()

6. Обработка пропусков

Для обработки пропусков в данных можно использовать методы fillna() или dropna().

# Замена пропусков средним значением
df['age'].fillna(df['age'].mean(), inplace=True)

# Удаление строк с пропусками
df.dropna(inplace=True)

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  NaN

После:

df = pd.read_csv('data.csv')

# Замена пропусков средним значением
df['age'].fillna(df['age'].mean(), inplace=True)

# Вывод данных
print(df)

Результат:

   name  age
0  John  21
1  Mary  22
2  Peter  22.0

7. Работа с временными данными

Для работы с временными данными можно использовать библиотеку datetime.

import datetime

# Преобразование строки в дату
df['date'] = pd.to_datetime(df['date'])

# Расчет разницы между датами
df['difference'] = df['date'] - df['start_date']

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

import datetime

df['date'] = pd.to_datetime(df['date'])

# Вывод данных
print(df)

Результат:

   name  age  date
0  John  21  2023-07-26
1  Mary  22  2023-07-26
2  Peter  23  2023-07-26

8. Группировка данных

Для группировки данных по определенному признаку можно использовать метод groupby().

# Группировка данных по возрасту
grouped_df = df.groupby('age')

# Расчет среднего дохода по возрасту
grouped_df['income'].mean()

До:

df = pd.read_csv('data.csv')

# Вывод данных
print(df)

Исходник:

   name  age
0  John  21
1  Mary  22
2  Peter  23

После:

df = pd.read_csv('data.csv')

# Группировка данных по возрасту
grouped_df = df.groupby('age')

# Расчет среднего дохода по возрасту
grouped_df['income'].mean()

Результат:

22.0

9. Соединение данных

Для соединения двух DataFrame можно использовать методы merge() или concat().

# Соединение двух DataFrame по одному столбцу
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['John', 'Mary', 'Peter']})
df2 = pd.DataFrame({'id': [2, 3, 4], 'age': [21, 22, 23]})

# Соединение DataFrame по столбцу id
df = pd.merge(df1, df2, on='id')

# Вывод данных
print(df)

До:

df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['John', 'Mary', 'Peter']})
df2 = pd.DataFrame({'id': [2, 3, 4], 'age': [21, 22, 23]})

# Вывод данных
print(df1)

Исходник (1)

   id  name
0  1  John
1  2  Mary
2  3  Peter

Выводим возраст

print(df2)

Исходник (2):

   id  age
0  2  21
1  3  22
2  4  23

После:

df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['John', 'Mary', 'Peter']})
df2 = pd.DataFrame({'id': [2, 3, 4], 'age': [21, 22, 23]})

# Соединение DataFrame по одному столбцу
df = pd.merge(df1, df2, on='id')

# Вывод данных
print(df)

Результат:

   id  name  age
0  2  Mary  22
1  3  Peter  23

10. Импорт и экспорт данных

Для импорта данных из других библиотек можно использовать методы read_sql(), read_excel(), read_json()

# Импорт данных из базы данных MySQL
df = pd.read_sql('SELECT * FROM table', engine='mysql+pymysql://user:password@host:port/database')

# Экспорт данных в файл Excel
df.to_excel('data.xlsx')

До:

# Данные
data = {
    'name': ['John', 'Mary', 'Peter'],
    'age': [21, 22, 23]
}

# Вывод данных
print(data)

Исходник:

{'name': ['John', 'Mary', 'Peter'], 'age': [21, 22, 23]}

После:

# Данные
data = {
    'name': ['John', 'Mary', 'Peter'],
    'age': [21, 22, 23]
}

# Импорт данных из списка
df = pd.DataFrame(data)

# Вывод данных
print(df)

Результат:

   name  age
0  John  21
1  Mary  22
2  Peter  23

Экспорт:

# Экспорт данных в файл Excel
df.to_excel('data.xlsx')

Надеюсь, что было интересно :)