194 KiB
194 KiB
Импорты всех зависимостей
In [180]:
import pandas as pd
from src.path_utils import *
from src.notebook_utils import *
Создание датафрейма путем чтения данных из .csv файла
In [201]:
df = pd.read_csv(DATA_SCIENCE_SALARIES_CSV_PATH)
df_reserve = df.copy()
Работа с библиотекой pandas
In [202]:
print_header('Загрузка данных из датафрейма в .csv файл')
df.to_csv(TEST_DOWNLOAD_CSV_PATH, index=False)
print_header('Информация о файле')
df.info()
print_header('Вывод данных одной колонке')
print(df['salary_in_usd'])
print_header('Конкретная запись')
print(df.loc[10])
print_header('Конкретная колонка из конкретной записи')
print(df.loc[10, 'salary_in_usd'])
print_header('Срез всех данных')
print(df.loc[10:13])
print_header('Срез данных конкретной колонки')
print(df.loc[10:13, 'salary_in_usd'])
print_header('Срез данных по диапазону строк и колонок')
print(df.iloc[10:13, 0:5])
print_header('Получение уникальных данных по колонке')
print(df['employee_residence'].unique())
print_header('Группировка данных')
print(df.groupby(['job_title', 'experience_level']).size().reset_index(name='count'))
print_header('Сортировка данных')
print(df_reserve.sort_values('job_title'))
print_header('Удаление первых записей')
df_reserve.drop(df.head(500).index, inplace=True)
print('Разница: {diff}'.format(diff = df.shape[0] - df_reserve.shape[0]))
print_header('Отсечение последних записей')
df_reserve = df_reserve.tail(-100)
print('Разница: {diff}'.format(diff = df.shape[0] - df_reserve.shape[0]))
print_header('Создание новых столбцов')
df_reserve = df_reserve.assign(salary_in_rub = df['salary_in_usd'] * 100)
df_reserve.info()
print(df_reserve['salary_in_rub'])
print_header('Удаление строк с пустыми значениями в конкретной колонке')
df_reserve.dropna(subset = 'job_title', inplace = True)
print_header('Заполнение пустых значений')
source_column = 'salary'
replace_column = 'salary_in_usd'
empty_indexes = df_reserve[source_column][df_reserve[source_column].isnull()].index
for idx in empty_indexes:
source_value = df_reserve[replace_column][idx]
if pd.notna(source_value):
df_reserve.at[idx, source_column] = source_value
print(df_reserve[source_column])
Линейная диаграмма
In [200]:
df.groupby('experience_level')['salary_in_usd'].mean().plot.line(x = 'salary_in_usd', y = 'work_year')
Out[200]:
Столбчатая диаграмма
In [199]:
df.groupby('experience_level')['salary_in_usd'].mean().plot.bar(x = 'experience_level', y = 'salary_in_usd')
Out[199]:
Гистограмма
In [198]:
df['salary_in_usd'].value_counts().plot.hist()
Out[198]:
Ящик с усами
In [197]:
df['salary_in_usd'].plot.box()
Out[197]:
Диаграмма с областями
In [196]:
pd.DataFrame({
'salary': df.loc[1:100, 'salary'],
'salary_in_usd': df.loc[1:100, 'salary_in_usd'],
'experience_level': df.loc[1:100, 'experience_level'],
}).plot.area(x='experience_level')
Out[196]:
Диаграмма рассеяния
In [195]:
df.plot.scatter(x = 'experience_level', y = 'salary_currency')
Out[195]:
Круговая диаграмма
In [194]:
df['experience_level'].value_counts().plot.pie()
Out[194]: