198 KiB
198 KiB
Использованный датасет - Заработная плата рабочих мест в области Data Science - https://www.kaggle.com/datasets/henryshan/2023-data-scientists-salary?resource=download
In [2]:
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка данных
file_path = 'data/Diamonds Prices2022.csv'
data = pd.read_csv(file_path)
# 1.1 Загрузка и сохранение данных
print("Загруженные данные:")
print(data.head())
# Сохранение данных в новый файл
output_file = 'data/Diamonds_Prices2022_processed.csv'
data.to_csv(output_file, index=False)
print(f"Данные сохранены в {output_file}")
# 1.2 Получение сведений о датафрейме
print("\nИнформация о датафрейме:")
data.info()
# 1.3 Получение сведений о колонках
print("\nНазвания колонок:", data.columns.tolist())
# 1.4 Вывод отдельных строк и столбцов
print("\nВывод первых 5 строк столбца 'cut':")
print(data['cut'].head())
print("\nВывод строк с 10 по 15:")
print(data.iloc[10:15])
# 1.5 Группировка и агрегация данных
print("\nСредняя цена по качеству огранки (cut):")
print(data.groupby("cut")["price"].mean())
# 1.6 Сортировка данных
print("\nСортировка данных по цене:")
sorted_data = data.sort_values(by='price', ascending=False)
print(sorted_data.head())
# 1.7 Удаление строк/столбцов
print("\nУдаление столбца 'x' (если он не нужен):")
# Убедитесь, что столбец 'x' существует в данных
if 'x' in data.columns:
data_without_x = data.drop(columns=['x'], errors='ignore')
print(data_without_x.head())
else:
print("Столбец 'x' не найден в данных.")
# 1.8 Создание новых столбцов
print("\nДобавление нового столбца 'volume' (объем):")
# Убедитесь, что столбцы 'x', 'y' и 'z' существуют
if {'x', 'y', 'z'}.issubset(data.columns):
data['volume'] = data['x'] * data['y'] * data['z']
print(data.head())
else:
print("Не все столбцы для вычисления объема ('x', 'y', 'z') присутствуют в данных.")
# 1.9 Удаление строк с пустыми значениями
print("\nУдаление строк с пустыми значениями:")
cleaned_data = data.dropna()
print(cleaned_data.head())
# 1.10 Заполнение пустых значений медианой
print("\nЗаполнение пустых значений медианой:")
data_filled = data.fillna(data.median(numeric_only=True))
print(data_filled.head())
In [4]:
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка данных
file_path = 'data/Diamonds Prices2022.csv'
data = pd.read_csv(file_path)
# 2.1 Линейная диаграмма (Средняя цена по качеству огранки)
plt.figure(figsize=(10, 5))
data.groupby("cut")["price"].mean().plot(
kind="line", title="Средняя цена по качеству огранки"
)
plt.ylabel("Средняя цена")
plt.show()
# 2.2 Столбчатая диаграмма (Количество бриллиантов по качеству огранки)
plt.figure(figsize=(10, 5))
data["cut"].value_counts().plot(
kind="bar", title="Количество бриллиантов по качеству огранки"
)
plt.ylabel("Количество бриллиантов")
plt.show()
# 2.3 Гистограмма (Распределение цен)
plt.figure(figsize=(10, 5))
data["price"].plot(kind="hist", bins=20, title="Распределение цен на бриллианты")
plt.xlabel("Цена")
plt.show()
# 2.4 Ящик с усами (Распределение цен по качеству огранки)
plt.figure(figsize=(10, 5))
data.boxplot(column="price", by="cut", grid=False, rot=90)
plt.title("Распределение цен по качеству огранки")
plt.suptitle("")
plt.ylabel("Цена")
plt.show()
# 2.5 Диаграмма с областями (Средняя цена по качеству огранки)
plt.figure(figsize=(10, 5))
data.groupby("cut")["price"].mean().plot(
kind="area", title="Средняя цена по качеству огранки"
)
plt.ylabel("Средняя цена")
plt.show()
# 2.6 Диаграмма рассеяния (Цена vs. Объем)
plt.figure(figsize=(10, 5))
plt.scatter(data['price'], data['volume'], alpha=0.5)
plt.title('Диаграмма рассеяния: Цена vs Объем')
plt.xlabel('Цена')
plt.ylabel('Объем (x * y * z)')
plt.show()
# 2.7 Круговая диаграмма (Распределение огранок)
plt.figure(figsize=(10, 5))
data["cut"].value_counts().plot(
kind="pie", title="Распределение огранок", autopct="%1.1f%%"
)
plt.ylabel("")
plt.show()
In [ ]: