Архив автора: admin

В чем разница между абстрактным классом и интерфейсом в Java

Java предоставляет несколько способов обеспечения абстракции данных, таких как интерфейсы Java и абстрактные классы Java. И интерфейс, и абстрактный класс обеспечивают безопасность, скрывая детали внутренней реализации и показывая/выделяя только необходимые детали. Однако между абстрактными классами и интерфейсами существует множество сходств и различий.

Этот пост поможет вам в перечисленных ниже аспектах интерфейсов Java и абстрактных классов:

  1. Что такое интерфейс Java.
  2. Что такое абстрактный класс Java.
  3. Сравнение на основе сходства.
  4. Абстрактный класс Java против интерфейса Java.

Итак, начнем!

 

Что такое Java-интерфейс

Это шаблон для класса, который содержит некоторые абстрактные методы и статические/финальные переменные. В java интерфейсы предоставляют только объявление метода, а дочерние/реализованные классы предоставляют определение метода.

 

Что такое абстрактный класс Java

Любой класс Java, который имеет хотя бы один абстрактный (только объявление метода) метод, известен как абстрактный класс в Java.

 

Сравнение на основе сходства

Некоторые важные аспекты интерфейсов и абстрактных классов Java перечислены ниже:

  • В java мы не можем создать объект/экземпляр обоих интерфейсов или абстрактных классов.
  • Оба предоставляют пользователю только необходимые данные.
  • Оба обеспечивают абстракцию.
  • Оба могут иметь абстрактные методы/функции.
  • Оба скрывают информацию/детали реализации от пользователей.

 

Абстрактный класс Java против интерфейса Java

Ключевые слова «abstract» и «interface» используются в java для создания/объявления абстрактных классов и интерфейсов соответственно.

В интерфейсах все члены по умолчанию считаются общедоступными, поэтому нет необходимости указывать модификатор доступа для членов интерфейсов. В то время как в абстрактных классах такого ограничения нет, и, следовательно, любой модификатор доступа может использоваться для членов абстрактных классов, таких как общедоступные, защищенные и т. д.

Основной синтаксис абстрактного класса и интерфейса показан в приведенных ниже фрагментах:

Абстрактный класс

public abstract class ClassName{

public abstract void methodName();

}



Интерфейс

public interface InterfaceName{

void methodName();

}

 

Интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь как абстрактные, так и неабстрактные методы.

Интерфейс может иметь только статические члены, тогда как абстрактные классы могут иметь статические и нестатические члены.

Интерфейсы имеют только «конечные» (неизменяемые) члены, в то время как абстрактные классы могут иметь конечные и неконечные члены.

Интерфейсы не имеют никакого конструктора, в то время как абстрактные классы имеют определяемые пользователем конструкторы или конструкторы по умолчанию.

Множественное наследование может быть достигнуто с помощью интерфейсов, в то время как абстрактные классы не поддерживают множественное наследование.

В Java абстрактный класс может наследовать другой класс и может реализовывать множество интерфейсов, с другой стороны, интерфейс Java может расширять только другой интерфейс.

 

Пример

Приведенный ниже пример позволит вам понять, как интерфейсы и абстрактные классы работают в java:

interface FirstInterface {

    void methodOne();

    void methodTwo();

    void methodThree();

}

abstract class AbstractClass implements FirstInterface {

    public void methodThree() {

        System.out.println("Abstract class Implementing methodThree");

    }

}

class NormalClass extends AbstractClass {

    public void methodOne() {

        System.out.println("Implementing methodOne");

    }

    public void methodTwo() {

        System.out.println("Implementing methodTwo");

    }

    public void methodThree() {

        System.out.println("Implementing methodThree");

    }

}

public class InterfaceExample {

    public static void main(String[] args) {

        FirstInterface obj = new ClassThree();

        obj.methodOne();

        obj.methodTwo();

        obj.methodThree();

    }    

}

 

В этом примере мы создали интерфейс «FirstInterface» , абстрактный класс «AbstractClass» и еще два обычных класса Java и выполнили следующие функции:

  • FirstInterface содержит три абстрактных метода.
  • AbstractClass реализует FirstInterface и переопределяет methodThree ().
  • NormalClass расширяет AbstractClass и переопределяет методы methodOne() и methodTwo() класса FirstInterface.

InterfaceExample — это основной класс, из которого мы создали основной метод и вызвали все методы FirstInterface :

В чем разница между абстрактным классом и интерфейсом в Java

 

Вывод подтвердил работу указанной выше Java-программы.

 

Вывод

В Java абстракция может быть достигнута с помощью абстрактных классов и интерфейсов, и оба они не могут быть созданы. Однако между абстрактными классами и интерфейсами существует множество различий. Например, интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь абстрактные и неабстрактные методы; используя интерфейсы, можно достичь множественного наследования, в то время как абстрактные классы не поддерживают множественное наследование и т. д. В этом посте объясняются различные аспекты абстрактных классов и интерфейсов с помощью подходящих примеров.



2022-04-24T07:00:21
Java

В чем разница между абстрактным классом и интерфейсом в Java

Java предоставляет несколько способов обеспечения абстракции данных, таких как интерфейсы Java и абстрактные классы Java. И интерфейс, и абстрактный класс обеспечивают безопасность, скрывая детали внутренней реализации и показывая/выделяя только необходимые детали. Однако между абстрактными классами и интерфейсами существует множество сходств и различий.

Этот пост поможет вам в перечисленных ниже аспектах интерфейсов Java и абстрактных классов:

  1. Что такое интерфейс Java.
  2. Что такое абстрактный класс Java.
  3. Сравнение на основе сходства.
  4. Абстрактный класс Java против интерфейса Java.

Итак, начнем!

 

Что такое Java-интерфейс

Это шаблон для класса, который содержит некоторые абстрактные методы и статические/финальные переменные. В java интерфейсы предоставляют только объявление метода, а дочерние/реализованные классы предоставляют определение метода.

 

Что такое абстрактный класс Java

Любой класс Java, который имеет хотя бы один абстрактный (только объявление метода) метод, известен как абстрактный класс в Java.

 

Сравнение на основе сходства

Некоторые важные аспекты интерфейсов и абстрактных классов Java перечислены ниже:

  • В java мы не можем создать объект/экземпляр обоих интерфейсов или абстрактных классов.
  • Оба предоставляют пользователю только необходимые данные.
  • Оба обеспечивают абстракцию.
  • Оба могут иметь абстрактные методы/функции.
  • Оба скрывают информацию/детали реализации от пользователей.

 

Абстрактный класс Java против интерфейса Java

Ключевые слова «abstract» и «interface» используются в java для создания/объявления абстрактных классов и интерфейсов соответственно.

В интерфейсах все члены по умолчанию считаются общедоступными, поэтому нет необходимости указывать модификатор доступа для членов интерфейсов. В то время как в абстрактных классах такого ограничения нет, и, следовательно, любой модификатор доступа может использоваться для членов абстрактных классов, таких как общедоступные, защищенные и т. д.

Основной синтаксис абстрактного класса и интерфейса показан в приведенных ниже фрагментах:

Абстрактный класс

public abstract class ClassName{

public abstract void methodName();

}



Интерфейс

public interface InterfaceName{

void methodName();

}

 

Интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь как абстрактные, так и неабстрактные методы.

Интерфейс может иметь только статические члены, тогда как абстрактные классы могут иметь статические и нестатические члены.

Интерфейсы имеют только «конечные» (неизменяемые) члены, в то время как абстрактные классы могут иметь конечные и неконечные члены.

Интерфейсы не имеют никакого конструктора, в то время как абстрактные классы имеют определяемые пользователем конструкторы или конструкторы по умолчанию.

Множественное наследование может быть достигнуто с помощью интерфейсов, в то время как абстрактные классы не поддерживают множественное наследование.

В Java абстрактный класс может наследовать другой класс и может реализовывать множество интерфейсов, с другой стороны, интерфейс Java может расширять только другой интерфейс.

 

Пример

Приведенный ниже пример позволит вам понять, как интерфейсы и абстрактные классы работают в java:

interface FirstInterface {

    void methodOne();

    void methodTwo();

    void methodThree();

}

abstract class AbstractClass implements FirstInterface {

    public void methodThree() {

        System.out.println("Abstract class Implementing methodThree");

    }

}

class NormalClass extends AbstractClass {

    public void methodOne() {

        System.out.println("Implementing methodOne");

    }

    public void methodTwo() {

        System.out.println("Implementing methodTwo");

    }

    public void methodThree() {

        System.out.println("Implementing methodThree");

    }

}

public class InterfaceExample {

    public static void main(String[] args) {

        FirstInterface obj = new ClassThree();

        obj.methodOne();

        obj.methodTwo();

        obj.methodThree();

    }    

}

 

В этом примере мы создали интерфейс «FirstInterface» , абстрактный класс «AbstractClass» и еще два обычных класса Java и выполнили следующие функции:

  • FirstInterface содержит три абстрактных метода.
  • AbstractClass реализует FirstInterface и переопределяет methodThree ().
  • NormalClass расширяет AbstractClass и переопределяет методы methodOne() и methodTwo() класса FirstInterface.

InterfaceExample — это основной класс, из которого мы создали основной метод и вызвали все методы FirstInterface :

В чем разница между абстрактным классом и интерфейсом в Java

 

Вывод подтвердил работу указанной выше Java-программы.

 

Вывод

В Java абстракция может быть достигнута с помощью абстрактных классов и интерфейсов, и оба они не могут быть созданы. Однако между абстрактными классами и интерфейсами существует множество различий. Например, интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь абстрактные и неабстрактные методы; используя интерфейсы, можно достичь множественного наследования, в то время как абстрактные классы не поддерживают множественное наследование и т. д. В этом посте объясняются различные аспекты абстрактных классов и интерфейсов с помощью подходящих примеров.



2022-04-24T07:00:21
Java

Python для Data Science: как использовать встроенные модули и провести импорт данных

Python для Data Science: импорт и работа с встроенными модулями

Python – один из наиболее популярных языков программирования для Data Science. Он обладает множеством удобных инструментов для работы с данными, включая встроенные модули.

В данной статье мы рассмотрим, как импортировать различные встроенные модули в Python, а также рассмотрим примеры работы с модулями для обработки строк, математических вычислений и работы с датами.

Знание этих модулей позволит нам улучшить качество обработки данных в Python и сделать наш код более эффективным и удобочитаемым.

Продолжим.

NumPy

NumPy – это библиотека для языка программирования Python, которая предоставляет поддержку многомерных массивов и матриц, а также функции для работы с ними.

Основное преимущество NumPy в том, что она позволяет работать с данными быстрее, чем стандартные списки языка Python, так как использует оптимизированный C-код.

NumPy широко используется в Data Science и Machine Learning, так как предоставляет мощные математические функции для работы с данными, такие как линейная алгебра, статистика, случайные числа.

  • NumPy имеет удобную и интуитивно понятную семантику, что упрощает ее использование.
  • Эффективный алгоритм NumPy позволяет обрабатывать большие объемы данных.

Для работы с NumPy необходимо установить ее с помощью менеджера пакетов pip.

Пример установки NumPy:

Операционная системаКоманда установки
Windowspip install numpy
MacOS/Linuxsudo pip install numpy

После установки можно импортировать NumPy в свою программу:

  1. import numpy as np
  2. from numpy import *

Установка NumPy

NumPy – это одна из самых известных библиотек для работы с многомерными массивами данных в Python. Если вы работаете с Data Science, то NumPy будет вашим верным помощником. Для установки NumPy необходимо выполнить несколько простых шагов:

  1. Откройте терминал и введите следующую команду:
    • pip install numpy
  2. Дождитесь, пока установка NumPy будет завершена. Все зависимые пакеты будут установлены автоматически.
  3. Проверьте, что NumPy установлен правильно, введите следующую команду в терминале:
    • import numpy
  4. Если при этом ничего не вывелось, то NumPy установлен правильно, и вы можете начинать работать с библиотекой в своих проектах.

Зачастую удобнее использовать управляющий пакет, например, Anaconda, который позволяет легко устанавливать все необходимые библиотеки и инструменты для работы с Data Science.

Сравнение установки NumPy в терминале и при помощи Anaconda:
УстановкаКоманда
В терминалеpip install numpy
В Anacondaconda install numpy

В любом случае, установка NumPy – это достаточно простая процедура, которую можно выполнить за несколько минут. Главное – иметь работающий интерпретатор Python и, желательно, свежий.

Создание и работа с массивами NumPy

NumPy (Numerical Python) – это библиотека Python для научных вычислений, которая предоставляет удобный способ работы с массивами и матрицами. Работа с массивами NumPy может помочь в решении задач, связанных с обработкой данных, статистикой и машинным обучением.

Создание массивов в NumPy очень просто. Например, чтобы создать одномерный массив, можно воспользоваться функцией numpy.array():

import numpy as np

a = np.array([1, 2, 3, 4, 5])

print(a)

Также можно создать двумерный массив, указав несколько списков:

b = np.array([[1, 2, 3], [4, 5, 6]])

print(b)

При работе с массивами NumPy можно выполнять различные операции, например, складывать или умножать массивы:

c = np.array([1, 2, 3])

d = np.array([4, 5, 6])

print(c + d)

print(c * d)

Для работы с многомерными массивами в NumPy представлены различные инструменты, например, функции numpy.reshape() и numpy.transpose(). С помощью функции reshape() можно изменять форму массива:

e = np.array([[1, 2], [3, 4], [5, 6]])

print(e)

f = np.reshape(e, (2, 3))

print(f)

Функция transpose() меняет местами строки и столбцы в матрице:

g = np.array([[1, 2], [3, 4], [5, 6]])

print(g)

h = np.transpose(g)

print(h)

Работа с массивами в NumPy является важной частью Data Science и может помочь в решении многих задач. Знание особенностей работы с массивами NumPy позволит с легкостью обрабатывать и анализировать данные!

Pandas

Pandas

Pandas – это библиотека для работы с данными на языке программирования Python. Библиотека предоставляет удобные и мощные инструменты для обработки, анализа и манипуляции с данными.

Основным объектом в библиотеке Pandas является DataFrame, который позволяет удобно работать с табличными данными. DataFrame можно создать из различных источников данных: excel-файлов, csv-файлов, баз данных и других.

Библиотека Pandas позволяет проводить множество операций со столбцами и строками в DataFrame, например, выбирать конкретные столбцы или строки, изменять значения ячеек по условию, удалять столбцы или строки и т.д.

Также в библиотеке Pandas есть мощный инструментарий для работы с пропущенными данными (NaN). Библиотека позволяет заменять пропущенные значения на среднее, медиану или другое значение, а также удалять строки, содержащие NaN.

Кроме того, Pandas предоставляет удобный и мощный инструментарий для визуализации данных, включая графики, гистограммы и диаграммы.

  • Преимущества использования Pandas:
  • Удобство работы с табличными данными
  • Мощный инструментарий для обработки и анализа данных
  • Широкие возможности для работы с пропущенными данными
  • Удобный инструментарий для визуализации данных

Установка Pandas

Pandas – это библиотека языка программирования Python, которая используется для работы с данными. Она предоставляет широкие возможности по анализу, манипуляции и визуализации данных.

Установка Pandas осуществляется с помощью менеджера пакетов pip. Для этого необходимо открыть терминал или командную строку и выполнить следующую команду:

pip install pandas

Если у вас возникнут проблемы с установкой, то можно скачать и установить Anaconda Distribution, которая включает в себя большинство необходимых модулей для анализа данных, включая Pandas.

КомандаОписание
pip install pandasУстановка библиотеки Pandas с помощью pip
conda install pandasУстановка библиотеки Pandas с помощью Anaconda

Также при установке Pandas рекомендуется установить аналогичным образом библиотеки NumPy и Matplotlib, которые также широко используются при анализе данных в Python.

После установки Pandas можно начать выполнять операции с данными, используя различные методы и функции, которые предоставляются этой библиотекой.

Чтение, запись и изменение данных в Pandas

Чтение, запись и изменение данных в Pandas

Одна из главных функций, предоставляемых библиотекой Pandas – это возможность работы с данными. В этой статье мы рассмотрим несколько методов для чтения, записи и изменения данных в Pandas.

Чтение данных в Pandas

Чтение данных в Pandas может происходить из разных источников – CSV, Excel и SQL базы данных (включая SQLite). Методы для чтения данных могут варьироваться в зависимости от источника данных.

Для чтения CSV файлов можно использовать функцию pd.read_csv(). Она может принимать на вход путь к файлу или ссылку на интернет-ресурс. Для чтения Excel-файлов можно использовать метод pd.read_excel(). Он также принимает на вход путь к файлу или ссылку на интернет-ресурс. Для чтения данных из SQL базы данных можно использовать функцию pd.read_sql().

Запись данных в Pandas

Запись данных в Pandas осуществляется с помощью методов, соответствующих методам чтения данных. Для записи данных в CSV файл можно использовать метод to_csv(). Для записи данных в Excel-файл используется метод to_excel(). Для записи данных в SQL базу данных можно использовать метод to_sql().

Изменение данных в Pandas

Наиболее частые операции изменения данных в Pandas – добавление, удаление и изменение столбцов. Для добавления нового столбца в DataFrame можно использовать индексацию объекта, как при работе со словарями. Для удаления столбца из DataFrame используется метод drop(). Изменить значения в DataFrame можно с помощью индексации – указываются имя столбца и индекс строки. Также можно использовать метод replace() для замены значений в DataFrame.

В заключении можно сказать, что библиотека Pandas предоставляет широкие возможности для работы с данными. Знание методов чтения, записи и изменения данных поможет усовершенствовать навыки работы с этим инструментом.

Обработка данных в Pandas

Pandas – это библиотека языка Python, предназначенная для обработки и анализа структурированных данных. Именно благодаря Pandas удается эффективно работать с большими объемами информации и находить нужные данные в огромных массивах.

Основные структуры данных в Pandas:

  • Series – одномерный массив с метками, используется для представления колонок или строк таблицы;
  • DataFrame – таблица, состоящая из нескольких Series;
  • Panel – трехмерный массив, состоящий из нескольких DataFrame.

Основные функции и методы для работы с Pandas:

  • read_csv() – чтение данных из csv-файла;
  • to_csv() – запись данных в csv-файл;
  • pd.merge() – объединение таблиц;
  • groupby() – группировка данных;
  • fillna() – заполнение пропущенных значений;
  • drop_duplicates() – удаление дубликатов;
  • pivot_table() – создание сводных таблиц.

Пример использования Pandas:

ИмяВозрастЗарплата
Алина2540000
Денис3060000
Елена2855000

Создаем DataFrame:

import pandas as pd

data = {‘Имя’: [‘Алина’, ‘Денис’, ‘Елена’], ‘Возраст’: [25, 30, 28], ‘Зарплата’: [40000, 60000, 55000]}

df = pd.DataFrame(data)

print(df)

Результат:

Имя Возраст Зарплата

0 Алина 25 40000

1 Денис 30 60000

2 Елена 28 55000

Matplotlib

Matplotlib – библиотека для визуализации данных в языке программирования Python. Она предоставляет широкие возможности для создания графиков и диаграмм различного типа и сложности. Библиотека является одним из стандартных инструментов для работы в области Data Science.

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

С помощью Matplotlib можно создавать разнообразные графические представления данных, от простых линейных и столбчатых графиков до сложных круговых диаграмм и трехмерных графиков. Также библиотека предоставляет возможность создавать интерактивные графики, которые можно взаимодействовать с помощью мыши, например, при выборе точки на графике и выводе ее данных.

В Matplotlib существует множество настроек для красивого и информативного отображения данных. В том числе это настройки цветов и шрифтов, добавления сетки и подписей к осям, изменение размеров и формы графиков. Для более продвинутых пользователей доступен API библиотеки, позволяющий создавать высокоуровневые и сложные графические элементы.

Matplotlib является открытым инструментом и имеет активное сообщество разработчиков, которые создают новые функции и поддерживают библиотеку в актуальном состоянии. Благодаря этому Matplotlib является универсальным инструментом для работы с данными любого типа и сложности.

Установка Matplotlib

Matplotlib – это библиотека для визуализации данных в Python. Установите Matplotlib следующим образом:

  1. Откройте терминал и запустите команду “pip install matplotlib”.
  2. Если вы используете Anaconda, можно установить Matplotlib с помощью команды “conda install matplotlib”.

После установки можно импортировать Matplotlib в свой проект следующим образом:

import matplotlib.pyplot as plt

Можно использовать различные модули Matplotlib в своих скриптах для создания красивых графиков и диаграмм. Например:

  • Модуль pyplot для создания базовых графиков.
  • Модуль pylab для быстрой визуализации данных.
  • Модуль mplot3d для создания 3D-графиков.

Matplotlib – это мощный инструмент для визуализации данных в Python. Установите его и начните визуализировать данные прямо сейчас!

Создание графиков в Matplotlib

Matplotlib – библиотека языка Python для создания графиков и визуализации данных. С ее помощью можно создавать как простейшие графики, так и сложные визуальные представления.

Для начала работы с Matplotlib нужно импортировать ее модуль pyplot:

import matplotlib.pyplot as plt

Теперь можно приступить к созданию графика. Самый простой способ – это функция plot, которая рисует линии в координатах. Например, следующий код создает простой график:

x = [0, 1, 2, 3, 4]

y = [0, 2, 4, 6, 8]

plt.plot(x, y)

plt.show()

Также можно добавлять на график различные элементы, например, заголовок, подписи осей, легенду. Например:

plt.plot(x, y, label='Линия 1')

plt.xlabel('Ось x')

plt.ylabel('Ось y')

plt.title('Простой график')

plt.legend()

plt.show()

Matplotlib также предоставляет целый ряд других функций для создания графиков, включая scatter, bar, histogram, pie и многие другие. Их использование аналогично функции plot.

В заключение хочется отметить, что Matplotlib является мощным инструментом для создания графиков и визуализации данных в Python. Она имеет широкие возможности для настройки оформления графиков и позволяет создавать как простые, так и сложные визуальные представления.

Scikit-learn

Scikit-learn – это библиотека для машинного обучения на языке Python, которая предоставляет широкий спектр инструментов для анализа данных и построения моделей.

Библиотека предназначена для решения задач классификации, регрессии, кластеризации, обработки текстовых данных, а также других задач, связанных с машинным обучением.

Scikit-learn включает в себя реализацию многих алгоритмов машинного обучения, таких как линейная и логистическая регрессия, деревья решений, случайные леса, нейронные сети, метод опорных векторов, байесовские классификаторы, кластеризация K-средних и многое другое.

Библиотека имеет удобный и интуитивно понятный интерфейс, позволяющий быстро и просто настраивать параметры моделей и оценивать их качество. De facto – это стандартное решение для машинного обучения в Python.

  • Scikit-learn нередко используют в научных и производственных целях, например, для решения сложных задач проектирования лекарственных препаратов
  • Библиотека имеет отличную документацию и множество обучающих материалов, включая книги и видеокурсы
  • Для удобства работы с данной библиотекой, есть возможность создавать «pipeline», являющейся последовательностью различных этапов извлечения признаков, отбора признаков и последующей обработки для конечной цели

Установка Scikit-learn

Scikit-learn – это библиотека на языке Python, предназначенная для машинного обучения и анализа данных. Для ее использования необходимо сначала ее установить.

Самый простой способ установки библиотеки Scikit-learn – использовать пакетный менеджер pip. Откройте командную строку и введите следующую команду:

pip install -U scikit-learn

Эта команда загрузит и установит последнюю версию Scikit-learn.

Если вы используете Anaconda, вы можете установить Scikit-learn с помощью Anaconda Navigator или Anaconda Prompt. Выберите соответствующий способ в зависимости от того, что вы удобнее.

Если у вас возникнут проблемы с установкой Scikit-learn, обратитесь к документации библиотеки или к сообществу Python-разработчиков, чтобы получить помощь.

Машинное обучение в Scikit-learn

Scikit-learn – это библиотека машинного обучения для языка Python, которая содержит множество алгоритмов и инструментов для решения задач обучения с учителем и без учителя.

В Scikit-learn реализованы такие методы машинного обучения, как линейная и логистическая регрессия, деревья решений, метод опорных векторов, случайные леса, градиентный бустинг и многие другие.

Библиотека имеет простой и интуитивно понятный интерфейс, который позволяет легко построить модель и выполнить предсказание на новых данных.

Scikit-learn также предоставляет множество инструментов для обработки данных перед обучением модели, таких как кодирование категориальных признаков, масштабирование данных, а также возможности для выбора наиболее значимых признаков.

Библиотека является открытым исходным кодом и может быть использована для коммерческих и научных целей.

В итоге, Scikit-learn является одной из самых популярных библиотек для машинного обучения в Python и позволяет быстро и эффективно решать множество задач в области Data Science.

Вопрос-ответ:

Какие модули Python обязательно нужно установить для работы с данными?

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

Как правильно импортировать модуль в Python?

Для импорта модуля в Python используется ключевое слово import, за которым следует название модуля. Например, чтобы импортировать модуль NumPy, необходимо написать import numpy. После этого можно использовать функции и классы, которые предоставляет модуль. Важно понимать, что если модуль находится в другом каталоге, то его нужно указать полным путем либо добавить путь к нему в переменную окружения PYTHONPATH.

Как использовать функцию numpy.array() для создания массива?

Для создания массива при помощи функции numpy.array() нужно передать ей список значений, из которых будет создан массив. Например, чтобы создать массив из трех чисел 1, 2 и 3, можно написать: a = numpy.array([1, 2, 3]). Также можно создавать многомерные массивы, передавая функции numpy.array() список списков. Например, a = numpy.array([[1, 2], [3, 4]]). Это создаст двумерный массив размером 2×2.

Какие функции pandas нужно использовать для чтения данных из CSV-файла?

Для чтения данных из CSV-файла в pandas используется функция pandas.read_csv(). При вызове этой функции можно передать множество параметров, например, sep – разделитель данных, header – номер строки с заголовками столбцов, index_col – номер столбца, который будет использоваться в качестве индекса. Например, чтобы прочитать данные из файла data.csv с запятой в качестве разделителя и используя первый столбец в качестве индекса, нужно написать: data = pandas.read_csv(‘data.csv’, sep=’,’, index_col=0).

Как создать график в Matplotlib?

Для создания графика в Matplotlib необходимо вызвать функции из модуля pyplot, который обычно импортируется с помощью команды import matplotlib.pyplot as plt. Например, чтобы построить график функции y = x^2, можно написать следующий код: x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.show(). Это создаст график с осью x, осью y и кривой, соединяющей точки (1, 1), (2,4), (3, 9), (4, 16) и (5, 25).

Как построить гистограмму в Matplotlib?

Для построения гистограммы в Matplotlib можно использовать функцию plt.hist(). Перед этим необходимо создать массив данных, который будет использоваться для построения гистограммы. Например, чтобы построить гистограмму распределения случайных чисел, можно использовать следующий код: data = numpy.random.randn(1000) plt.hist(data, bins=30). Это создаст гистограмму с 30 столбцами, отображающими количество элементов в каждом интервале значения.

Видео:

Python: Пакеты и Модули

Python: Пакеты и Модули by IT4each com 1 year ago 17 minutes 2,747 views

Сервис аналитики Wildberries на Python – Техническое задание – Часть 1 – Модуль съёма позиций

Сервис аналитики Wildberries на Python – Техническое задание – Часть 1 – Модуль съёма позиций by Дмитрий К – Video Experience 1 year ago 12 minutes, 6 seconds 1,755 views

Сообщение Python для Data Science: как использовать встроенные модули и провести импорт данных появились сначала на Программирование на Python.

Выходит libmdbx 0.11.7 с переносом проекта на GitFlic, исправлениями ошибок и многим другим.

В выпуск новой библиотеки libmdbx версии 0.11.7, запуск выделяется переносом проекта на сервис GitFlic после того, как администрация GitHub удалила libmdbx вместе с рядом других проектов 15 апреля 2022 года без каких-либо предупреждений и объяснений, а также заблокировала доступ многим разработчикам, связанным с компаниями, попавшими под санкции США.

С точки зрения пользователя все страницы, репозиторий и форки проекта внезапно превратились в страницу «404», без возможности общения и без выяснения причин.



Читать

10 примеров команд lsof в Linux

10 примеров команд lsof в Linux. В этой статье мы рассмотрим команду lsof с практическими примерами. lsof расшифровывается как «LiSt Open Files» и используется для того чтобы понять, какие файлы открываются какими процессами. Как мы все знаем, Linux/Unix рассматривает все как файлы (в том числе каналы, сокеты, каталоги, устройства и т.д.). Одна из причин использования команды lsof – это ситуация когда диск не может быть размонтирован, так как возникает ошибка: “Файлы используются“. С помощью этой команды мы можем легко определить используемые файлы.




1. Вывод всех открытых файлов с помощью команды lsof




В приведенном ниже примере lsof в Linux будет показан список открытых файлов. В данном выводе отображаются такие столбцы, как CommandPIDUSERFDTYPE и т.д.




lsof







Разделы и их значения говорят сами за себя. Однако мы рассмотрим столбцы FD&TYPE более подробно:




FD – обозначает дескриптор файла и принимает следующие значения как:




  • cwd – текущий рабочий каталог
  • rtd – корневой каталог
  • txt – текст программы (код и данные)
  • mem  файл памяти




Кроме того, в столбцах FD такие номера, как 1u, являются фактическим дескриптором файла, а за ним следует один из флагов urw как режим доступа:




  • r – доступа для чтения.
  • w – доступа для записи.
  • u – чтения и записи.




TYPE – файлов и их идентификация:




  • DIR – директория
  • REG – обычный файл
  • CHR – специальный символьный файл.
  • FIFO – First In First Out




2. Список открытых пользовательских файлов




Приведенная ниже команда отобразит список всех открытых файлов пользователя sedicomm:




lsof -u sedicomm




3. Поиск процессов, работающих на конкретном порту




Чтобы узнать все запущенные процессы на определенном порту, просто используйте следующую команду с флагом -i. В приведенном ниже примере будут выведены все запущенные процессы порта 22:




# lsof -i TCP:22



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)

sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)




4. Вывод открытых файлов IPv4 и IPv6




В приведенном ниже примере lsof в Linux показаны только сетевые файлы IPv4 и IPv6, выведенные с помощью отдельных команд:




1# lsof -i 42​3COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME4rpcbind 1203 rpc # lsof -i 4



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600




# lsof -i 6



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc

rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)

cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)




5. Вывод открытых файлов диапазона портов TCP 1-1024




Для вывода всех запущенных процессов открытых файлов TCP-порт меняется в диапазоне 1-1024.




# lsof -i TCP:1-1024



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)

sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)

master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)

sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

sshd 1838 sedicomm 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)

httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)

httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)




6. Исключение пользователей с использованием символа «^»




В этом примере lsof в Linux мы исключили пользователя root. Вы же можете исключить конкретного пользователя, используя «^» с командой приведённой ниже:




# lsof -i -u^root



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)

rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc

rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600

rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep

rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146

rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)

rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)




7. Узнайте, какие файлы и команды использует пользователь?




Приведенный ниже пример показывает, что пользователь sedicomm использует такие команды, как ping и /etc.




# lsof -i -u sedicomm



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 1839 sedicomm cwd DIR 253,0 12288 15 /etc

ping 2525 sedicomm cwd DIR 253,0 12288 15 /etc




8. Вывод списка всех сетевых подключений




Следующая команда с опцией «-i» выводит список всех сетевых подключений «LISTENING & ESTABLISHED»:




# lsof -i



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)

cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)

cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)

sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)

master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)

master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)

sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)

httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)

clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)

chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)

chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)




9. Поиск по PID




В приведенном ниже примере показано только те выводы, чей PID равен 1:




# lsof -p 1



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

init 1 root cwd DIR 253,0 4096 2 /

init 1 root rtd DIR 253,0 4096 2 /

init 1 root txt REG 253,0 145180 147164 /sbin/init

init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so

init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so




10. Завершение всей активности конкретного пользователя




Иногда вам может потребоваться завершить все процессы для конкретного пользователя. Команда ниже завершает все процессы пользователя sedicomm:




# kill -9 `lsof -t -u sedicomm`




Примечание: здесь невозможно привести пример всех доступных опций, это руководство знакомит вас, как можно использовать команду lsof. Вы можете обратиться к странице справки команды lsof, чтобы узнать больше: man lsof.




Источник: https://blog.sedicomm.com/2020/03/19/10-primerov-komand-lsof-v-linux/



2022-04-23T02:29:41
Утилиты командной строки

Установка и настройка Harbor

В данной статье рассмотрим, как установить и настроить хранилища репозиториев Harbor.




Установка хранилища репозиториев Harbor




Harbor устанавливается как Docker-образ с помощью online installer.




Чтобы установить хранилища репозиториев Harbor:




  1. Скачайте скрипт online installer и разархивируйте его:




root@ubuntu-standard-2-4-40gb:~# wget https://github.com/goharbor/harbor/releases/download/v1.9.3/harbor-online-installer-v1.9.3.tgz 

root@ubuntu-standard-2-4-40gb:~# tar -zxvf harbor-online-installer-v1.9.3.tgz




  1. В получившейся папке harbor настройте файл harbor.yml:




hostname: <SERVER_DNS_NAME>

http:

  # port for http, default is 80. If https enabled, this port will redirect to https port

  port: 8080

# https related config

 https:

#   # https port for harbor, default is 443

   port: 8443

#   # The path of cert and key files for nginx

   certificate: /opt/gitlab/config/ssl/<SERVER_DNS_NAME>.crt

   private_key: /opt/gitlab/config/ssl/<SERVER_DNS_NAME>.key

# The default data volume

data_volume: /opt/harbor




Причем:




  • Имя хоста совпадает с именем Gitlab, так как развертывание выполняется на сервере, на котором находится Gitlab.
  • Используем нестандартные HTTP- и HTTPS-порты, так как стандартные используются веб-интерфейсом Gitlab. 
  • Использует сертификат и ключ LetsEncrypt, которые были созданы при настройке Gitlab.




  1. Выполните скрипт install.sh:




root@ubuntu-standard-2-4-40gb:~/harbor# ./install.sh



[Step 0]: checking installation environment ...

Note: docker version: 19.03.5

Note: docker-compose version: 1.25.0



[Step 1]: preparing environment ...

[Step 2]: starting Harbor ...

Creating harbor-log ... done

Creating registryctl ... done

Creating redis ... done

Creating harbor-db ... done

Creating harbor-portal ... done

Creating registry ... done

Creating harbor-core ... done

Creating nginx ... done

Creating harbor-jobservice ... done



✔ ----Harbor has been installed and started successfully.----




Harbor запущен.




Настройка хранилища репозиториев Harbor




  1. Авторизуйтесь в Harbor. 




Так как у нас используются нестандартные порты, URL будет иметь следующий вид:




https://<SERVER_DNS_NAME>:8443




Логин по умолчанию admin. Первичный пароль задается в файле harbor.yml (по умолчанию — Harbor12345).










  1. Смените пароль пользователя admin. Для этого в правом верхнем углу нажмите на admin и выберите Change Password:










  1. Укажите текущий и новый пароли:










Создайте пользователя, от имени которого Gitlab будет работать с Harbor. Для этого слева выберите Users:**







**




Укажите данные нового пользователя:**







**




Внимание




Запомните введенный для пользователя пароль, он потребуется для интеграции с Gitlab.




  1. Создайте новый проект, в который будут складываться собранные образы из Gitlab. Для этого слева выберите Projects:




**







**    




  1. Введите данные нового проекта:




**







**




7. Добавьте пользователя в проект:**







**




8. Укажите для пользователя имя и роль:**