Таблицы данных в языке Python: от простого к сложному

Раздел: Обработка данных -> Работа с таблицами

Основы работы с таблицами данных в Python

Табличные данные встречаются повсеместно: логи, финансовые отчёты, результаты экспериментов. Python предлагает несколько подходов для их обработки. Рассмотрим каждый.

Как быстро загрузить и обработать таблицу с помощью pandas?

Библиотека pandas - основной инструмент для работы с таблицами. Она предоставляет структуру DataFrame, которая имитирует электронную таблицу.

import pandas as pd

# Чтение CSV
df = pd.read_csv('data.csv')
print(df.head())   # первые 5 строк

библиотека таблиц python (библиотека для работы с таблицами в python)

Пояснение: pd.read_csv загружает данные в DataFrame. Метод head() показывает начало таблицы.

Частая ошибка - неправильный разделитель. Если CSV использует ';', укажите sep=';'. Или кодировка: encoding='utf-8'.

Как обработать таблицу без pandas, используя только встроенный модуль csv?

Если установка pandas невозможна, модуль csv позволяет читать и записывать CSV-файлы.

import csv

with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row['Name'], row['Age'])

Python вывести таблицу (вывод таблицы в python)

DictReader возвращает строки как словари. Можно использовать csv.reader для списков.

Проблема: ручное преобразование типов (например, возраст как строка). Решение: преобразовать после чтения.

Как создать таблицу вручную в виде списка словарей?

Для простых случаев подходит список, каждый элемент которого - словарь с одинаковыми ключами.

data = [
    {'Name': 'Anna', 'Age': 25, 'City': 'Moscow'},
    {'Name': 'Bob', 'Age': 30, 'City': 'Spb'}
]
for person in data:
    print(f"{person['Name']} - {person['Age']}")

таблица python задача (задача на таблицу в python)

Такая структура легко преобразуется в DataFrame: pd.DataFrame(data).

При добавлении нового элемента важно, чтобы все ключи совпадали, иначе получится пропуски.

Как работать с Excel-файлами без pandas?

Библиотека openpyxl (для .xlsx) позволяет читать и редактировать ячейки.

from openpyxl import load_workbook

wb = load_workbook('report.xlsx')
ws = wb.active
for row in ws.iter_rows(values_only=True):
    print(row)

Python работа с таблицами (работа с таблицами в python)

Метод iter_rows возвращает строки как кортежи. Можно обращаться по индексу столбца.

Формулы могут быть не вычислены - используйте data_only=True при загрузке.

Как выполнить агрегацию данных (группировку) с pandas?

Метод groupby - основа для сводок.

df = pd.read_csv('sales.csv')
grouped = df.groupby('Category')['Revenue'].sum()
print(grouped)

Python создание таблиц (создание таблиц в python)

Результат - Series с суммами по каждой категории. Для нескольких столбцов передайте список.

Если в столбце группировки есть NaN, строки с NaN будут отброшены. Используйте dropna=False.

Как обрабатывать большие данные, не помещающиеся в оперативную память?

Pandas поддерживает чтение по частям (chunking).

chunk_iter = pd.read_csv('huge.csv', chunksize=10000)
for chunk in chunk_iter:
    # обработать часть
    print(chunk.shape)

сортировка столбца python (сортировка столбца в python)

Каждый chunk - DataFrame, который можно обработать и сохранить результат.

Агрегация по всем чанкам требует аккумуляции (например, суммировать и складывать).

Для численных массивов без меток столбцов удобен numpy. Массив двумерный можно считать таблицей, но с однородными типами.

import numpy as np
data = np.genfromtxt('numeric.csv', delimiter=',', skip_header=1)
print(data.mean(axis=0))

genfromtxt игнорирует заголовок. Удобно для матричных операций.

Пропущенные значения превращаются в NaN; тип данных обычно float.
- язык программирования python таблица (таблица в языке python)
- Python таблица ввода (таблица ввода в python)
- Python таблица данных (таблица данных в python)

Расширенные примеры работы с таблицами

Далее показаны менее очевидные, но мощные приёмы для pandas.

Пример
import pandas as pd
import numpy as np

# Создадим два набора данных для демонстрации
df1 = pd.DataFrame({'id': [1,2,3], 'name': ['A','B','C']})
df2 = pd.DataFrame({'id': [2,3,4], 'score': [90,85,70]})

Как объединить две таблицы по ключу (merge)?

Пример
merged = pd.merge(df1, df2, on='id', how='inner')
print(merged)
   id name  score
0   2    B     90
1   3    C     85

Внешние объединения (outer) сохраняют все id, заполняя пропуски.

Если ключи в разных столбцах, используйте left_on и right_on.

Как построить сводную таблицу (pivot table)?

Пример
df = pd.DataFrame({
    'Date': ['2024-01','2024-01','2024-02','2024-02'],
    'Product': ['X','Y','X','Y'],
    'Sales': [100,150,120,140]
})
pivot = df.pivot_table(index='Date', columns='Product', values='Sales', aggfunc='sum')
print(pivot)
Product     X    Y
Date              
2024-01   100  150
2024-02   120  140

pivot_table автоматически заполняет пустые ячейки NaN.

Как применить свою функцию к каждой строке или столбцу?

Пример
df = pd.DataFrame({'a': [1,2], 'b': [3,4]})
df['sum'] = df.apply(lambda row: row['a'] + row['b'], axis=1)
print(df)
   a  b  sum
0  1  3    4
1  2  4    6

Для столбцов используйте axis=0 (по умолчанию).

Будьте осторожны с производительностью - apply медленнее векторизованных операций.

Как выполнить несколько агрегаций одновременно?

Пример
df = pd.DataFrame({'group': ['A','A','B','B'], 'val': [1,2,3,4]})
result = df.groupby('group')['val'].agg(['sum', 'mean', 'std'])
print(result)
       sum  mean       std
group                    
A        3   1.5  0.707107
B        7   3.5  0.707107

Можно передавать именованные агрегации в виде словаря.

Как отфильтровать строки с помощью query (более читаемый синтаксис)?

Пример
df = pd.DataFrame({'x': [1,2,3,4], 'y': [10,20,30,40]})
filtered = df.query('x > 2 and y < 35')
print(filtered)
   x   y
2  3  30

Имена столбцов внутри строки не нуждаются в кавычках.

Как объединить несколько операций в цепочку (pipe)?

Пример
def add_column(df):
    df['z'] = df['x'] + df['y']
    return df
def filter_positive(df):
    return df[df['z'] > 0]

result = (df
          .pipe(add_column)
          .pipe(filter_positive))
print(result)
   x   y   z
0  1  10  11
1  2  20  22
2  3  30  33
3  4  40  44

pipe позволяет строить читаемые конвейеры.

Как работать с датами (парсинг, извлечение компонентов)?

Пример
df = pd.DataFrame({'date': ['2024-01-15', '2024-02-20']})
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day_name'] = df['date'].dt.day_name()
print(df)
        date  year  month day_name
0 2024-01-15  2024      1    Monday
1 2024-02-20  2024      2   Tuesday

После преобразования доступны .dt-аксессоры.

Если формат нестандартный, укажите format.

Таблица данных в Python - comments

En
Python таблица данных (python)