148 KiB
148 KiB
Начало лабораторной работы №1¶
Набор данных "Наблюдения НЛО в США".¶
In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Загрузка и сохранение данных¶
In [2]:
#Чтобы загрузить данные из CSV файла:
df = pd.read_csv('datasets/nuforc_reports.csv')
df.head()
Out[2]:
Получение сведений о датафрейме с данными¶
In [3]:
#Получить общую информацию о датафрейме можно с помощью:
df.info()
#Для получения статистического описания числовых колонок:
df.describe()
Out[3]:
Получение сведений о колонках датафрейма¶
In [4]:
#Вывести названия колонок:
print(df.columns)
#Получить уникальные значения в колонке:
unique_values = df['city'].unique()
Вывод отельных строки и столбцов из датафрейма¶
In [5]:
#Для вывода отдельных строк можно использовать iloc или loc:
# Вывод первой строки
first_row = df.iloc[0]
# Вывод строк с 0 по 4
first_five_rows = df.iloc[0:5]
# Вывод по метке индекса
row_by_label = df.loc[0]
# Вывод определенного столбца
specific_column = df['city']
Группировка и агрегация данных в датафрейме¶
In [6]:
#Для группировки данных можно использовать groupby:
grouped = df.groupby('city').agg({'state': 'sum'})
сортировка данных в датафрейме¶
In [7]:
#Для сортировки данных по определенной колонке:
sorted_df = df.sort_values(by='city', ascending=True)
удаление строк/столбцов¶
In [8]:
#Для удаления строк:
# Удаление строки по индексу
df = df.drop(24)
# Удаление нескольких строк
df = df.drop([1, 2, 3])
#Для удаления столбцов:
# Удаление столбца
df = df.drop("summary", axis=1)
# Удаление нескольких столбцов
df = df.drop(['shape', 'duration'], axis=1)
создание новых столбцов на основе данных из существующих столбцов датафрейма¶
In [9]:
#Создание нового столбца на основе существующих:
df['new_columnStateCity'] = df['state'] + df['city']
удаление строк с пустыми значениями¶
In [10]:
#Для удаления строк с хотя бы одним пустым значением:
df = df.dropna()
заполнение пустых значений на основе существующих данных¶
In [11]:
# Заполнение средним значением
df['city_latitude'] = df['city_latitude'].fillna(df['city_latitude'].mean())
# Заполнение фиксированным значением
df['state'] = df['state'].fillna(0)
Линейная диаграмма (plot)¶
In [12]:
df = pd.read_csv('datasets/nuforc_reports.csv')
# Пример: Линейная диаграмма количества отчетов по годам
df['year'] = pd.to_datetime(df['date_time']).dt.year
yearly_counts = df['year'].value_counts().sort_index()
plt.plot(yearly_counts.index, yearly_counts.values)
plt.title('Количество UFO отчетов по годам')
plt.xlabel('Год')
plt.ylabel('Количество отчетов')
plt.show()
In [13]:
# Пример: Столбчатая диаграмма количества отчетов по штатам
state_counts = df['state'].value_counts().head(15)
state_counts.plot(kind='bar')
plt.title('Топ-10 штатов по количеству UFO отчетов')
plt.xlabel('Штат')
plt.ylabel('Количество отчетов')
plt.xticks(rotation=45)
plt.show()
In [14]:
# Гистограмма распределения географической широты
plt.hist(df['city_latitude'].dropna(), bins=30, color='blue', alpha=0.7)
plt.title('Гистограмма широты города')
plt.xlabel('Широта')
plt.ylabel('Частота')
plt.show()
In [15]:
# Пример: Диаграмма рассеяния по координатам географической широты
plt.scatter(df['city_longitude'].dropna(), df['city_latitude'].dropna(), alpha=0.5)
plt.title('Диаграмма рассеяния UFO наблюдений по координатам')
plt.xlabel('Долгота')
plt.ylabel('Широта')
plt.show()