Помогите исправить код Python для датасета

Рейтинг: 0Ответов: 0Опубликовано: 31.05.2023

Сразу прошу прощения за возможно неправильное оформление(буду учиться правильно).

Помогите пожалуйста исправить код для анализа датасета, в тупике и не понимаю как исправить(

Возникает ошибка каждый раз, даже когда убрал запятую из этой строчки: yerr=np.abs(carrier_confidence_interval.loc[carrier_avg_dep_delay_sorted.index].values.transpose()), (не помогло, т.к. если убрать то:

  File "C:\Users\Rada\PycharmProjects\pythonProject\main.py", line 83
    yerr=np.abs(carrier_confidence_interval.loc[carrier_avg_dep_delay_sorted.index].values.transpose())
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?

Process finished with exit code 1 

Не понимаю что делать((

КОД:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import norm
from statsmodels.stats.weightstats import ztest

# Загрузка данных
df = pd.read_csv('dataset.csv')
dataset = df[['year', 'month', 'day', 'dep_time', 'dep_delay', 'arr_time', 'arr_delay', 'carrier', 'tailnum', 'flight',
              'origin', 'dest', 'air_time', 'distance']]

# 1. Поиск пропущенных значений
missing_columns = dataset.columns[dataset.isnull().any()].tolist()
num_rows_with_missing_values = dataset.isnull().any(axis=1).sum()
has_missing_values = num_rows_with_missing_values > 0

print("Столбцы с пропущенными значениями:", missing_columns)
print("Количество строк с хотя бы одним пропущенным значением:", num_rows_with_missing_values)
if has_missing_values:
    print("Есть особенности в рейсах с пропущенными значениями.")
else:
    print("Нет особенностей в рейсах с пропущенными значениями.")

# Удаление строк с пропущенными значениями
dataset = dataset.dropna()

# 2. Построение нормированных гистограмм времени задержки вылета и прилета
sns.set(style="whitegrid")

# Определение диапазона построения гистограмм
delay_range = (-60, 60)

fig, ax = plt.subplots(figsize=(10, 6))
sns.histplot(dataset['dep_delay'], bins=50, kde=True, color='blue', label='Задержка вылета', ax=ax)
sns.histplot(dataset['arr_delay'], bins=50, kde=True, color='red', label='Задержка прилета', ax=ax)
plt.xlim(delay_range)
plt.xlabel('Время задержки (мин)')
plt.ylabel('Частота')
plt.title('Распределение задержек вылета и прилета')
plt.legend()
plt.show()

# Определение выбросов
dep_delay_outliers = dataset[(dataset['dep_delay'] < delay_range[0]) | (dataset['dep_delay'] > delay_range[1])]
arr_delay_outliers = dataset[(dataset['arr_delay'] < delay_range[0]) | (dataset['arr_delay'] > delay_range[1])]
num_dep_delay_outliers = len(dep_delay_outliers)
num_arr_delay_outliers = len(arr_delay_outliers)

print("Количество выбросов в задержке вылета:", num_dep_delay_outliers)
print("Значения выбросов в задержке вылета:", dep_delay_outliers['dep_delay'].values)
print("Количество выбросов в задержке прилета:", num_arr_delay_outliers)
print("Значения выбросов в задержке прилета:", arr_delay_outliers['arr_delay'].values)

# 3. Оценка среднего значения, медианы и стандартного отклонения для времени задержки вылета и прилета
dep_delay_mean = dataset['dep_delay'].mean()
dep_delay_median = dataset['dep_delay'].median()
dep_delay_std = dataset['dep_delay'].std()

arr_delay_mean = dataset['arr_delay'].mean()
arr_delay_median = dataset['arr_delay'].median()
arr_delay_std = dataset['arr_delay'].std()

print("Среднее время задержки вылета:", dep_delay_mean)
print("Медиана времени задержки вылета:", dep_delay_median)
print("Стандартное отклонение времени задержки вылета:", dep_delay_std)

print("Среднее время задержки прилета:", arr_delay_mean)
print("Медиана времени задержки прилета:", arr_delay_median)
print("Стандартное отклонение времени задержки прилета:", arr_delay_std)

# 4. Сортировка авиакомпаний по средней задержке вылета и построение графика
carrier_avg_dep_delay = dataset.groupby('carrier')['dep_delay'].mean()
carrier_confidence_interval = dataset.groupby('carrier')['dep_delay'].agg(lambda x: norm.interval(0.95, loc=x.mean(),
                                                                                                 scale=x.std() / np.sqrt(
                                                                                                     len(x))))

carrier_avg_dep_delay_sorted = carrier_avg_dep_delay.sort_values()

plt.figure(figsize=(10, 6))
sns.barplot(x=carrier_avg_dep_delay_sorted.index, y=carrier_avg_dep_delay_sorted, color='blue')
plt.errorbar(x=carrier_avg_dep_delay_sorted.index, y=carrier_avg_dep_delay_sorted,
             yerr=np.abs(carrier_confidence_interval.loc[carrier_avg_dep_delay_sorted.index].values.transpose()),
             fmt='none', color='black', capsize=5)
plt.xlabel('Авиакомпания')
plt.ylabel('Средняя задержка вылета (мин)')
plt.title('Сравнение авиакомпаний по средней задержке вылета')
plt.xticks(rotation=45)
plt.show()

# 5. Тест на различие среднего времени задержки вылета для American Airlines (AA) и Delta Airlines (DL)
aa_dep_delay = dataset.loc[dataset['carrier'] == 'AA', 'dep_delay']
dl_dep_delay = dataset.loc[dataset['carrier'] == 'DL', 'dep_delay']
_, p_value = ztest(aa_dep_delay, dl_dep_delay)
alpha = 0.05  # Уровень значимости

if p_value < alpha:
    print("Различие в среднем времени задержки вылета для авиакомпаний American Airlines (AA) и Delta Airlines (DL) является значимым.")
else:
    print("Различие в среднем времени задержки вылета для авиакомпаний American Airlines (AA) и Delta Airlines (DL) не является значимым.")

# 6. Тест на различие статистик задержек вылетов для аэропортов JFK, LGA и EWR
jfk_dep_delay = dataset.loc[dataset['origin'] == 'JFK', 'dep_delay']
lga_dep_delay = dataset.loc[dataset['origin'] == 'LGA', 'dep_delay']
ewr_dep_delay = dataset.loc[dataset['origin'] == 'EWR', 'dep_delay']
_, p_value = ztest(lga_dep_delay, ewr_dep_delay)

alpha = 0.05  # Уровень значимости

if p_value < alpha:
    print("Различие в статистиках задержек вылетов для аэропортов LGA и EWR является значимым.")
else:
    print("Различие в статистиках задержек вылетов для аэропортов LGA и EWR не является значимым.")

_, p_value = ztest(jfk_dep_delay, ewr_dep_delay)

if p_value < alpha:
    print("Различие в статистиках задержек вылетов для аэропортов JFK и EWR является значимым.")
else:
    print("Различие в статистиках задержек вылетов для аэропортов JFK и EWR не является значимым.")

_, p_value = ztest(jfk_dep_delay, lga_dep_delay)

if p_value < alpha:
    print("Различие в статистиках задержек вылетов для аэропортов JFK и LGA является значимым.")
else:
    print("Различие в статистиках задержек вылетов для аэропортов JFK и LGA не является значимым.")

# 7. Аппроксимация распределения времени задержки вылета
delay_range_positive = (0, 60)

delay_positive = dataset[(dataset['dep_delay'] > delay_range_positive[0]) & (dataset['dep_delay'] < delay_range_positive[1])]['dep_delay']

plt.figure(figsize=(10, 6))
sns.histplot(delay_positive, bins=50, kde=True, color='blue')
sns.kdeplot(delay_positive, color='red', linestyle='--')
plt.xlim(delay_range_positive)
plt.xlabel('Время задержки (мин)')
plt.ylabel('Частота')
plt.title('Распределение времени задержки вылета (время > 0)')
plt.show()

# 8. Графики числа рейсов и среднего времени задержки в зависимости от месяца
delay_positive_monthly = dataset[dataset['dep_delay'] > 0].groupby('month')['dep_delay']
num_flights_monthly = dataset.groupby('month')['flight'].count()

avg_delay_monthly = delay_positive_monthly.mean()

plt.figure(figsize=(10, 6))
plt.plot(num_flights_monthly.index, num_flights_monthly.values, marker='o', color='blue', label='Число рейсов')
plt.xlabel('Месяц')
plt.ylabel('Число рейсов')
plt.title('Число рейсов в зависимости от месяца')
plt.legend()
plt.show()

plt.figure(figsize=(10, 6))
plt.plot(avg_delay_monthly.index, avg_delay_monthly.values, marker='o', color='red', label='Среднее время задержки')
plt.xlabel('Месяц')
plt.ylabel('Среднее время задержки (мин)')
plt.title('Среднее время задержки в зависимости от месяца')
plt.legend()
plt.show()

Ответы

Ответов пока нет.