Наборы данных в среде Python: как получить таблицы для анализа через Pandas
Основные способы загрузки и создания наборов данных в Python для Pandas
Как загрузить табличные данные из внешнего файла с помощью Pandas?
Самый распространенный и эффективный способ получить набор данных для анализа - прочитать файл формата CSV, Excel или TSV с помощью встроенных функций библиотеки Pandas. Метод pd.read_csv() позволяет загрузить данные из текстового файла с разделителями, автоматически распознать заголовки столбцов и создать объект DataFrame.
import pandas as pd
# Чтение CSV-файла
url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv'
df = pd.read_csv(url, sep=',', header=0)
print(df.head())обработка больших данных python (обработка больших данных в python)
sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 setosa 1 4.9 3.0 1.4 0.2 setosa 2 4.7 3.2 1.3 0.2 setosa 3 4.6 3.1 1.5 0.2 setosa 4 5.0 3.6 1.4 0.2 setosa
очистка данных python (очистка данных в python)
В примере указан параметр sep (разделитель) и header (строка с названиями столбцов). Pandas автоматически определяет тип данных каждого столбца, но при необходимости можно задать типы вручную через аргумент dtype.
Типичные ошибки:
- Неверный разделитель - файл может использовать точку с запятой или табуляцию. Решение: указать
sep='\\t'илиsep=';'. - Проблемы с кодировкой - кириллица отображается кракозябрами. Добавьте
encoding='utf-8'илиencoding='cp1251'. - Пропущенные значения (NaN) - используйте
na_valuesдля указания меток пропусков.
Как получить встроенные датасеты из библиотек, не скачивая файлы?
Многие библиотеки поставляются с готовыми наборами данных, которые можно загрузить одной строкой кода. Например, seaborn.load_dataset(), sklearn.datasets, statsmodels.api.datasets. Это удобно для обучения и быстрых экспериментов.
import seaborn as sns
# Загрузка датасета 'tips' (чаевые)
df_tips = sns.load_dataset('tips')
print(df_tips.head())Python подготовка данных (подготовка данных в python)
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4
Python работа с большими данными (работа с большими данными в python)
Также можно загрузить популярные датасеты из sklearn (например, iris, boston) в виде словаря с признаками и целевой переменной.
from sklearn.datasets import load_iris
import pandas as pd
iris_data = load_iris()
df_iris = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)
df_iris['target'] = iris_data.target
print(df_iris.head())генерация данных python (генерация данных в python)
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0
Python код символа (код символа в python)
Проблемы: некоторые датасеты могут отсутствовать в установленной версии библиотеки (например, в новых версиях seaborn удалены устаревшие наборы). Решение: проверять документацию или использовать альтернативные источники.
Как создать собственный набор данных из Python-структур?
Когда внешние данные недоступны, можно сформировать DataFrame из словаря, списка списков или массива NumPy. Это полезно для тестирования функций или прототипирования.
# Из словаря (ключи - названия столбцов)
data_dict = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]
}
df = pd.DataFrame(data_dict)
print(df)код из файла python (код из файла python)
Name Age Salary 0 Alice 25 50000 1 Bob 30 60000 2 Charlie 35 70000
обработка данных на python (обработка данных на python)
# Из списка списков с указанием заголовков
data_list = [[1, 'A', 3.5], [2, 'B', 4.8], [3, 'C', 6.2]]
df2 = pd.DataFrame(data_list, columns=['ID', 'Group', 'Value'])
print(df2)обработка символьных данных python (обработка символьных данных в python)
ID Group Value 0 1 A 3.5 1 2 B 4.8 2 3 C 6.2
Python преобразование в строку (преобразование в строку в python)
Ошибка: несовпадение длины списков в словаре. Все значения-списки должны быть одинаковой длины. Если нужно создать столбец с отсутствующими данными, используйте pd.NA.
Как сгенерировать случайный набор данных для анализа?
Для имитации данных (например, симуляция A/B теста или временного ряда) применяется модуль numpy.random в сочетании с Pandas. Это позволяет контролировать распределение и размер выборки.
import numpy as np
np.random.seed(42)
# 1000 строк, 3 столбца
n = 1000
df_random = pd.DataFrame({
'feature1': np.random.normal(0, 1, n),
'feature2': np.random.uniform(0, 10, n),
'category': np.random.choice(['A', 'B', 'C'], n),
'target': np.random.binomial(1, 0.3, n)
})
print(df_random.head())Python как проверить строку (проверка строки в python)
feature1 feature2 category target 0 0.496714 2.747562 C 0 1 -0.138264 1.300373 B 0 2 0.647689 8.163868 A 0 3 1.523030 4.910383 A 1 4 -0.234153 5.070089 A 0
как работать с данными в python (работа с данными в python)
Внимание: при многократном запуске кода без фиксации seed наборы будут разными, что затруднит воспроизводимость. Используйте np.random.seed().
Как прочитать таблицы из Excel или SQL базы данных?
Для работы с файлами Excel предназначена функция pd.read_excel(), которая может считывать отдельные листы. Для данных из SQL используется pd.read_sql() в паре с SQLAlchemy.
# Чтение Excel-файла (лист по имени или индексу)
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1', engine='openpyxl')
# Чтение из SQLite (пример)
from sqlalchemy import create_engine
engine = create_engine('sqlite:///database.db')
df_sql = pd.read_sql('SELECT * FROM sales', engine, parse_dates=['date'])
print(df_sql.head())
Параметры parse_dates помогает автоматически преобразовать строковые даты в datetime.
Частая проблема: отсутствие драйвера для Excel (например, когда не установлен openpyxl). Установите нужный пакет: pip install openpyxl.
Расширенные примеры работы с наборами данных в Pandas
Пример 1: Чтение большого CSV частями (chunksize)
Когда файл не помещается в оперативную память, можно загружать данные порциями.
import pandas as pd
chunk_iter = pd.read_csv('huge_file.csv', chunksize=10000)
first_chunk = next(chunk_iter)
print('Размер одного чанка:', first_chunk.shape)
# Обработка каждой части в цикле
for chunk in chunk_iter:
# Выполнение операций с chunk
pass
Размер одного чанка: (10000, 12)
Пример 2: Настройка типов и пропусков при загрузке
Укажите dtype для столбцов, чтобы сэкономить память, и na_values для унификации пропусков.
import pandas as pd
df = pd.read_csv('data.csv',
dtype={'user_id': 'int32', 'age': 'int8'},
na_values=['NA', 'N/A', '-', ''],
usecols=['user_id', 'age', 'gender'])
print(df.info())
RangeIndex: 500 entries, 0 to 499 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 user_id 500 non-null int32 1 age 487 non-null int8 2 gender 500 non-null object dtypes: int32(1), int8(1), object(1) memory usage: 2.8+ KB
Пример 3: Слияние нескольких датасетов (merge)
Часто данные распределены по разным таблицам. Их объединяют по ключам.
import pandas as pd
df_orders = pd.DataFrame({
'order_id': [1,2,3],
'customer_id': [101,102,101],
'amount': [250, 180, 300]
})
df_customers = pd.DataFrame({
'customer_id': [101,102],
'name': ['Alice', 'Bob']
})
# Внутреннее объединение
df_merged = pd.merge(df_orders, df_customers, on='customer_id', how='inner')
print(df_merged)
order_id customer_id amount name 0 1 101 250 Alice 1 3 101 300 Alice 2 2 102 180 Bob
Пример 4: Конкатенация однотипных DataFrame
Когда нужно объединить несколько таблиц с одинаковыми столбцами по вертикали.
df1 = pd.DataFrame({'A': [1,2], 'B': [3,4]})
df2 = pd.DataFrame({'A': [5,6], 'B': [7,8]})
df_concat = pd.concat([df1, df2], ignore_index=True)
print(df_concat)
A B 0 1 3 1 2 4 2 5 7 3 6 8
Пример 5: Обработка дат при загрузке временных рядов
Параметр parse_dates позволяет сразу преобразовать колонку с датами в datetime.
import pandas as pd
# Имитация строки с датами
data = """date,value
2023-01-01,10
2023-01-02,20
invalid_date,30
"""
with open('temp.csv', 'w') as f:
f.write(data)
df = pd.read_csv('temp.csv', parse_dates=['date'], infer_datetime_format=True)
print(df.dtypes)
print(df)
date datetime64[ns]
value int64
dtype: object
date value
0 2023-01-01 10
1 2023-01-02 20
2 NaT 30
Неверная дата превращается в NaT (Not a Time), что удобно для последующей очистки.
Пример 6: Загрузка данных с пользовательскими разделителями и кавычками
Встречаются нестандартные CSV, например, с разделителем | и кавычками внутри полей.
import pandas as pd
from io import StringIO
data_pipe = """id|name|comment
1|John|'Hello, world'
2|Jane|"Quote inside"
"""
df_pipe = pd.read_csv(StringIO(data_pipe), sep='|', quotechar="'")
print(df_pipe)
id name comment 0 1 John Hello, world 1 2 Jane Quote inside
Совет: если файл содержит символы перевода строки внутри кавычек, используйте параметр engine='python' (медленнее, но надежнее) или установите quoting=csv.QUOTE_ALL.