Получение информации для анализа в Pandas

Раздел: Основы Python -> Pandas

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

Основное эффективное решение: чтение CSV файлов

Как загрузить табличные данные из текстового файла с разделителями?

Наиболее распространенный способ - использование функции pd.read_csv. Она читает файл и возвращает DataFrame.


import pandas as pd

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

обработка больших данных python (обработка больших данных в python)

Пояснение: read_csv автоматически определяет разделитель (по умолчанию запятая), первую строку считает заголовком. Если файл не имеет заголовка, используется параметр header=None.

Типичные ошибки:

  • Файл не найден - проверьте путь.
  • Неправильная кодировка - укажите encoding='utf-8' или другую.
  • Проблемы с разделителями - используйте параметр sep=';'.

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

Для файлов Excel (.xlsx) используется pd.read_excel. Требуется установка библиотеки openpyxl или xlrd.


df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())

очистка данных python (очистка данных в python)

Параметр sheet_name указывает лист. Можно передать номер или список для загрузки нескольких листов.

Проблемы:

  • Отсутствует модуль openpyxl - установите через pip install openpyxl.
  • Формат .xls поддерживается только xlrd версии <=1.2.0.

Как получить данные из SQL базы данных?

Для выполнения SQL-запросов используется pd.read_sql в паре с соединением через sqlalchemy или напрямую через драйвер БД.


from sqlalchemy import create_engine
engine = create_engine('sqlite:///database.db')
df = pd.read_sql('SELECT * FROM users', engine)
print(df.head())

Python подготовка данных (подготовка данных в python)

Пояснение: create_engine создает движок для подключения. SQL-запрос передается строкой. Для параметризации используется params.

Распространенные ошибки:

  • Неверная строка подключения - проверьте формат (например, postgresql://user:pass@localhost/db).
  • Отсутствие драйвера (psycopg2 для PostgreSQL).

Как загрузить данные из JSON файла?

Функция pd.read_json преобразует JSON-файл в DataFrame. Поддерживаются различные ориентации (records, index, columns и т.д.).


df = pd.read_json('data.json', orient='records')
print(df.head())

Python работа с большими данными (работа с большими данными в python)

По умолчанию orient='columns'. Если структура JSON отличается, нужно указать подходящую ориентацию.

Сложности: вложенные JSON могут требовать предварительной нормализации с помощью pd.json_normalize.

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

Функция pd.read_html находит все таблицы на странице (ищет теги <table>) и возвращает список DataFrame.


dfs = pd.read_html('https://example.com/page')
df = dfs[0]  # первая таблица
print(df.head())

генерация данных python (генерация данных в python)

Требуются библиотеки lxml или html5lib. Обратите внимание, что парсинг может быть медленным.

Проблемы: если таблица динамическая (JavaScript), read_html не сработает - потребуется Selenium.

Как получить данные через HTTP API (REST)?

Сначала выполняется запрос с помощью библиотеки requests, затем ответ преобразуется в DataFrame.


import requests
response = requests.get('https://api.example.com/data')
data = response.json()  # ожидается список словарей
df = pd.DataFrame(data)
print(df.head())

Пояснение: requests.get возвращает объект Response. Метод .json() десериализует JSON. Если структура сложная, используют pd.json_normalize.

Типичные ошибки:

  • Отсутствие доступа к сети или неверный URL.
  • API требует токен или ключ - передавайте в headers.
  • Формат ответа отличается от ожидаемого.
- обработка данных на python (обработка данных на python)
- обработка символьных данных python (обработка символьных данных в python)
- Python преобразование в строку (преобразование в строку в python)

Расширенные примеры работы с загрузкой данных

Ниже приведены продвинутые сценарии, которые часто встречаются на практике.

Чтение CSV с нестандартными параметрами

Пример

import pandas as pd

df = pd.read_csv(
    'data.tsv',
    sep='\t',          # табуляция как разделитель
    encoding='cp1251', # кодировка Windows
    header=0,          # первая строка - заголовок
    names=['col1','col2','col3'],  # переопределить заголовки
    dtype={'col1': str, 'col2': float},  # явный тип столбцов
    parse_dates=['date_column'],   # преобразовать в datetime
    na_values=['NA', 'N/A', 'None']  # значения, которые считать пропущенными
)
print(df.info())
RangeIndex: 1000 entries, 0 to 999
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   col1    1000 non-null   object
 1   col2    980 non-null    float64
 2   date_column 1000 non-null  datetime64[ns]

Этот пример демонстрирует тонкую настройку: указание разделителя, кодировки, типов данных и обработки пропусков.

Чтение больших CSV файлов по частям (chunksize)

Пример

chunk_iter = pd.read_csv('huge_file.csv', chunksize=10000)
for chunk in chunk_iter:
    # обработка каждой части
    print(chunk.shape)

Использование chunksize возвращает итератор, что позволяет обрабатывать файл, не загружая его полностью в память.

Загрузка данных из буфера (StringIO)

Пример

from io import StringIO

data = """name,age,city
Alice,30,New York
Bob,25,Boston
"""
df = pd.read_csv(StringIO(data))
print(df)
    name  age      city
0  Alice   30 New York
1    Bob   25   Boston

Метод удобен для тестирования или когда данные уже находятся в строковой переменной.

Чтение нескольких файлов и объединение

Пример

import glob

all_files = glob.glob('data/*.csv')
df_list = [pd.read_csv(f) for f in all_files]
df_all = pd.concat(df_list, ignore_index=True)
print(df_all.shape)

Применяется, когда данные распределены по множеству однотипных файлов.

Загрузка данных из Google Sheets

Пример

# Необходимо опубликовать таблицу и получить CSV ссылку
url = 'https://docs.google.com/spreadsheets/d/.../export?format=csv'
df = pd.read_csv(url)
print(df.head())

Этот способ позволяет получать данные из облачных таблиц без использования API.

Чтение данных из ZIP-архива

Пример

import zipfile

with zipfile.ZipFile('data.zip') as z:
    with z.open('file.csv') as f:
        df = pd.read_csv(f)
print(df.head())

Позволяет читать CSV напрямую из архива без предварительного извлечения.

Использование read_sql с параметрами

Пример

engine = create_engine('postgresql://user:pass@localhost/db')
params = {'region': 'East'}
df = pd.read_sql('SELECT * FROM sales WHERE region = :region', engine, params=params)
print(df.head())

Параметризация предотвращает SQL-инъекции и улучшает читаемость.

Нормализация вложенного JSON

Пример

import pandas as pd

data = [
    {'id': 1, 'info': {'name': 'Alice', 'age': 30}},
    {'id': 2, 'info': {'name': 'Bob', 'age': 25}}
]
df = pd.json_normalize(data, sep='_')
print(df)
   id  info_name  info_age
0   1      Alice        30
1   2        Bob        25

Функция json_normalize разворачивает вложенные структуры в плоский DataFrame.

Получение данных в Python - comments

En
Get data python (python)