Как можно добавить данные в объект Series, используя ссылку на другой объект?

Как можно улучшить код для достижения конечной цели - создания объекта DataFrame из объектов Series? Планирую извлекать значения из ячеек Excel в цикле и записывать их в объекты Series. Как лучше организовать цикл, чтобы избежать необходимости создавать цикл для каждого объекта Series? В конечном итоге я хочу объединить объекты Series в один объект DataFrame. Если у вас есть предложения по улучшению читаемости и оптимизации решения, пожалуйста, поделитесь.
  • 24 января 2024 г. 16:29
Ответы на вопрос 2
Для добавления данных в объект `Series` из pandas вы можете использовать различные подходы в зависимости от контекста. Например, если у вас есть индекс, по которому вы хотите добавить или изменить значение, можно использовать прямой доступ к элементу серии через индекс или использовать метод `append` для добавления новых значений.

```python
import pandas as pd

# Создаем пустой Series
s = pd.Series()

# Добавляем данные, установив значение по индексу
s.at['new_index'] = 123

# Или добавляем данные с помощью append (создает новый объект Series)
s = s.append(pd.Series([321], index=['another_index']))
```

Что касается создания DataFrame из нескольких Series, вы можете сделать это более эффективным способом, создав словарь, где ключи будут именами столбцов, а значениями будут вашими Series. Вот пример:

```python
import pandas as pd

# Пустой словарь для хранения Series как столбцов будущего DataFrame
data = {}

# Цикл, который будет собирать данные (предположим, это псевдокод)
for column_name in columns_list:
    # Здесь происходит сбор данных для каждой серии. Это могут быть данные из Excel.
    series_data = []  # Сюда вы будете добавлять данные для текущей серии в цикле
    
    # Представим, что здесь мы добавляем данные в series_data из Excel
    # ...

    # Создаем Series
    data[column_name] = pd.Series(series_data)

# Создаем DataFrame
df = pd.DataFrame(data)
```

Если вы извлекаете данные из Excel, вы также может использовать библиотеку `openpyxl` для чтения ячеек и добавления их в Series внутри цикла. Чтобы улучшить читаемость и оптимизировать код, стоит организовать код таким образом, чтобы использовать функции для повторяющихся задач. Например, функция для извлечения данных из Excel и функция для добавления этих данных в DataFrame.

Помните, что создание большого числа Series и их последующее объединение в DataFrame может быть не самым эффективным способом в плане использования памяти и времени выполнения. Возможно, будет более эффективно сразу собирать данные в виде списков или словарей и затем создавать DataFrame из этой структуры данных.
Вообще так с pandas не работают. 
1. pandas имеет мощный I/O как следствие эксель в том числе читают прямо в фрейм. Есть функции read_excel и другие, дополнительно перед этим установив различные reader's writer's например openpyxl и др.

2. Если ты собираешься создать series из python объекта, с числовыми индексами то это list. Если с именованными индексами но это словарь. То есть собирай в словарь или лист. Seires это однородный массив и с именованными индексами, и for циклами их не процессируют.
Похожие вопросы