Найти в Дзене
Степан Вещает

Факторный анализ

import pandas as pd from factor_analyzer import FactorAnalyzer from sklearn.preprocessing import StandardScaler def factor_analysis(data, n_factors=5, output_file=None): """ Функция для выполнения факторного анализа переменных Параметры: - data: pandas DataFrame, содержащий переменные для анализа - n_factors: int, количество факторов для извлечения (по умолчанию 5) - output_file: str, путь к файлу для сохранения нового датасета с факторами (по умолчанию None) Возвращает: - factor_loadings: pandas DataFrame, загрузки переменных на факторы - factor_data: pandas DataFrame, новый датасет с добавленными факторами """ # Шаг 1: Предварительная обработка данных # Нормализация данных scaler = StandardScaler() scaled_data = scaler.fit_transform(data) scaled_data = pd.DataFrame(scaled_data, columns=data.columns) # Шаг 2: Выполнение факторного анализа fa = FactorAnalyzer(n_factors=n_factors, rotation=None) # Можно

import pandas as pd

from factor_analyzer import FactorAnalyzer

from sklearn.preprocessing import StandardScaler

def factor_analysis(data, n_factors=5, output_file=None):

"""

Функция для выполнения факторного анализа переменных

Параметры:

- data: pandas DataFrame, содержащий переменные для анализа

- n_factors: int, количество факторов для извлечения (по умолчанию 5)

- output_file: str, путь к файлу для сохранения нового датасета с факторами (по умолчанию None)

Возвращает:

- factor_loadings: pandas DataFrame, загрузки переменных на факторы

- factor_data: pandas DataFrame, новый датасет с добавленными факторами

"""

# Шаг 1: Предварительная обработка данных

# Нормализация данных

scaler = StandardScaler()

scaled_data = scaler.fit_transform(data)

scaled_data = pd.DataFrame(scaled_data, columns=data.columns)

# Шаг 2: Выполнение факторного анализа

fa = FactorAnalyzer(n_factors=n_factors, rotation=None) # Можно использовать различные методы вращения

fa.fit(scaled_data)

# Шаг 3: Получение загрузок переменных на факторы

factor_loadings = pd.DataFrame(fa.loadings_, index=data.columns, columns=[f'Factor {i+1}' for i in range(n_factors)])

# Шаг 4: Создание нового датасета с добавленными факторами

factor_scores = fa.transform(scaled_data)

factor_data = pd.DataFrame(factor_scores, columns=[f'Factor {i+1}' for i in range(n_factors)])

# Добавление новых факторов к исходным данным

factor_data = pd.concat([data, factor_data], axis=1)

# Шаг 5: Сохранение нового датасета, если указан путь

if output_file:

factor_data.to_csv(output_file, index=False)

return factor_loadings, factor_data

# Загрузка данных

data = pd.read_csv('dataset.csv')

# Выполнение факторного анализа с 3 факторами и сохранение нового датасета

factor_loadings, factor_data = factor_analysis(data, n_factors=3, output_file='dataset_with_factors.csv')

# Вывод загрузок переменных на факторы

print(factor_loadings)

# Вывод первых нескольких строк нового датасета с добавленными факторами

print(factor_data.head())

Кластерный анализ данных

import pandas as pd

from sklearn.cluster import KMeans

from sklearn.preprocessing import StandardScaler

import matplotlib.pyplot as plt

import seaborn as sns

def cluster_analysis(data, n_clusters=3):

"""

Функция для выполнения кластерного анализа данных

Параметры:

- data: pandas DataFrame, содержащий данные для анализа

- n_clusters: int, количество кластеров (по умолчанию 3)

Возвращает:

- labels: numpy array, метки кластеров для каждой строки данных

"""

# Шаг 1: Предварительная обработка данных

# Нормализация данных

scaler = StandardScaler()

scaled_data = scaler.fit_transform(data)

# Шаг 2: Выполнение кластерного анализа

kmeans = KMeans(n_clusters=n_clusters, random_state=42)

labels = kmeans.fit_predict(scaled_data)

return labels

# Пример использования функции:

# Загрузка данных

data = pd.read_csv('dataset.csv')

# Выполнение кластерного анализа с 5 кластерами

cluster_labels = cluster_analysis(data, n_clusters=5)

# Добавление меток кластеров к данным

data['Cluster'] = cluster_labels

# Визуализация кластеров

sns.scatterplot(data=data, x='Feature1', y='Feature2', hue='Cluster', palette='viridis')

plt.title('Cluster Analysis')

plt.xlabel('Feature 1')

plt.ylabel('Feature 2')

plt.show()

# Загрузка данных

data = pd.read_csv('dataset.csv')

# Выполнение кластерного анализа с 5 кластерами

cluster_labels = cluster_analysis(data, n_clusters=5)

# Вывод меток кластеров

print(cluster_labels)

Для создания Excel файла с данными из переменной all_data, где названия столбцов будут ключами, а строки будут значениями этих ключей, вам понадобится использовать библиотеку Python под названием pandas. Вот пример кода, который поможет вам выполнить это:

import pandas as pd

# Пример данных из переменной all_data (словарь с ключами и значениями)

all_data = {

  "ключ1": "значение1",

  "ключ2": "значение2",

  # Дополнительные ключи и значения

}

# Создаем DataFrame из данных

df = pd.DataFrame(list(all_data.items()), columns=['Ключ', 'Значение'])

# Создаем Excel файл

excel_file = 'данные.xlsx'

df.to_excel(excel_file, index=False)

print(f"Excel файл успешно создан с данными из переменной all_data. Имя файла: {excel_file}")

После выполнения этого кода у вас будет создан Excel файл с названиями столбцов "Ключ" и "Значение", где каждая строка будет содержать пару ключ-значение из переменной all_data. Вы можете настроить форматирование Excel файла или добавить дополнительные данные по вашему усмотрению.