Анализ табличных данных в среде Python: Pandas и NumPy

Раздел: Data Science -> Pandas и NumPy

Основные подходы к работе с табличными данными

Как загрузить табличные данные из CSV в Pandas и выполнить базовый анализ?

Библиотека Pandas предоставляет функцию pandas.read_csv, которая является стандартным инструментом для загрузки табличных данных из текстовых файлов с разделителями. После загрузки данные хранятся в объекте DataFrame, который напоминает электронную таблицу. Рассмотрим простой пример:


import pandas as pd
df = pd.read_csv('sales.csv', sep=';', encoding='utf-8')
print(df.head())

Python для анализа данных (python для анализа данных)

Пояснение: параметр sep указывает разделитель (по умолчанию запятая), encoding задает кодировку. Функция head() показывает первые 5 строк. Для получения общей информации используется df.info(), а для статистики – df.describe().

Типичные проблемы: неверный разделитель, неправильная кодировка (возникает UnicodeDecodeError), наличие заголовка (параметр header). Решение: проверить файл в текстовом редакторе, указать правильные параметры. Например, для файлов с разделителями табуляции используется sep='\t'. Для пропуска строк перед данными – skiprows.

Как импортировать данные из Excel-файла?

Для загрузки Excel-файлов используется функция pandas.read_excel, которая требует установленной библиотеки openpyxl или xlrd.


import pandas as pd
df = pd.read_excel('report.xlsx', sheet_name='Лист1', engine='openpyxl')
print(df.shape)

анализ больших данных python (анализ больших данных в python)

Пояснение: sheet_name может быть именем листа или индексом. engine выбирает парсер; для .xlsx рекомендуется openpyxl. Атрибут shape возвращает размерность (строки, столбцы).

Ошибки: отсутствие модуля openpyxl (установить через pip install openpyxl), слишком большой файл (можно читать по частям с параметром chunk).

Как создать таблицу из словаря Python?

Словарь, где ключи – названия столбцов, а значения – списки, передается в конструктор DataFrame.


data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'City': ['Moscow', 'Kazan']}
df = pd.DataFrame(data)
print(df)

Python анализ данных excel (анализ данных excel в python)

Результат:

    Name  Age    City
0  Alice   25  Moscow
1    Bob   30   Kazan

анализ данных python pdf (анализ данных pdf в python)

Этот способ удобен для создания небольших таблиц в коде, например, для тестирования.

Как преобразовать массив NumPy в таблицу Pandas?

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


import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(arr, columns=['A', 'B'])
print(df)

Python анализ данных и машинное обучение (анализ данных и машинное обучение на python)

   A  B
0  1  2
1  3  4
2  5  6

анализ данных с использованием python (анализ данных с использованием python)

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

Как загрузить данные из SQL запроса?

Pandas позволяет напрямую считывать результаты SQL-запроса с помощью pd.read_sql или pd.read_sql_query. Для этого требуется подключение к базе данных (например, через SQLAlchemy или sqlite3).


import sqlite3
conn = sqlite3.connect('database.db')
query = "SELECT * FROM employees WHERE department = 'Sales'"
df = pd.read_sql(query, conn)
conn.close()
print(df.info())

Python анализ текстовых данных (анализ текстовых данных в python)

Пояснение: после выполнения запроса данные загружаются в DataFrame, соединение закрывается. Это удобно для интеграции анализа с существующими базами.

Проблемы: медленная передача больших данных (рекомендуется использовать чанки или ограничить запрос), несовместимость типов данных (можно задать dtype).

Как выбрать строки по условию с помощью query?

Метод query позволяет фильтровать DataFrame с использованием строкового выражения, что часто удобнее цепочек логических операторов.


df_filtered = df.query('Age > 25 and City == "Moscow"')
print(df_filtered)

аналитик данных python sql (аналитик данных python sql)

Пояснение: выражение записывается как строка; имена столбцов используются без кавычек, а значения строк – в кавычках. Метод возвращает новый DataFrame. Он эффективнее при больших данных, так как использует numexpr.

Ошибка: SyntaxError при использовании неправильных кавычек. Необходимо экранировать кавычки внутри строки. Альтернатива: использовать переменные через @.

Как сгруппировать данные и вычислить среднее?

Для группировки используется метод groupby, после которого применяются агрегирующие функции (mean, sum, count и др.).


grouped = df.groupby('City')['Age'].mean()
print(grouped)

Python библиотеки numpy и pandas (библиотеки numpy и pandas в python)

Результат: средний возраст по городам. Если нужно несколько агрегаций, используется agg. Например:


df.groupby('City').agg({'Age': ['mean', 'std'], 'Name': 'count'})

библиотеки python для обработки данных (библиотеки python для обработки данных (pandas, numpy и др.))

Пояснение: группировка – мощный инструмент для сводной статистики.

Как заполнить пропуски средним значением?

Пропущенные значения (NaN) можно обработать с помощью метода fillna или interpolate. Например:


df['Age'] = df['Age'].fillna(df['Age'].mean())

математика и python для анализа данных (математика и python для анализа данных)

Пояснение: сначала вычисляется среднее по столбцу, затем все NaN заменяются этим значением. Для других стратегий (медиана, мода) аналогично. Или можно удалить строки с пропусками: dropna.

Важно: замена пропусков средним может искажать распределение, особенно если выбросы. Лучше анализировать природу пропусков.

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

Для объединения используется функция pd.merge, аналогичная SQL JOIN. Пример:


df1 = pd.DataFrame({'id': [1,2], 'name': ['A','B']})
df2 = pd.DataFrame({'id': [1,3], 'score': [90,80]})
merged = pd.merge(df1, df2, on='id', how='left')
print(merged)

методы анализа данных python (методы анализа данных в python)

   id name  score
0   1    A   90.0
1   2    B    NaN

Пояснение: параметр how определяет тип соединения (left, right, inner, outer). Если ключи совпадают не полностью, NaN для отсутствующих. Для объединения по нескольким столбцам передается список.

- приложения анализа данных на python (приложения анализа данных на python)
- программирование и анализ данных на python (программирование и анализ данных на python)
- работа с табличными данными python (работа с табличными данными в python)

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

Сводная таблица с множественными агрегациями

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

Пример

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Date': ['2023-01-01','2023-01-01','2023-01-02','2023-01-02'],
    'Product': ['A','B','A','B'],
    'Sales': [100, 150, 200, 50],
    'Region': ['North','South','North','South']
})
pivot = pd.pivot_table(df, values='Sales', index='Date', columns='Region', aggfunc=[np.sum, np.mean])
print(pivot)
              sum         mean
Region      North South North South
Date                              
2023-01-01  100.0  150.0  100.0  150.0
2023-01-02  200.0   50.0  200.0   50.0

Пояснение: индексом становится столбец Date, столбцами – Region, а значения агрегируются функциями sum и mean. Это удобно для анализа по нескольким измерениям.

Категориальные данные для экономии памяти

Преобразование строковых столбцов в категориальный тип (Categorical) уменьшает занимаемую память и ускоряет операции.

Пример

df['Category'] = pd.Categorical(df['Product'], categories=['A','B','C'], ordered=True)
print('Коды категорий:', df['Category'].cat.codes)
print('Категории:', df['Category'].cat.categories)
Коды категорий: 0    0
1    1
2    0
3    1
dtype: int8
Категории: Index(['A', 'B', 'C'], dtype='object')

Пояснение: параметр ordered задает упорядоченность. Коды хранятся как целые числа (int8), что значительно экономит память по сравнению с хранением строк.

Применение пользовательской функции к строкам (apply)

Метод apply с axis=1 позволяет применить функцию к каждой строке DataFrame для сложной логики.

Пример

def classify(row):
    if row['Sales'] > 150:
        return 'High'
    else:
        return 'Low'
df['Class'] = df.apply(classify, axis=1)
print(df[['Product','Sales','Class']])
  Product  Sales Class
0       A    100   Low
1       B    150   Low
2       A    200  High
3       B     50   Low

Пояснение: функция получает каждую строку как Series. Альтернатива – векторизованные операции, но apply удобен для нестандартных условий.

Передискретизация временных рядов (resample)

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

Пример

date_rng = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
ts = pd.Series(np.random.randint(0,100,size=len(date_rng)), index=date_rng)
print('Исходный ряд:', ts.head())
print('Среднее за 3 дня:')
print(ts.resample('3D').mean())
Исходный ряд: 2023-01-01    44
2023-01-02    71
2023-01-03    19
2023-01-04    57
2023-01-05    88
Freq: D, dtype: int32
Среднее за 3 дня:
2023-01-01    44.666667
2023-01-04    57.000000
2023-01-07    37.666667
2023-01-10    43.000000
Freq: 3D, dtype: float64

Пояснение: исходный ряд с ежедневной частотой группируется по 3-дневным интервалам. Можно использовать различные агрегации (sum, ohlc, asfreq).

Работа с табличными данными в Python - comments

En
работа с табличными данными python (python)